diff options
Diffstat (limited to 'drivers/net/usb/hso.c')
-rw-r--r-- | drivers/net/usb/hso.c | 30 |
1 files changed, 12 insertions, 18 deletions
diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c index a074c16e2a62..cde423c6d040 100644 --- a/drivers/net/usb/hso.c +++ b/drivers/net/usb/hso.c @@ -2363,12 +2363,6 @@ exit: return -1; } -/* Frees a general hso device */ -static void hso_free_device(struct hso_device *hso_dev) -{ - kfree(hso_dev); -} - /* Creates a general hso device */ static struct hso_device *hso_create_device(struct usb_interface *intf, int port_spec) @@ -2431,9 +2425,16 @@ static void hso_free_net_device(struct hso_device *hso_dev) free_netdev(hso_net->net); } - hso_free_device(hso_dev); + kfree(hso_dev); } +static const struct net_device_ops hso_netdev_ops = { + .ndo_open = hso_net_open, + .ndo_stop = hso_net_close, + .ndo_start_xmit = hso_net_start_xmit, + .ndo_tx_timeout = hso_net_tx_timeout, +}; + /* initialize the network interface */ static void hso_net_init(struct net_device *net) { @@ -2442,10 +2443,7 @@ static void hso_net_init(struct net_device *net) D1("sizeof hso_net is %d", (int)sizeof(*hso_net)); /* fill in the other fields */ - net->open = hso_net_open; - net->stop = hso_net_close; - net->hard_start_xmit = hso_net_start_xmit; - net->tx_timeout = hso_net_tx_timeout; + net->netdev_ops = &hso_netdev_ops; net->watchdog_timeo = HSO_NET_TX_TIMEOUT; net->flags = IFF_POINTOPOINT | IFF_NOARP | IFF_MULTICAST; net->type = ARPHRD_NONE; @@ -2645,7 +2643,7 @@ static void hso_free_serial_device(struct hso_device *hso_dev) } hso_free_tiomget(serial); kfree(serial); - hso_free_device(hso_dev); + kfree(hso_dev); } /* Creates a bulk AT channel */ @@ -2726,7 +2724,7 @@ exit2: exit: hso_free_tiomget(serial); kfree(serial); - hso_free_device(hso_dev); + kfree(hso_dev); return NULL; } @@ -2785,7 +2783,7 @@ exit: kfree(serial); } if (hso_dev) - hso_free_device(hso_dev); + kfree(hso_dev); return NULL; } @@ -2978,8 +2976,6 @@ static int hso_probe(struct usb_interface *interface, goto exit; } - usb_driver_claim_interface(&hso_driver, interface, hso_dev); - /* save our data pointer in this device */ usb_set_intfdata(interface, hso_dev); @@ -2997,8 +2993,6 @@ static void hso_disconnect(struct usb_interface *interface) /* remove reference of our private data */ usb_set_intfdata(interface, NULL); - - usb_driver_release_interface(&hso_driver, interface); } static void async_get_intf(struct work_struct *data) |