Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

netdevice zd1201: Convert directly reference of netdev->priv to netdev_priv()

We have some reasons to kill netdev->priv:
1. netdev->priv is equal to netdev_priv().
2. netdev_priv() wraps the calculation of netdev->priv's offset, obviously
netdev_priv() is more flexible than netdev->priv.
But we cann't kill netdev->priv, because so many drivers reference to it
directly.

OK, becasue Dave S. Miller said, "every direct netdev->priv usage is a bug",
and I want to kill netdev->priv later, I decided to convert all the direct
reference of netdev->priv first.

(Original patch posted by Wang Chen <wangchen@cn.fujitsu.com> w/ above
changelog but using dev->ml_priv. That doesn't seem appropriate
to me for this driver, so I've revamped it to use netdev_priv()
instead. -- JWL)

Reviewed-by: Wang Chen <wangchen@cn.fujitsu.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

+56 -59
+56 -59
drivers/net/wireless/zd1201.c
··· 743 743 744 744 static int zd1201_net_open(struct net_device *dev) 745 745 { 746 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 746 + struct zd1201 *zd = netdev_priv(dev); 747 747 748 748 /* Start MAC with wildcard if no essid set */ 749 749 if (!zd->mac_enabled) ··· 781 781 */ 782 782 static int zd1201_hard_start_xmit(struct sk_buff *skb, struct net_device *dev) 783 783 { 784 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 784 + struct zd1201 *zd = netdev_priv(dev); 785 785 unsigned char *txbuf = zd->txdata; 786 786 int txbuflen, pad = 0, err; 787 787 struct urb *urb = zd->tx_urb; ··· 831 831 832 832 static void zd1201_tx_timeout(struct net_device *dev) 833 833 { 834 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 834 + struct zd1201 *zd = netdev_priv(dev); 835 835 836 836 if (!zd) 837 837 return; ··· 846 846 static int zd1201_set_mac_address(struct net_device *dev, void *p) 847 847 { 848 848 struct sockaddr *addr = p; 849 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 849 + struct zd1201 *zd = netdev_priv(dev); 850 850 int err; 851 851 852 852 if (!zd) ··· 863 863 864 864 static struct net_device_stats *zd1201_get_stats(struct net_device *dev) 865 865 { 866 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 866 + struct zd1201 *zd = netdev_priv(dev); 867 867 868 868 return &zd->stats; 869 869 } 870 870 871 871 static struct iw_statistics *zd1201_get_wireless_stats(struct net_device *dev) 872 872 { 873 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 873 + struct zd1201 *zd = netdev_priv(dev); 874 874 875 875 return &zd->iwstats; 876 876 } 877 877 878 878 static void zd1201_set_multicast(struct net_device *dev) 879 879 { 880 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 880 + struct zd1201 *zd = netdev_priv(dev); 881 881 struct dev_mc_list *mc = dev->mc_list; 882 882 unsigned char reqbuf[ETH_ALEN*ZD1201_MAXMULTI]; 883 883 int i; ··· 897 897 static int zd1201_config_commit(struct net_device *dev, 898 898 struct iw_request_info *info, struct iw_point *data, char *essid) 899 899 { 900 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 900 + struct zd1201 *zd = netdev_priv(dev); 901 901 902 902 return zd1201_mac_reset(zd); 903 903 } ··· 912 912 static int zd1201_set_freq(struct net_device *dev, 913 913 struct iw_request_info *info, struct iw_freq *freq, char *extra) 914 914 { 915 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 915 + struct zd1201 *zd = netdev_priv(dev); 916 916 short channel = 0; 917 917 int err; 918 918 ··· 937 937 static int zd1201_get_freq(struct net_device *dev, 938 938 struct iw_request_info *info, struct iw_freq *freq, char *extra) 939 939 { 940 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 940 + struct zd1201 *zd = netdev_priv(dev); 941 941 short channel; 942 942 int err; 943 943 ··· 953 953 static int zd1201_set_mode(struct net_device *dev, 954 954 struct iw_request_info *info, __u32 *mode, char *extra) 955 955 { 956 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 956 + struct zd1201 *zd = netdev_priv(dev); 957 957 short porttype, monitor = 0; 958 958 unsigned char buffer[IW_ESSID_MAX_SIZE+2]; 959 959 int err; ··· 1015 1015 static int zd1201_get_mode(struct net_device *dev, 1016 1016 struct iw_request_info *info, __u32 *mode, char *extra) 1017 1017 { 1018 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 1018 + struct zd1201 *zd = netdev_priv(dev); 1019 1019 short porttype; 1020 1020 int err; 1021 1021 ··· 1091 1091 static int zd1201_get_wap(struct net_device *dev, 1092 1092 struct iw_request_info *info, struct sockaddr *ap_addr, char *extra) 1093 1093 { 1094 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 1094 + struct zd1201 *zd = netdev_priv(dev); 1095 1095 unsigned char buffer[6]; 1096 1096 1097 1097 if (!zd1201_getconfig(zd, ZD1201_RID_COMMSQUALITY, buffer, 6)) { ··· 1119 1119 static int zd1201_get_scan(struct net_device *dev, 1120 1120 struct iw_request_info *info, struct iw_point *srq, char *extra) 1121 1121 { 1122 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 1122 + struct zd1201 *zd = netdev_priv(dev); 1123 1123 int err, i, j, enabled_save; 1124 1124 struct iw_event iwe; 1125 1125 char *cev = extra; ··· 1211 1211 static int zd1201_set_essid(struct net_device *dev, 1212 1212 struct iw_request_info *info, struct iw_point *data, char *essid) 1213 1213 { 1214 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 1214 + struct zd1201 *zd = netdev_priv(dev); 1215 1215 1216 1216 if (data->length > IW_ESSID_MAX_SIZE) 1217 1217 return -EINVAL; ··· 1226 1226 static int zd1201_get_essid(struct net_device *dev, 1227 1227 struct iw_request_info *info, struct iw_point *data, char *essid) 1228 1228 { 1229 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 1229 + struct zd1201 *zd = netdev_priv(dev); 1230 1230 1231 1231 memcpy(essid, zd->essid, zd->essidlen); 1232 1232 data->flags = 1; ··· 1247 1247 static int zd1201_set_rate(struct net_device *dev, 1248 1248 struct iw_request_info *info, struct iw_param *rrq, char *extra) 1249 1249 { 1250 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 1250 + struct zd1201 *zd = netdev_priv(dev); 1251 1251 short rate; 1252 1252 int err; 1253 1253 ··· 1280 1280 static int zd1201_get_rate(struct net_device *dev, 1281 1281 struct iw_request_info *info, struct iw_param *rrq, char *extra) 1282 1282 { 1283 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 1283 + struct zd1201 *zd = netdev_priv(dev); 1284 1284 short rate; 1285 1285 int err; 1286 1286 ··· 1313 1313 static int zd1201_set_rts(struct net_device *dev, struct iw_request_info *info, 1314 1314 struct iw_param *rts, char *extra) 1315 1315 { 1316 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 1316 + struct zd1201 *zd = netdev_priv(dev); 1317 1317 int err; 1318 1318 short val = rts->value; 1319 1319 ··· 1333 1333 static int zd1201_get_rts(struct net_device *dev, struct iw_request_info *info, 1334 1334 struct iw_param *rts, char *extra) 1335 1335 { 1336 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 1336 + struct zd1201 *zd = netdev_priv(dev); 1337 1337 short rtst; 1338 1338 int err; 1339 1339 ··· 1350 1350 static int zd1201_set_frag(struct net_device *dev, struct iw_request_info *info, 1351 1351 struct iw_param *frag, char *extra) 1352 1352 { 1353 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 1353 + struct zd1201 *zd = netdev_priv(dev); 1354 1354 int err; 1355 1355 short val = frag->value; 1356 1356 ··· 1371 1371 static int zd1201_get_frag(struct net_device *dev, struct iw_request_info *info, 1372 1372 struct iw_param *frag, char *extra) 1373 1373 { 1374 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 1374 + struct zd1201 *zd = netdev_priv(dev); 1375 1375 short fragt; 1376 1376 int err; 1377 1377 ··· 1400 1400 static int zd1201_set_encode(struct net_device *dev, 1401 1401 struct iw_request_info *info, struct iw_point *erq, char *key) 1402 1402 { 1403 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 1403 + struct zd1201 *zd = netdev_priv(dev); 1404 1404 short i; 1405 1405 int err, rid; 1406 1406 ··· 1457 1457 static int zd1201_get_encode(struct net_device *dev, 1458 1458 struct iw_request_info *info, struct iw_point *erq, char *key) 1459 1459 { 1460 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 1460 + struct zd1201 *zd = netdev_priv(dev); 1461 1461 short i; 1462 1462 int err; 1463 1463 ··· 1490 1490 static int zd1201_set_power(struct net_device *dev, 1491 1491 struct iw_request_info *info, struct iw_param *vwrq, char *extra) 1492 1492 { 1493 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 1493 + struct zd1201 *zd = netdev_priv(dev); 1494 1494 short enabled, duration, level; 1495 1495 int err; 1496 1496 ··· 1529 1529 static int zd1201_get_power(struct net_device *dev, 1530 1530 struct iw_request_info *info, struct iw_param *vwrq, char *extra) 1531 1531 { 1532 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 1532 + struct zd1201 *zd = netdev_priv(dev); 1533 1533 short enabled, level, duration; 1534 1534 int err; 1535 1535 ··· 1616 1616 static int zd1201_set_hostauth(struct net_device *dev, 1617 1617 struct iw_request_info *info, struct iw_param *rrq, char *extra) 1618 1618 { 1619 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 1619 + struct zd1201 *zd = netdev_priv(dev); 1620 1620 1621 1621 if (!zd->ap) 1622 1622 return -EOPNOTSUPP; ··· 1627 1627 static int zd1201_get_hostauth(struct net_device *dev, 1628 1628 struct iw_request_info *info, struct iw_param *rrq, char *extra) 1629 1629 { 1630 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 1630 + struct zd1201 *zd = netdev_priv(dev); 1631 1631 short hostauth; 1632 1632 int err; 1633 1633 ··· 1646 1646 static int zd1201_auth_sta(struct net_device *dev, 1647 1647 struct iw_request_info *info, struct sockaddr *sta, char *extra) 1648 1648 { 1649 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 1649 + struct zd1201 *zd = netdev_priv(dev); 1650 1650 unsigned char buffer[10]; 1651 1651 1652 1652 if (!zd->ap) ··· 1662 1662 static int zd1201_set_maxassoc(struct net_device *dev, 1663 1663 struct iw_request_info *info, struct iw_param *rrq, char *extra) 1664 1664 { 1665 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 1665 + struct zd1201 *zd = netdev_priv(dev); 1666 1666 int err; 1667 1667 1668 1668 if (!zd->ap) ··· 1677 1677 static int zd1201_get_maxassoc(struct net_device *dev, 1678 1678 struct iw_request_info *info, struct iw_param *rrq, char *extra) 1679 1679 { 1680 - struct zd1201 *zd = (struct zd1201 *)dev->priv; 1680 + struct zd1201 *zd = netdev_priv(dev); 1681 1681 short maxassoc; 1682 1682 int err; 1683 1683 ··· 1729 1729 const struct usb_device_id *id) 1730 1730 { 1731 1731 struct zd1201 *zd; 1732 + struct net_device *dev; 1732 1733 struct usb_device *usb; 1733 1734 int err; 1734 1735 short porttype; ··· 1737 1736 1738 1737 usb = interface_to_usbdev(interface); 1739 1738 1740 - zd = kzalloc(sizeof(struct zd1201), GFP_KERNEL); 1741 - if (!zd) 1739 + dev = alloc_etherdev(sizeof(*zd)); 1740 + if (!dev) 1742 1741 return -ENOMEM; 1742 + zd = netdev_priv(dev); 1743 + zd->dev = dev; 1744 + 1743 1745 zd->ap = ap; 1744 1746 zd->usb = usb; 1745 1747 zd->removed = 0; ··· 1777 1773 if (err) 1778 1774 goto err_start; 1779 1775 1780 - zd->dev = alloc_etherdev(0); 1781 - if (!zd->dev) 1782 - goto err_start; 1783 - 1784 - zd->dev->priv = zd; 1785 - zd->dev->open = zd1201_net_open; 1786 - zd->dev->stop = zd1201_net_stop; 1787 - zd->dev->get_stats = zd1201_get_stats; 1788 - zd->dev->wireless_handlers = 1776 + dev->open = zd1201_net_open; 1777 + dev->stop = zd1201_net_stop; 1778 + dev->get_stats = zd1201_get_stats; 1779 + dev->wireless_handlers = 1789 1780 (struct iw_handler_def *)&zd1201_iw_handlers; 1790 - zd->dev->hard_start_xmit = zd1201_hard_start_xmit; 1791 - zd->dev->watchdog_timeo = ZD1201_TX_TIMEOUT; 1792 - zd->dev->tx_timeout = zd1201_tx_timeout; 1793 - zd->dev->set_multicast_list = zd1201_set_multicast; 1794 - zd->dev->set_mac_address = zd1201_set_mac_address; 1795 - strcpy(zd->dev->name, "wlan%d"); 1781 + dev->hard_start_xmit = zd1201_hard_start_xmit; 1782 + dev->watchdog_timeo = ZD1201_TX_TIMEOUT; 1783 + dev->tx_timeout = zd1201_tx_timeout; 1784 + dev->set_multicast_list = zd1201_set_multicast; 1785 + dev->set_mac_address = zd1201_set_mac_address; 1786 + strcpy(dev->name, "wlan%d"); 1796 1787 1797 1788 err = zd1201_getconfig(zd, ZD1201_RID_CNFOWNMACADDR, 1798 - zd->dev->dev_addr, zd->dev->addr_len); 1789 + dev->dev_addr, dev->addr_len); 1799 1790 if (err) 1800 - goto err_net; 1791 + goto err_start; 1801 1792 1802 1793 /* Set wildcard essid to match zd->essid */ 1803 1794 *(__le16 *)buf = cpu_to_le16(0); 1804 1795 err = zd1201_setconfig(zd, ZD1201_RID_CNFDESIREDSSID, buf, 1805 1796 IW_ESSID_MAX_SIZE+2, 1); 1806 1797 if (err) 1807 - goto err_net; 1798 + goto err_start; 1808 1799 1809 1800 if (zd->ap) 1810 1801 porttype = ZD1201_PORTTYPE_AP; ··· 1807 1808 porttype = ZD1201_PORTTYPE_BSS; 1808 1809 err = zd1201_setconfig16(zd, ZD1201_RID_CNFPORTTYPE, porttype); 1809 1810 if (err) 1810 - goto err_net; 1811 + goto err_start; 1811 1812 1812 - SET_NETDEV_DEV(zd->dev, &usb->dev); 1813 + SET_NETDEV_DEV(dev, &usb->dev); 1813 1814 1814 - err = register_netdev(zd->dev); 1815 + err = register_netdev(dev); 1815 1816 if (err) 1816 - goto err_net; 1817 + goto err_start; 1817 1818 dev_info(&usb->dev, "%s: ZD1201 USB Wireless interface\n", 1818 - zd->dev->name); 1819 + dev->name); 1819 1820 1820 1821 usb_set_intfdata(interface, zd); 1821 1822 zd1201_enable(zd); /* zd1201 likes to startup enabled, */ 1822 1823 zd1201_disable(zd); /* interfering with all the wifis in range */ 1823 1824 return 0; 1824 1825 1825 - err_net: 1826 - free_netdev(zd->dev); 1827 1826 err_start: 1828 1827 /* Leave the device in reset state */ 1829 1828 zd1201_docmd(zd, ZD1201_CMDCODE_INIT, 0, 0, 0); 1830 1829 err_zd: 1831 1830 usb_free_urb(zd->tx_urb); 1832 1831 usb_free_urb(zd->rx_urb); 1833 - kfree(zd); 1832 + free_netdev(dev); 1834 1833 return err; 1835 1834 } 1836 1835