@@ -457,7 +457,7 @@ static unsigned int smsc95xx_hash(char addr[ETH_ALEN])
457
457
static void smsc95xx_set_multicast (struct net_device * netdev )
458
458
{
459
459
struct usbnet * dev = netdev_priv (netdev );
460
- struct smsc95xx_priv * pdata = ( struct smsc95xx_priv * )( dev -> data [ 0 ]) ;
460
+ struct smsc95xx_priv * pdata = dev -> driver_priv ;
461
461
unsigned long flags ;
462
462
int ret ;
463
463
@@ -552,7 +552,7 @@ static int smsc95xx_phy_update_flowcontrol(struct usbnet *dev, u8 duplex,
552
552
553
553
static int smsc95xx_link_reset (struct usbnet * dev )
554
554
{
555
- struct smsc95xx_priv * pdata = ( struct smsc95xx_priv * )( dev -> data [ 0 ]) ;
555
+ struct smsc95xx_priv * pdata = dev -> driver_priv ;
556
556
struct mii_if_info * mii = & dev -> mii ;
557
557
struct ethtool_cmd ecmd = { .cmd = ETHTOOL_GSET };
558
558
unsigned long flags ;
@@ -620,7 +620,7 @@ static void smsc95xx_status(struct usbnet *dev, struct urb *urb)
620
620
621
621
static void set_carrier (struct usbnet * dev , bool link )
622
622
{
623
- struct smsc95xx_priv * pdata = ( struct smsc95xx_priv * )( dev -> data [ 0 ]) ;
623
+ struct smsc95xx_priv * pdata = dev -> driver_priv ;
624
624
625
625
if (pdata -> link_ok == link )
626
626
return ;
@@ -749,7 +749,7 @@ static void smsc95xx_ethtool_get_wol(struct net_device *net,
749
749
struct ethtool_wolinfo * wolinfo )
750
750
{
751
751
struct usbnet * dev = netdev_priv (net );
752
- struct smsc95xx_priv * pdata = ( struct smsc95xx_priv * )( dev -> data [ 0 ]) ;
752
+ struct smsc95xx_priv * pdata = dev -> driver_priv ;
753
753
754
754
wolinfo -> supported = SUPPORTED_WAKE ;
755
755
wolinfo -> wolopts = pdata -> wolopts ;
@@ -759,7 +759,7 @@ static int smsc95xx_ethtool_set_wol(struct net_device *net,
759
759
struct ethtool_wolinfo * wolinfo )
760
760
{
761
761
struct usbnet * dev = netdev_priv (net );
762
- struct smsc95xx_priv * pdata = ( struct smsc95xx_priv * )( dev -> data [ 0 ]) ;
762
+ struct smsc95xx_priv * pdata = dev -> driver_priv ;
763
763
int ret ;
764
764
765
765
if (wolinfo -> wolopts & ~SUPPORTED_WAKE )
@@ -798,7 +798,7 @@ static int get_mdix_status(struct net_device *net)
798
798
static void set_mdix_status (struct net_device * net , __u8 mdix_ctrl )
799
799
{
800
800
struct usbnet * dev = netdev_priv (net );
801
- struct smsc95xx_priv * pdata = ( struct smsc95xx_priv * )( dev -> data [ 0 ]) ;
801
+ struct smsc95xx_priv * pdata = dev -> driver_priv ;
802
802
int buf ;
803
803
804
804
if ((pdata -> chip_id == ID_REV_CHIP_ID_9500A_ ) ||
@@ -847,7 +847,7 @@ static int smsc95xx_get_link_ksettings(struct net_device *net,
847
847
struct ethtool_link_ksettings * cmd )
848
848
{
849
849
struct usbnet * dev = netdev_priv (net );
850
- struct smsc95xx_priv * pdata = ( struct smsc95xx_priv * )( dev -> data [ 0 ]) ;
850
+ struct smsc95xx_priv * pdata = dev -> driver_priv ;
851
851
int retval ;
852
852
853
853
retval = usbnet_get_link_ksettings (net , cmd );
@@ -862,7 +862,7 @@ static int smsc95xx_set_link_ksettings(struct net_device *net,
862
862
const struct ethtool_link_ksettings * cmd )
863
863
{
864
864
struct usbnet * dev = netdev_priv (net );
865
- struct smsc95xx_priv * pdata = ( struct smsc95xx_priv * )( dev -> data [ 0 ]) ;
865
+ struct smsc95xx_priv * pdata = dev -> driver_priv ;
866
866
int retval ;
867
867
868
868
if (pdata -> mdix_ctrl != cmd -> base .eth_tp_mdix_ctrl )
@@ -944,7 +944,7 @@ static int smsc95xx_set_mac_address(struct usbnet *dev)
944
944
/* starts the TX path */
945
945
static int smsc95xx_start_tx_path (struct usbnet * dev )
946
946
{
947
- struct smsc95xx_priv * pdata = ( struct smsc95xx_priv * )( dev -> data [ 0 ]) ;
947
+ struct smsc95xx_priv * pdata = dev -> driver_priv ;
948
948
unsigned long flags ;
949
949
int ret ;
950
950
@@ -964,7 +964,7 @@ static int smsc95xx_start_tx_path(struct usbnet *dev)
964
964
/* Starts the Receive path */
965
965
static int smsc95xx_start_rx_path (struct usbnet * dev , int in_pm )
966
966
{
967
- struct smsc95xx_priv * pdata = ( struct smsc95xx_priv * )( dev -> data [ 0 ]) ;
967
+ struct smsc95xx_priv * pdata = dev -> driver_priv ;
968
968
unsigned long flags ;
969
969
970
970
spin_lock_irqsave (& pdata -> mac_cr_lock , flags );
@@ -1021,7 +1021,7 @@ static int smsc95xx_phy_initialize(struct usbnet *dev)
1021
1021
1022
1022
static int smsc95xx_reset (struct usbnet * dev )
1023
1023
{
1024
- struct smsc95xx_priv * pdata = ( struct smsc95xx_priv * )( dev -> data [ 0 ]) ;
1024
+ struct smsc95xx_priv * pdata = dev -> driver_priv ;
1025
1025
u32 read_buf , write_buf , burst_cap ;
1026
1026
int ret = 0 , timeout ;
1027
1027
@@ -1249,7 +1249,7 @@ static const struct net_device_ops smsc95xx_netdev_ops = {
1249
1249
1250
1250
static int smsc95xx_bind (struct usbnet * dev , struct usb_interface * intf )
1251
1251
{
1252
- struct smsc95xx_priv * pdata = NULL ;
1252
+ struct smsc95xx_priv * pdata ;
1253
1253
u32 val ;
1254
1254
int ret ;
1255
1255
@@ -1261,13 +1261,12 @@ static int smsc95xx_bind(struct usbnet *dev, struct usb_interface *intf)
1261
1261
return ret ;
1262
1262
}
1263
1263
1264
- dev -> data [0 ] = (unsigned long )kzalloc (sizeof (struct smsc95xx_priv ),
1265
- GFP_KERNEL );
1266
-
1267
- pdata = (struct smsc95xx_priv * )(dev -> data [0 ]);
1264
+ pdata = kzalloc (sizeof (* pdata ), GFP_KERNEL );
1268
1265
if (!pdata )
1269
1266
return - ENOMEM ;
1270
1267
1268
+ dev -> driver_priv = pdata ;
1269
+
1271
1270
spin_lock_init (& pdata -> mac_cr_lock );
1272
1271
1273
1272
/* LAN95xx devices do not alter the computed checksum of 0 to 0xffff.
@@ -1330,15 +1329,11 @@ static int smsc95xx_bind(struct usbnet *dev, struct usb_interface *intf)
1330
1329
1331
1330
static void smsc95xx_unbind (struct usbnet * dev , struct usb_interface * intf )
1332
1331
{
1333
- struct smsc95xx_priv * pdata = (struct smsc95xx_priv * )(dev -> data [0 ]);
1334
-
1335
- if (pdata ) {
1336
- cancel_delayed_work_sync (& pdata -> carrier_check );
1337
- netif_dbg (dev , ifdown , dev -> net , "free pdata\n" );
1338
- kfree (pdata );
1339
- pdata = NULL ;
1340
- dev -> data [0 ] = 0 ;
1341
- }
1332
+ struct smsc95xx_priv * pdata = dev -> driver_priv ;
1333
+
1334
+ cancel_delayed_work_sync (& pdata -> carrier_check );
1335
+ netif_dbg (dev , ifdown , dev -> net , "free pdata\n" );
1336
+ kfree (pdata );
1342
1337
}
1343
1338
1344
1339
static u32 smsc_crc (const u8 * buffer , size_t len , int filter )
@@ -1388,7 +1383,7 @@ static int smsc95xx_link_ok_nopm(struct usbnet *dev)
1388
1383
1389
1384
static int smsc95xx_enter_suspend0 (struct usbnet * dev )
1390
1385
{
1391
- struct smsc95xx_priv * pdata = ( struct smsc95xx_priv * )( dev -> data [ 0 ]) ;
1386
+ struct smsc95xx_priv * pdata = dev -> driver_priv ;
1392
1387
u32 val ;
1393
1388
int ret ;
1394
1389
@@ -1427,7 +1422,7 @@ static int smsc95xx_enter_suspend0(struct usbnet *dev)
1427
1422
1428
1423
static int smsc95xx_enter_suspend1 (struct usbnet * dev )
1429
1424
{
1430
- struct smsc95xx_priv * pdata = ( struct smsc95xx_priv * )( dev -> data [ 0 ]) ;
1425
+ struct smsc95xx_priv * pdata = dev -> driver_priv ;
1431
1426
u32 val ;
1432
1427
int ret ;
1433
1428
@@ -1474,7 +1469,7 @@ static int smsc95xx_enter_suspend1(struct usbnet *dev)
1474
1469
1475
1470
static int smsc95xx_enter_suspend2 (struct usbnet * dev )
1476
1471
{
1477
- struct smsc95xx_priv * pdata = ( struct smsc95xx_priv * )( dev -> data [ 0 ]) ;
1472
+ struct smsc95xx_priv * pdata = dev -> driver_priv ;
1478
1473
u32 val ;
1479
1474
int ret ;
1480
1475
@@ -1496,7 +1491,7 @@ static int smsc95xx_enter_suspend2(struct usbnet *dev)
1496
1491
1497
1492
static int smsc95xx_enter_suspend3 (struct usbnet * dev )
1498
1493
{
1499
- struct smsc95xx_priv * pdata = ( struct smsc95xx_priv * )( dev -> data [ 0 ]) ;
1494
+ struct smsc95xx_priv * pdata = dev -> driver_priv ;
1500
1495
u32 val ;
1501
1496
int ret ;
1502
1497
@@ -1535,7 +1530,7 @@ static int smsc95xx_enter_suspend3(struct usbnet *dev)
1535
1530
1536
1531
static int smsc95xx_autosuspend (struct usbnet * dev , u32 link_up )
1537
1532
{
1538
- struct smsc95xx_priv * pdata = ( struct smsc95xx_priv * )( dev -> data [ 0 ]) ;
1533
+ struct smsc95xx_priv * pdata = dev -> driver_priv ;
1539
1534
int ret ;
1540
1535
1541
1536
if (!netif_running (dev -> net )) {
@@ -1583,7 +1578,7 @@ static int smsc95xx_autosuspend(struct usbnet *dev, u32 link_up)
1583
1578
static int smsc95xx_suspend (struct usb_interface * intf , pm_message_t message )
1584
1579
{
1585
1580
struct usbnet * dev = usb_get_intfdata (intf );
1586
- struct smsc95xx_priv * pdata = ( struct smsc95xx_priv * )( dev -> data [ 0 ]) ;
1581
+ struct smsc95xx_priv * pdata = dev -> driver_priv ;
1587
1582
u32 val , link_up ;
1588
1583
int ret ;
1589
1584
@@ -1854,7 +1849,7 @@ static int smsc95xx_resume(struct usb_interface *intf)
1854
1849
u32 val ;
1855
1850
1856
1851
BUG_ON (!dev );
1857
- pdata = ( struct smsc95xx_priv * )( dev -> data [ 0 ]) ;
1852
+ pdata = dev -> driver_priv ;
1858
1853
suspend_flags = pdata -> suspend_flags ;
1859
1854
1860
1855
netdev_dbg (dev -> net , "resume suspend_flags=0x%02x\n" , suspend_flags );
@@ -2074,7 +2069,7 @@ static struct sk_buff *smsc95xx_tx_fixup(struct usbnet *dev,
2074
2069
2075
2070
static int smsc95xx_manage_power (struct usbnet * dev , int on )
2076
2071
{
2077
- struct smsc95xx_priv * pdata = ( struct smsc95xx_priv * )( dev -> data [ 0 ]) ;
2072
+ struct smsc95xx_priv * pdata = dev -> driver_priv ;
2078
2073
2079
2074
dev -> intf -> needs_remote_wakeup = on ;
2080
2075
0 commit comments