fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / drivers / usb / net / rtl8150.c
index a72685b..670262a 100644 (file)
 #define        RX_URB_FAIL             3
 
 /* Define these values to match your device */
-#define VENDOR_ID_REALTEK              0x0bda
+#define        VENDOR_ID_REALTEK               0x0bda
 #define        VENDOR_ID_MELCO                 0x0411
-#define VENDOR_ID_MICRONET             0x3980
+#define        VENDOR_ID_MICRONET              0x3980
 #define        VENDOR_ID_LONGSHINE             0x07b8
+#define        VENDOR_ID_OQO                   0x1557
 #define        VENDOR_ID_ZYXEL                 0x0586
 
 #define PRODUCT_ID_RTL8150             0x8150
@@ -144,6 +145,7 @@ static struct usb_device_id rtl8150_table[] = {
        {USB_DEVICE(VENDOR_ID_MELCO, PRODUCT_ID_LUAKTX)},
        {USB_DEVICE(VENDOR_ID_MICRONET, PRODUCT_ID_SP128AR)},
        {USB_DEVICE(VENDOR_ID_LONGSHINE, PRODUCT_ID_LCS8138TX)},
+       {USB_DEVICE(VENDOR_ID_OQO, PRODUCT_ID_RTL8150)},
        {USB_DEVICE(VENDOR_ID_ZYXEL, PRODUCT_ID_PRESTIGE)},
        {}
 };
@@ -208,7 +210,7 @@ static int set_registers(rtl8150_t * dev, u16 indx, u16 size, void *data)
                               indx, 0, data, size, 500);
 }
 
-static void ctrl_callback(struct urb *urb, struct pt_regs *regs)
+static void ctrl_callback(struct urb *urb)
 {
        rtl8150_t *dev;
 
@@ -282,7 +284,8 @@ static int write_mii_word(rtl8150_t * dev, u8 phy, __u8 indx, u16 reg)
        u8 data[3], tmp;
 
        data[0] = phy;
-       *(data + 1) = cpu_to_le16p(&reg);
+       data[1] = reg & 0xff;
+       data[2] = (reg >> 8) & 0xff;
        tmp = indx | PHY_WRITE | PHY_GO;
        i = 0;
 
@@ -415,7 +418,7 @@ static inline struct sk_buff *pull_skb(rtl8150_t *dev)
        return NULL;
 }
 
-static void read_bulk_callback(struct urb *urb, struct pt_regs *regs)
+static void read_bulk_callback(struct urb *urb)
 {
        rtl8150_t *dev;
        unsigned pkt_len, res;
@@ -438,7 +441,7 @@ static void read_bulk_callback(struct urb *urb, struct pt_regs *regs)
                break;
        case -ENOENT:
                return; /* the urb is in unlink state */
-       case -ETIMEDOUT:
+       case -ETIME:
                warn("may be reset is needed?..");
                goto goon;
        default:
@@ -525,7 +528,7 @@ tlsched:
        tasklet_schedule(&dev->tl);
 }
 
-static void write_bulk_callback(struct urb *urb, struct pt_regs *regs)
+static void write_bulk_callback(struct urb *urb)
 {
        rtl8150_t *dev;
 
@@ -541,7 +544,7 @@ static void write_bulk_callback(struct urb *urb, struct pt_regs *regs)
        netif_wake_queue(dev->netdev);
 }
 
-static void intr_callback(struct urb *urb, struct pt_regs *regs)
+static void intr_callback(struct urb *urb)
 {
        rtl8150_t *dev;
        __u8 *d;
@@ -587,7 +590,7 @@ static void intr_callback(struct urb *urb, struct pt_regs *regs)
        }
 
 resubmit:
-       status = usb_submit_urb (urb, SLAB_ATOMIC);
+       status = usb_submit_urb (urb, GFP_ATOMIC);
        if (status == -ENODEV)
                netif_device_detach(dev->netdev);
        else if (status)
@@ -617,11 +620,11 @@ static int rtl8150_resume(struct usb_interface *intf)
        if (netif_running(dev->netdev)) {
                dev->rx_urb->status = 0;
                dev->rx_urb->actual_length = 0;
-               read_bulk_callback(dev->rx_urb, NULL);
+               read_bulk_callback(dev->rx_urb);
 
                dev->intr_urb->status = 0;
                dev->intr_urb->actual_length = 0;
-               intr_callback(dev->intr_urb, NULL);
+               intr_callback(dev->intr_urb);
        }
        return 0;
 }