ETG-US2

動いた。drivers/usb/net/asix.cのasix_write_cmd関数に下みたいな感じでmsleepを挟んだら動いた。printkを入れながら動作を追っていたところ、この関数にprintkを挟んだら動作が変わった(さっきまでエラーで死んでいたところが、通ったりした)ので、じゃあsleepだろうということで、入れてみたら成功。うーん、難しいな。

static int asix_write_cmd(struct usbnet *dev, u8 cmd, u16 value, u16 index,
                             u16 size, void *data)
{
        // odawara memo
        printk("DEBUG: asix_write_cmd\n");
        msleep(100);

        return usb_control_msg(
                dev->udev,
                usb_sndctrlpipe(dev->udev, 0),
                cmd,
                USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
                value,
                index,
                data,
                size,
                USB_CTRL_SET_TIMEOUT);
}

ちなみに、2.6.19のasix.cではどうなってるのだろう?(最初からそっちを確認しろって感じか)