aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/usb/pegasus.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/usb/pegasus.c')
-rw-r--r--drivers/net/usb/pegasus.c33
1 files changed, 20 insertions, 13 deletions
diff --git a/drivers/net/usb/pegasus.c b/drivers/net/usb/pegasus.c
index 166880c113d6..a8228d87c8cf 100644
--- a/drivers/net/usb/pegasus.c
+++ b/drivers/net/usb/pegasus.c
@@ -93,6 +93,7 @@ module_param (msg_level, int, 0);
93MODULE_PARM_DESC (msg_level, "Override default message level"); 93MODULE_PARM_DESC (msg_level, "Override default message level");
94 94
95MODULE_DEVICE_TABLE(usb, pegasus_ids); 95MODULE_DEVICE_TABLE(usb, pegasus_ids);
96static const struct net_device_ops pegasus_netdev_ops;
96 97
97static int update_eth_regs_async(pegasus_t *); 98static int update_eth_regs_async(pegasus_t *);
98/* Aargh!!! I _really_ hate such tweaks */ 99/* Aargh!!! I _really_ hate such tweaks */
@@ -150,8 +151,8 @@ static int get_registers(pegasus_t * pegasus, __u16 indx, __u16 size,
150 pegasus->dr.bRequestType = PEGASUS_REQT_READ; 151 pegasus->dr.bRequestType = PEGASUS_REQT_READ;
151 pegasus->dr.bRequest = PEGASUS_REQ_GET_REGS; 152 pegasus->dr.bRequest = PEGASUS_REQ_GET_REGS;
152 pegasus->dr.wValue = cpu_to_le16(0); 153 pegasus->dr.wValue = cpu_to_le16(0);
153 pegasus->dr.wIndex = cpu_to_le16p(&indx); 154 pegasus->dr.wIndex = cpu_to_le16(indx);
154 pegasus->dr.wLength = cpu_to_le16p(&size); 155 pegasus->dr.wLength = cpu_to_le16(size);
155 pegasus->ctrl_urb->transfer_buffer_length = size; 156 pegasus->ctrl_urb->transfer_buffer_length = size;
156 157
157 usb_fill_control_urb(pegasus->ctrl_urb, pegasus->usb, 158 usb_fill_control_urb(pegasus->ctrl_urb, pegasus->usb,
@@ -208,8 +209,8 @@ static int set_registers(pegasus_t * pegasus, __u16 indx, __u16 size,
208 pegasus->dr.bRequestType = PEGASUS_REQT_WRITE; 209 pegasus->dr.bRequestType = PEGASUS_REQT_WRITE;
209 pegasus->dr.bRequest = PEGASUS_REQ_SET_REGS; 210 pegasus->dr.bRequest = PEGASUS_REQ_SET_REGS;
210 pegasus->dr.wValue = cpu_to_le16(0); 211 pegasus->dr.wValue = cpu_to_le16(0);
211 pegasus->dr.wIndex = cpu_to_le16p(&indx); 212 pegasus->dr.wIndex = cpu_to_le16(indx);
212 pegasus->dr.wLength = cpu_to_le16p(&size); 213 pegasus->dr.wLength = cpu_to_le16(size);
213 pegasus->ctrl_urb->transfer_buffer_length = size; 214 pegasus->ctrl_urb->transfer_buffer_length = size;
214 215
215 usb_fill_control_urb(pegasus->ctrl_urb, pegasus->usb, 216 usb_fill_control_urb(pegasus->ctrl_urb, pegasus->usb,
@@ -261,7 +262,7 @@ static int set_register(pegasus_t * pegasus, __u16 indx, __u8 data)
261 pegasus->dr.bRequestType = PEGASUS_REQT_WRITE; 262 pegasus->dr.bRequestType = PEGASUS_REQT_WRITE;
262 pegasus->dr.bRequest = PEGASUS_REQ_SET_REG; 263 pegasus->dr.bRequest = PEGASUS_REQ_SET_REG;
263 pegasus->dr.wValue = cpu_to_le16(data); 264 pegasus->dr.wValue = cpu_to_le16(data);
264 pegasus->dr.wIndex = cpu_to_le16p(&indx); 265 pegasus->dr.wIndex = cpu_to_le16(indx);
265 pegasus->dr.wLength = cpu_to_le16(1); 266 pegasus->dr.wLength = cpu_to_le16(1);
266 pegasus->ctrl_urb->transfer_buffer_length = 1; 267 pegasus->ctrl_urb->transfer_buffer_length = 1;
267 268
@@ -476,7 +477,7 @@ static inline void get_node_id(pegasus_t * pegasus, __u8 * id)
476 477
477 for (i = 0; i < 3; i++) { 478 for (i = 0; i < 3; i++) {
478 read_eprom_word(pegasus, i, &w16); 479 read_eprom_word(pegasus, i, &w16);
479 ((__le16 *) id)[i] = cpu_to_le16p(&w16); 480 ((__le16 *) id)[i] = cpu_to_le16(w16);
480 } 481 }
481} 482}
482 483
@@ -1360,14 +1361,10 @@ static int pegasus_probe(struct usb_interface *intf,
1360 pegasus->intf = intf; 1361 pegasus->intf = intf;
1361 pegasus->usb = dev; 1362 pegasus->usb = dev;
1362 pegasus->net = net; 1363 pegasus->net = net;
1363 net->open = pegasus_open; 1364
1364 net->stop = pegasus_close; 1365
1365 net->watchdog_timeo = PEGASUS_TX_TIMEOUT; 1366 net->watchdog_timeo = PEGASUS_TX_TIMEOUT;
1366 net->tx_timeout = pegasus_tx_timeout; 1367 net->netdev_ops = &pegasus_netdev_ops;
1367 net->do_ioctl = pegasus_ioctl;
1368 net->hard_start_xmit = pegasus_start_xmit;
1369 net->set_multicast_list = pegasus_set_multicast;
1370 net->get_stats = pegasus_netdev_stats;
1371 SET_ETHTOOL_OPS(net, &ops); 1368 SET_ETHTOOL_OPS(net, &ops);
1372 pegasus->mii.dev = net; 1369 pegasus->mii.dev = net;
1373 pegasus->mii.mdio_read = mdio_read; 1370 pegasus->mii.mdio_read = mdio_read;
@@ -1482,6 +1479,16 @@ static int pegasus_resume (struct usb_interface *intf)
1482 return 0; 1479 return 0;
1483} 1480}
1484 1481
1482static const struct net_device_ops pegasus_netdev_ops = {
1483 .ndo_open = pegasus_open,
1484 .ndo_stop = pegasus_close,
1485 .ndo_do_ioctl = pegasus_ioctl,
1486 .ndo_start_xmit = pegasus_start_xmit,
1487 .ndo_set_multicast_list = pegasus_set_multicast,
1488 .ndo_get_stats = pegasus_netdev_stats,
1489 .ndo_tx_timeout = pegasus_tx_timeout,
1490};
1491
1485static struct usb_driver pegasus_driver = { 1492static struct usb_driver pegasus_driver = {
1486 .name = driver_name, 1493 .name = driver_name,
1487 .probe = pegasus_probe, 1494 .probe = pegasus_probe,