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

net: convert suitable drivers to use phy_do_ioctl_running

Convert suitable drivers to use new helper phy_do_ioctl_running.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Acked-by: Timur Tabi <timur@kernel.org>
Acked-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Heiner Kallweit and committed by
David S. Miller
fd786fb1 954b3c43

+20 -230
+1 -14
drivers/net/ethernet/allwinner/sun4i-emac.c
··· 207 207 readsl(reg, data, round_up(count, 4) / 4); 208 208 } 209 209 210 - static int emac_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) 211 - { 212 - struct phy_device *phydev = dev->phydev; 213 - 214 - if (!netif_running(dev)) 215 - return -EINVAL; 216 - 217 - if (!phydev) 218 - return -ENODEV; 219 - 220 - return phy_mii_ioctl(phydev, rq, cmd); 221 - } 222 - 223 210 /* ethtool ops */ 224 211 static void emac_get_drvinfo(struct net_device *dev, 225 212 struct ethtool_drvinfo *info) ··· 778 791 .ndo_start_xmit = emac_start_xmit, 779 792 .ndo_tx_timeout = emac_timeout, 780 793 .ndo_set_rx_mode = emac_set_rx_mode, 781 - .ndo_do_ioctl = emac_ioctl, 794 + .ndo_do_ioctl = phy_do_ioctl_running, 782 795 .ndo_validate_addr = eth_validate_addr, 783 796 .ndo_set_mac_address = emac_set_mac_address, 784 797 #ifdef CONFIG_NET_POLL_CONTROLLER
+1 -12
drivers/net/ethernet/amd/au1000_eth.c
··· 1053 1053 writel(reg, &aup->mac->control); 1054 1054 } 1055 1055 1056 - static int au1000_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) 1057 - { 1058 - if (!netif_running(dev)) 1059 - return -EINVAL; 1060 - 1061 - if (!dev->phydev) 1062 - return -EINVAL; /* PHY not controllable */ 1063 - 1064 - return phy_mii_ioctl(dev->phydev, rq, cmd); 1065 - } 1066 - 1067 1056 static const struct net_device_ops au1000_netdev_ops = { 1068 1057 .ndo_open = au1000_open, 1069 1058 .ndo_stop = au1000_close, 1070 1059 .ndo_start_xmit = au1000_tx, 1071 1060 .ndo_set_rx_mode = au1000_multicast_list, 1072 - .ndo_do_ioctl = au1000_ioctl, 1061 + .ndo_do_ioctl = phy_do_ioctl_running, 1073 1062 .ndo_tx_timeout = au1000_tx_timeout, 1074 1063 .ndo_set_mac_address = eth_mac_addr, 1075 1064 .ndo_validate_addr = eth_validate_addr,
+1 -13
drivers/net/ethernet/arc/emac_main.c
··· 781 781 return 0; 782 782 } 783 783 784 - static int arc_emac_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) 785 - { 786 - if (!netif_running(dev)) 787 - return -EINVAL; 788 - 789 - if (!dev->phydev) 790 - return -ENODEV; 791 - 792 - return phy_mii_ioctl(dev->phydev, rq, cmd); 793 - } 794 - 795 - 796 784 /** 797 785 * arc_emac_restart - Restart EMAC 798 786 * @ndev: Pointer to net_device structure. ··· 845 857 .ndo_set_mac_address = arc_emac_set_address, 846 858 .ndo_get_stats = arc_emac_stats, 847 859 .ndo_set_rx_mode = arc_emac_set_rx_mode, 848 - .ndo_do_ioctl = arc_emac_ioctl, 860 + .ndo_do_ioctl = phy_do_ioctl_running, 849 861 #ifdef CONFIG_NET_POLL_CONTROLLER 850 862 .ndo_poll_controller = arc_emac_poll_controller, 851 863 #endif
+1 -9
drivers/net/ethernet/broadcom/bgmac.c
··· 1248 1248 return 0; 1249 1249 } 1250 1250 1251 - static int bgmac_ioctl(struct net_device *net_dev, struct ifreq *ifr, int cmd) 1252 - { 1253 - if (!netif_running(net_dev)) 1254 - return -EINVAL; 1255 - 1256 - return phy_mii_ioctl(net_dev->phydev, ifr, cmd); 1257 - } 1258 - 1259 1251 static const struct net_device_ops bgmac_netdev_ops = { 1260 1252 .ndo_open = bgmac_open, 1261 1253 .ndo_stop = bgmac_stop, ··· 1255 1263 .ndo_set_rx_mode = bgmac_set_rx_mode, 1256 1264 .ndo_set_mac_address = bgmac_set_mac_address, 1257 1265 .ndo_validate_addr = eth_validate_addr, 1258 - .ndo_do_ioctl = bgmac_ioctl, 1266 + .ndo_do_ioctl = phy_do_ioctl_running, 1259 1267 }; 1260 1268 1261 1269 /**************************************************
+1 -13
drivers/net/ethernet/broadcom/genet/bcmgenet.c
··· 1225 1225 } 1226 1226 } 1227 1227 1228 - /* ioctl handle special commands that are not present in ethtool. */ 1229 - static int bcmgenet_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) 1230 - { 1231 - if (!netif_running(dev)) 1232 - return -EINVAL; 1233 - 1234 - if (!dev->phydev) 1235 - return -ENODEV; 1236 - 1237 - return phy_mii_ioctl(dev->phydev, rq, cmd); 1238 - } 1239 - 1240 1228 static struct enet_cb *bcmgenet_get_txcb(struct bcmgenet_priv *priv, 1241 1229 struct bcmgenet_tx_ring *ring) 1242 1230 { ··· 3210 3222 .ndo_tx_timeout = bcmgenet_timeout, 3211 3223 .ndo_set_rx_mode = bcmgenet_set_rx_mode, 3212 3224 .ndo_set_mac_address = bcmgenet_set_mac_addr, 3213 - .ndo_do_ioctl = bcmgenet_ioctl, 3225 + .ndo_do_ioctl = phy_do_ioctl_running, 3214 3226 .ndo_set_features = bcmgenet_set_features, 3215 3227 #ifdef CONFIG_NET_POLL_CONTROLLER 3216 3228 .ndo_poll_controller = bcmgenet_poll_controller,
+1 -14
drivers/net/ethernet/dnet.c
··· 725 725 return nstat; 726 726 } 727 727 728 - static int dnet_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) 729 - { 730 - struct phy_device *phydev = dev->phydev; 731 - 732 - if (!netif_running(dev)) 733 - return -EINVAL; 734 - 735 - if (!phydev) 736 - return -ENODEV; 737 - 738 - return phy_mii_ioctl(phydev, rq, cmd); 739 - } 740 - 741 728 static void dnet_get_drvinfo(struct net_device *dev, 742 729 struct ethtool_drvinfo *info) 743 730 { ··· 746 759 .ndo_stop = dnet_close, 747 760 .ndo_get_stats = dnet_get_stats, 748 761 .ndo_start_xmit = dnet_start_xmit, 749 - .ndo_do_ioctl = dnet_ioctl, 762 + .ndo_do_ioctl = phy_do_ioctl_running, 750 763 .ndo_set_mac_address = eth_mac_addr, 751 764 .ndo_validate_addr = eth_validate_addr, 752 765 };
+1 -9
drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c
··· 882 882 .set_tunable = fs_set_tunable, 883 883 }; 884 884 885 - static int fs_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) 886 - { 887 - if (!netif_running(dev)) 888 - return -EINVAL; 889 - 890 - return phy_mii_ioctl(dev->phydev, rq, cmd); 891 - } 892 - 893 885 extern int fs_mii_connect(struct net_device *dev); 894 886 extern void fs_mii_disconnect(struct net_device *dev); 895 887 ··· 899 907 .ndo_start_xmit = fs_enet_start_xmit, 900 908 .ndo_tx_timeout = fs_timeout, 901 909 .ndo_set_rx_mode = fs_set_multicast_list, 902 - .ndo_do_ioctl = fs_ioctl, 910 + .ndo_do_ioctl = phy_do_ioctl_running, 903 911 .ndo_validate_addr = eth_validate_addr, 904 912 .ndo_set_mac_address = eth_mac_addr, 905 913 #ifdef CONFIG_NET_POLL_CONTROLLER
+1 -13
drivers/net/ethernet/hisilicon/hisi_femac.c
··· 675 675 } 676 676 } 677 677 678 - static int hisi_femac_net_ioctl(struct net_device *dev, 679 - struct ifreq *ifreq, int cmd) 680 - { 681 - if (!netif_running(dev)) 682 - return -EINVAL; 683 - 684 - if (!dev->phydev) 685 - return -EINVAL; 686 - 687 - return phy_mii_ioctl(dev->phydev, ifreq, cmd); 688 - } 689 - 690 678 static const struct ethtool_ops hisi_femac_ethtools_ops = { 691 679 .get_link = ethtool_op_get_link, 692 680 .get_link_ksettings = phy_ethtool_get_link_ksettings, ··· 685 697 .ndo_open = hisi_femac_net_open, 686 698 .ndo_stop = hisi_femac_net_close, 687 699 .ndo_start_xmit = hisi_femac_net_xmit, 688 - .ndo_do_ioctl = hisi_femac_net_ioctl, 700 + .ndo_do_ioctl = phy_do_ioctl_running, 689 701 .ndo_set_mac_address = hisi_femac_set_mac_address, 690 702 .ndo_set_rx_mode = hisi_femac_net_set_rx_mode, 691 703 };
+1 -15
drivers/net/ethernet/hisilicon/hns/hns_enet.c
··· 1497 1497 } 1498 1498 } 1499 1499 1500 - static int hns_nic_do_ioctl(struct net_device *netdev, struct ifreq *ifr, 1501 - int cmd) 1502 - { 1503 - struct phy_device *phy_dev = netdev->phydev; 1504 - 1505 - if (!netif_running(netdev)) 1506 - return -EINVAL; 1507 - 1508 - if (!phy_dev) 1509 - return -ENOTSUPP; 1510 - 1511 - return phy_mii_ioctl(phy_dev, ifr, cmd); 1512 - } 1513 - 1514 1500 static netdev_tx_t hns_nic_net_xmit(struct sk_buff *skb, 1515 1501 struct net_device *ndev) 1516 1502 { ··· 1944 1958 .ndo_tx_timeout = hns_nic_net_timeout, 1945 1959 .ndo_set_mac_address = hns_nic_net_set_mac_address, 1946 1960 .ndo_change_mtu = hns_nic_change_mtu, 1947 - .ndo_do_ioctl = hns_nic_do_ioctl, 1961 + .ndo_do_ioctl = phy_do_ioctl_running, 1948 1962 .ndo_set_features = hns_nic_set_features, 1949 1963 .ndo_fix_features = hns_nic_fix_features, 1950 1964 .ndo_get_stats64 = hns_nic_get_stats64,
+1 -14
drivers/net/ethernet/nxp/lpc_eth.c
··· 1149 1149 spin_unlock_irqrestore(&pldat->lock, flags); 1150 1150 } 1151 1151 1152 - static int lpc_eth_ioctl(struct net_device *ndev, struct ifreq *req, int cmd) 1153 - { 1154 - struct phy_device *phydev = ndev->phydev; 1155 - 1156 - if (!netif_running(ndev)) 1157 - return -EINVAL; 1158 - 1159 - if (!phydev) 1160 - return -ENODEV; 1161 - 1162 - return phy_mii_ioctl(phydev, req, cmd); 1163 - } 1164 - 1165 1152 static int lpc_eth_open(struct net_device *ndev) 1166 1153 { 1167 1154 struct netdata_local *pldat = netdev_priv(ndev); ··· 1216 1229 .ndo_stop = lpc_eth_close, 1217 1230 .ndo_start_xmit = lpc_eth_hard_start_xmit, 1218 1231 .ndo_set_rx_mode = lpc_eth_set_multicast_list, 1219 - .ndo_do_ioctl = lpc_eth_ioctl, 1232 + .ndo_do_ioctl = phy_do_ioctl_running, 1220 1233 .ndo_set_mac_address = lpc_set_mac_address, 1221 1234 .ndo_validate_addr = eth_validate_addr, 1222 1235 };
+1 -13
drivers/net/ethernet/qualcomm/emac/emac.c
··· 289 289 schedule_work(&adpt->work_thread); 290 290 } 291 291 292 - /* IOCTL support for the interface */ 293 - static int emac_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd) 294 - { 295 - if (!netif_running(netdev)) 296 - return -EINVAL; 297 - 298 - if (!netdev->phydev) 299 - return -ENODEV; 300 - 301 - return phy_mii_ioctl(netdev->phydev, ifr, cmd); 302 - } 303 - 304 292 /** 305 293 * emac_update_hw_stats - read the EMAC stat registers 306 294 * ··· 375 387 .ndo_start_xmit = emac_start_xmit, 376 388 .ndo_set_mac_address = eth_mac_addr, 377 389 .ndo_change_mtu = emac_change_mtu, 378 - .ndo_do_ioctl = emac_ioctl, 390 + .ndo_do_ioctl = phy_do_ioctl_running, 379 391 .ndo_tx_timeout = emac_tx_timeout, 380 392 .ndo_get_stats64 = emac_get_stats64, 381 393 .ndo_set_features = emac_set_features,
+2 -16
drivers/net/ethernet/renesas/sh_eth.c
··· 2647 2647 return 0; 2648 2648 } 2649 2649 2650 - /* ioctl to device function */ 2651 - static int sh_eth_do_ioctl(struct net_device *ndev, struct ifreq *rq, int cmd) 2652 - { 2653 - struct phy_device *phydev = ndev->phydev; 2654 - 2655 - if (!netif_running(ndev)) 2656 - return -EINVAL; 2657 - 2658 - if (!phydev) 2659 - return -ENODEV; 2660 - 2661 - return phy_mii_ioctl(phydev, rq, cmd); 2662 - } 2663 - 2664 2650 static int sh_eth_change_mtu(struct net_device *ndev, int new_mtu) 2665 2651 { 2666 2652 if (netif_running(ndev)) ··· 3145 3159 .ndo_get_stats = sh_eth_get_stats, 3146 3160 .ndo_set_rx_mode = sh_eth_set_rx_mode, 3147 3161 .ndo_tx_timeout = sh_eth_tx_timeout, 3148 - .ndo_do_ioctl = sh_eth_do_ioctl, 3162 + .ndo_do_ioctl = phy_do_ioctl_running, 3149 3163 .ndo_change_mtu = sh_eth_change_mtu, 3150 3164 .ndo_validate_addr = eth_validate_addr, 3151 3165 .ndo_set_mac_address = eth_mac_addr, ··· 3161 3175 .ndo_vlan_rx_add_vid = sh_eth_vlan_rx_add_vid, 3162 3176 .ndo_vlan_rx_kill_vid = sh_eth_vlan_rx_kill_vid, 3163 3177 .ndo_tx_timeout = sh_eth_tx_timeout, 3164 - .ndo_do_ioctl = sh_eth_do_ioctl, 3178 + .ndo_do_ioctl = phy_do_ioctl_running, 3165 3179 .ndo_change_mtu = sh_eth_change_mtu, 3166 3180 .ndo_validate_addr = eth_validate_addr, 3167 3181 .ndo_set_mac_address = eth_mac_addr,
+1 -10
drivers/net/ethernet/smsc/smsc911x.c
··· 1943 1943 return 0; 1944 1944 } 1945 1945 1946 - /* Standard ioctls for mii-tool */ 1947 - static int smsc911x_do_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) 1948 - { 1949 - if (!netif_running(dev) || !dev->phydev) 1950 - return -EINVAL; 1951 - 1952 - return phy_mii_ioctl(dev->phydev, ifr, cmd); 1953 - } 1954 - 1955 1946 static void smsc911x_ethtool_getdrvinfo(struct net_device *dev, 1956 1947 struct ethtool_drvinfo *info) 1957 1948 { ··· 2142 2151 .ndo_start_xmit = smsc911x_hard_start_xmit, 2143 2152 .ndo_get_stats = smsc911x_get_stats, 2144 2153 .ndo_set_rx_mode = smsc911x_set_multicast_list, 2145 - .ndo_do_ioctl = smsc911x_do_ioctl, 2154 + .ndo_do_ioctl = phy_do_ioctl_running, 2146 2155 .ndo_validate_addr = eth_validate_addr, 2147 2156 .ndo_set_mac_address = smsc911x_set_mac_address, 2148 2157 #ifdef CONFIG_NET_POLL_CONTROLLER
+1 -10
drivers/net/ethernet/smsc/smsc9420.c
··· 210 210 return -EIO; 211 211 } 212 212 213 - /* Standard ioctls for mii-tool */ 214 - static int smsc9420_do_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) 215 - { 216 - if (!netif_running(dev) || !dev->phydev) 217 - return -EINVAL; 218 - 219 - return phy_mii_ioctl(dev->phydev, ifr, cmd); 220 - } 221 - 222 213 static void smsc9420_ethtool_get_drvinfo(struct net_device *netdev, 223 214 struct ethtool_drvinfo *drvinfo) 224 215 { ··· 1495 1504 .ndo_start_xmit = smsc9420_hard_start_xmit, 1496 1505 .ndo_get_stats = smsc9420_get_stats, 1497 1506 .ndo_set_rx_mode = smsc9420_set_multicast_list, 1498 - .ndo_do_ioctl = smsc9420_do_ioctl, 1507 + .ndo_do_ioctl = phy_do_ioctl_running, 1499 1508 .ndo_validate_addr = eth_validate_addr, 1500 1509 .ndo_set_mac_address = eth_mac_addr, 1501 1510 #ifdef CONFIG_NET_POLL_CONTROLLER
+1 -11
drivers/net/ethernet/ti/cpmac.c
··· 816 816 netif_tx_wake_all_queues(priv->dev); 817 817 } 818 818 819 - static int cpmac_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) 820 - { 821 - if (!(netif_running(dev))) 822 - return -EINVAL; 823 - if (!dev->phydev) 824 - return -EINVAL; 825 - 826 - return phy_mii_ioctl(dev->phydev, ifr, cmd); 827 - } 828 - 829 819 static void cpmac_get_ringparam(struct net_device *dev, 830 820 struct ethtool_ringparam *ring) 831 821 { ··· 1044 1054 .ndo_start_xmit = cpmac_start_xmit, 1045 1055 .ndo_tx_timeout = cpmac_tx_timeout, 1046 1056 .ndo_set_rx_mode = cpmac_set_multicast_list, 1047 - .ndo_do_ioctl = cpmac_ioctl, 1057 + .ndo_do_ioctl = phy_do_ioctl_running, 1048 1058 .ndo_validate_addr = eth_validate_addr, 1049 1059 .ndo_set_mac_address = eth_mac_addr, 1050 1060 };
+1 -11
drivers/net/ethernet/toshiba/tc35815.c
··· 484 484 static struct net_device_stats *tc35815_get_stats(struct net_device *dev); 485 485 static void tc35815_set_multicast_list(struct net_device *dev); 486 486 static void tc35815_tx_timeout(struct net_device *dev, unsigned int txqueue); 487 - static int tc35815_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); 488 487 #ifdef CONFIG_NET_POLL_CONTROLLER 489 488 static void tc35815_poll_controller(struct net_device *dev); 490 489 #endif ··· 750 751 .ndo_get_stats = tc35815_get_stats, 751 752 .ndo_set_rx_mode = tc35815_set_multicast_list, 752 753 .ndo_tx_timeout = tc35815_tx_timeout, 753 - .ndo_do_ioctl = tc35815_ioctl, 754 + .ndo_do_ioctl = phy_do_ioctl_running, 754 755 .ndo_validate_addr = eth_validate_addr, 755 756 .ndo_set_mac_address = eth_mac_addr, 756 757 #ifdef CONFIG_NET_POLL_CONTROLLER ··· 2007 2008 .get_link_ksettings = phy_ethtool_get_link_ksettings, 2008 2009 .set_link_ksettings = phy_ethtool_set_link_ksettings, 2009 2010 }; 2010 - 2011 - static int tc35815_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) 2012 - { 2013 - if (!netif_running(dev)) 2014 - return -EINVAL; 2015 - if (!dev->phydev) 2016 - return -ENODEV; 2017 - return phy_mii_ioctl(dev->phydev, rq, cmd); 2018 - } 2019 2011 2020 2012 static void tc35815_chip_reset(struct net_device *dev) 2021 2013 {
+1 -12
drivers/net/ethernet/xilinx/ll_temac_main.c
··· 1080 1080 } 1081 1081 #endif 1082 1082 1083 - static int temac_ioctl(struct net_device *ndev, struct ifreq *rq, int cmd) 1084 - { 1085 - if (!netif_running(ndev)) 1086 - return -EINVAL; 1087 - 1088 - if (!ndev->phydev) 1089 - return -EINVAL; 1090 - 1091 - return phy_mii_ioctl(ndev->phydev, rq, cmd); 1092 - } 1093 - 1094 1083 static const struct net_device_ops temac_netdev_ops = { 1095 1084 .ndo_open = temac_open, 1096 1085 .ndo_stop = temac_stop, ··· 1087 1098 .ndo_set_rx_mode = temac_set_multicast_list, 1088 1099 .ndo_set_mac_address = temac_set_mac_address, 1089 1100 .ndo_validate_addr = eth_validate_addr, 1090 - .ndo_do_ioctl = temac_ioctl, 1101 + .ndo_do_ioctl = phy_do_ioctl_running, 1091 1102 #ifdef CONFIG_NET_POLL_CONTROLLER 1092 1103 .ndo_poll_controller = temac_poll_controller, 1093 1104 #endif
+1 -12
drivers/net/usb/ax88172a.c
··· 39 39 return 0; 40 40 } 41 41 42 - static int ax88172a_ioctl(struct net_device *net, struct ifreq *rq, int cmd) 43 - { 44 - if (!netif_running(net)) 45 - return -EINVAL; 46 - 47 - if (!net->phydev) 48 - return -ENODEV; 49 - 50 - return phy_mii_ioctl(net->phydev, rq, cmd); 51 - } 52 - 53 42 /* set MAC link settings according to information from phylib */ 54 43 static void ax88172a_adjust_link(struct net_device *netdev) 55 44 { ··· 123 134 .ndo_get_stats64 = usbnet_get_stats64, 124 135 .ndo_set_mac_address = asix_set_mac_address, 125 136 .ndo_validate_addr = eth_validate_addr, 126 - .ndo_do_ioctl = ax88172a_ioctl, 137 + .ndo_do_ioctl = phy_do_ioctl_running, 127 138 .ndo_set_rx_mode = asix_set_multicast, 128 139 }; 129 140
+1 -9
drivers/net/usb/lan78xx.c
··· 1663 1663 .get_regs = lan78xx_get_regs, 1664 1664 }; 1665 1665 1666 - static int lan78xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd) 1667 - { 1668 - if (!netif_running(netdev)) 1669 - return -EINVAL; 1670 - 1671 - return phy_mii_ioctl(netdev->phydev, rq, cmd); 1672 - } 1673 - 1674 1666 static void lan78xx_init_mac_address(struct lan78xx_net *dev) 1675 1667 { 1676 1668 u32 addr_lo, addr_hi; ··· 3668 3676 .ndo_change_mtu = lan78xx_change_mtu, 3669 3677 .ndo_set_mac_address = lan78xx_set_mac_addr, 3670 3678 .ndo_validate_addr = eth_validate_addr, 3671 - .ndo_do_ioctl = lan78xx_ioctl, 3679 + .ndo_do_ioctl = phy_do_ioctl_running, 3672 3680 .ndo_set_rx_mode = lan78xx_set_multicast, 3673 3681 .ndo_set_features = lan78xx_set_features, 3674 3682 .ndo_vlan_rx_add_vid = lan78xx_vlan_rx_add_vid,