]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/net/usb/smsc95xx.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux...
[linux-2.6-omap-h63xx.git] / drivers / net / usb / smsc95xx.c
index 5574abe29c73b64c63d0e123e132f3afb762e7f3..dc1665326592703ce0f7bf6ff3d2e91caa560632 100644 (file)
@@ -55,11 +55,10 @@ struct smsc95xx_priv {
 
 struct usb_context {
        struct usb_ctrlrequest req;
-       struct completion notify;
        struct usbnet *dev;
 };
 
-int turbo_mode = true;
+static int turbo_mode = true;
 module_param(turbo_mode, bool, 0644);
 MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction");
 
@@ -307,7 +306,7 @@ static int smsc95xx_write_eeprom(struct usbnet *dev, u32 offset, u32 length,
        return 0;
 }
 
-static void smsc95xx_async_cmd_callback(struct urb *urb, struct pt_regs *regs)
+static void smsc95xx_async_cmd_callback(struct urb *urb)
 {
        struct usb_context *usb_context = urb->context;
        struct usbnet *dev = usb_context->dev;
@@ -316,8 +315,6 @@ static void smsc95xx_async_cmd_callback(struct urb *urb, struct pt_regs *regs)
        if (status < 0)
                devwarn(dev, "async callback failed with %d", status);
 
-       complete(&usb_context->notify);
-
        kfree(usb_context);
        usb_free_urb(urb);
 }
@@ -348,11 +345,10 @@ static int smsc95xx_write_reg_async(struct usbnet *dev, u16 index, u32 *data)
        usb_context->req.wValue = 00;
        usb_context->req.wIndex = cpu_to_le16(index);
        usb_context->req.wLength = cpu_to_le16(size);
-       init_completion(&usb_context->notify);
 
        usb_fill_control_urb(urb, dev->udev, usb_sndctrlpipe(dev->udev, 0),
                (void *)&usb_context->req, data, size,
-               (usb_complete_t)smsc95xx_async_cmd_callback,
+               smsc95xx_async_cmd_callback,
                (void *)usb_context);
 
        status = usb_submit_urb(urb, GFP_ATOMIC);
@@ -1012,6 +1008,18 @@ static int smsc95xx_reset(struct usbnet *dev)
        return 0;
 }
 
+static const struct net_device_ops smsc95xx_netdev_ops = {
+       .ndo_open               = usbnet_open,
+       .ndo_stop               = usbnet_stop,
+       .ndo_start_xmit         = usbnet_start_xmit,
+       .ndo_tx_timeout         = usbnet_tx_timeout,
+       .ndo_change_mtu         = usbnet_change_mtu,
+       .ndo_set_mac_address    = eth_mac_addr,
+       .ndo_validate_addr      = eth_validate_addr,
+       .ndo_do_ioctl           = smsc95xx_ioctl,
+       .ndo_set_multicast_list = smsc95xx_set_multicast,
+};
+
 static int smsc95xx_bind(struct usbnet *dev, struct usb_interface *intf)
 {
        struct smsc95xx_priv *pdata = NULL;
@@ -1042,9 +1050,8 @@ static int smsc95xx_bind(struct usbnet *dev, struct usb_interface *intf)
        /* Init all registers */
        ret = smsc95xx_reset(dev);
 
-       dev->net->do_ioctl = smsc95xx_ioctl;
+       dev->net->netdev_ops = &smsc95xx_netdev_ops;
        dev->net->ethtool_ops = &smsc95xx_ethtool_ops;
-       dev->net->set_multicast_list = smsc95xx_set_multicast;
        dev->net->flags |= IFF_MULTICAST;
        dev->net->hard_header_len += SMSC95XX_TX_OVERHEAD;
        return 0;