vf_netdev 949 drivers/net/hyperv/hyperv_net.h struct net_device __rcu *vf_netdev; vf_netdev 65 drivers/net/hyperv/netvsc_drv.c struct net_device *vf_netdev = rtnl_dereference(ndev_ctx->vf_netdev); vf_netdev 68 drivers/net/hyperv/netvsc_drv.c if (!vf_netdev) vf_netdev 73 drivers/net/hyperv/netvsc_drv.c dev_set_promiscuity(vf_netdev, inc); vf_netdev 78 drivers/net/hyperv/netvsc_drv.c dev_set_allmulti(vf_netdev, inc); vf_netdev 85 drivers/net/hyperv/netvsc_drv.c struct net_device *vf_netdev; vf_netdev 89 drivers/net/hyperv/netvsc_drv.c vf_netdev = rcu_dereference(ndev_ctx->vf_netdev); vf_netdev 90 drivers/net/hyperv/netvsc_drv.c if (vf_netdev) { vf_netdev 91 drivers/net/hyperv/netvsc_drv.c dev_uc_sync(vf_netdev, net); vf_netdev 92 drivers/net/hyperv/netvsc_drv.c dev_mc_sync(vf_netdev, net); vf_netdev 113 drivers/net/hyperv/netvsc_drv.c struct net_device *vf_netdev = rtnl_dereference(ndev_ctx->vf_netdev); vf_netdev 133 drivers/net/hyperv/netvsc_drv.c if (vf_netdev) { vf_netdev 138 drivers/net/hyperv/netvsc_drv.c ret = dev_open(vf_netdev, NULL); vf_netdev 142 drivers/net/hyperv/netvsc_drv.c vf_netdev->name, ret); vf_netdev 199 drivers/net/hyperv/netvsc_drv.c struct net_device *vf_netdev vf_netdev 200 drivers/net/hyperv/netvsc_drv.c = rtnl_dereference(net_device_ctx->vf_netdev); vf_netdev 220 drivers/net/hyperv/netvsc_drv.c if (vf_netdev) vf_netdev 221 drivers/net/hyperv/netvsc_drv.c dev_close(vf_netdev); vf_netdev 346 drivers/net/hyperv/netvsc_drv.c struct net_device *vf_netdev; vf_netdev 350 drivers/net/hyperv/netvsc_drv.c vf_netdev = rcu_dereference(ndc->vf_netdev); vf_netdev 351 drivers/net/hyperv/netvsc_drv.c if (vf_netdev) { vf_netdev 352 drivers/net/hyperv/netvsc_drv.c const struct net_device_ops *vf_ops = vf_netdev->netdev_ops; vf_netdev 355 drivers/net/hyperv/netvsc_drv.c txq = vf_ops->ndo_select_queue(vf_netdev, skb, sb_dev); vf_netdev 357 drivers/net/hyperv/netvsc_drv.c txq = netdev_pick_tx(vf_netdev, skb, NULL); vf_netdev 496 drivers/net/hyperv/netvsc_drv.c static int netvsc_vf_xmit(struct net_device *net, struct net_device *vf_netdev, vf_netdev 503 drivers/net/hyperv/netvsc_drv.c skb->dev = vf_netdev; vf_netdev 529 drivers/net/hyperv/netvsc_drv.c struct net_device *vf_netdev; vf_netdev 537 drivers/net/hyperv/netvsc_drv.c vf_netdev = rcu_dereference_bh(net_device_ctx->vf_netdev); vf_netdev 538 drivers/net/hyperv/netvsc_drv.c if (vf_netdev && netif_running(vf_netdev) && vf_netdev 540 drivers/net/hyperv/netvsc_drv.c return netvsc_vf_xmit(net, vf_netdev, skb); vf_netdev 1112 drivers/net/hyperv/netvsc_drv.c struct net_device *vf_netdev = rtnl_dereference(ndevctx->vf_netdev); vf_netdev 1127 drivers/net/hyperv/netvsc_drv.c if (vf_netdev) { vf_netdev 1128 drivers/net/hyperv/netvsc_drv.c ret = dev_set_mtu(vf_netdev, mtu); vf_netdev 1149 drivers/net/hyperv/netvsc_drv.c if (vf_netdev) vf_netdev 1150 drivers/net/hyperv/netvsc_drv.c dev_set_mtu(vf_netdev, orig_mtu); vf_netdev 1303 drivers/net/hyperv/netvsc_drv.c struct net_device *vf_netdev = rtnl_dereference(ndc->vf_netdev); vf_netdev 1315 drivers/net/hyperv/netvsc_drv.c if (vf_netdev) { vf_netdev 1316 drivers/net/hyperv/netvsc_drv.c err = dev_set_mac_address(vf_netdev, addr, NULL); vf_netdev 1324 drivers/net/hyperv/netvsc_drv.c } else if (vf_netdev) { vf_netdev 1327 drivers/net/hyperv/netvsc_drv.c dev_set_mac_address(vf_netdev, addr, NULL); vf_netdev 1795 drivers/net/hyperv/netvsc_drv.c struct net_device *vf_netdev = rtnl_dereference(ndevctx->vf_netdev); vf_netdev 1823 drivers/net/hyperv/netvsc_drv.c if (!vf_netdev) vf_netdev 1826 drivers/net/hyperv/netvsc_drv.c vf_netdev->wanted_features = features; vf_netdev 1827 drivers/net/hyperv/netvsc_drv.c netdev_update_features(vf_netdev); vf_netdev 1991 drivers/net/hyperv/netvsc_drv.c static struct net_device *get_netvsc_byref(struct net_device *vf_netdev) vf_netdev 1996 drivers/net/hyperv/netvsc_drv.c dev = netdev_master_upper_dev_get(vf_netdev); vf_netdev 2035 drivers/net/hyperv/netvsc_drv.c static int netvsc_vf_join(struct net_device *vf_netdev, vf_netdev 2041 drivers/net/hyperv/netvsc_drv.c ret = netdev_rx_handler_register(vf_netdev, vf_netdev 2044 drivers/net/hyperv/netvsc_drv.c netdev_err(vf_netdev, vf_netdev 2050 drivers/net/hyperv/netvsc_drv.c ret = netdev_master_upper_dev_link(vf_netdev, ndev, vf_netdev 2053 drivers/net/hyperv/netvsc_drv.c netdev_err(vf_netdev, vf_netdev 2060 drivers/net/hyperv/netvsc_drv.c vf_netdev->flags |= IFF_SLAVE; vf_netdev 2064 drivers/net/hyperv/netvsc_drv.c call_netdevice_notifiers(NETDEV_JOIN, vf_netdev); vf_netdev 2066 drivers/net/hyperv/netvsc_drv.c netdev_info(vf_netdev, "joined to %s\n", ndev->name); vf_netdev 2070 drivers/net/hyperv/netvsc_drv.c netdev_rx_handler_unregister(vf_netdev); vf_netdev 2076 drivers/net/hyperv/netvsc_drv.c struct net_device *vf_netdev) vf_netdev 2081 drivers/net/hyperv/netvsc_drv.c ret = dev_set_mtu(vf_netdev, ndev->mtu); vf_netdev 2083 drivers/net/hyperv/netvsc_drv.c netdev_warn(vf_netdev, vf_netdev 2087 drivers/net/hyperv/netvsc_drv.c dev_change_flags(vf_netdev, ndev->flags | IFF_SLAVE, NULL); vf_netdev 2091 drivers/net/hyperv/netvsc_drv.c dev_uc_sync(vf_netdev, ndev); vf_netdev 2092 drivers/net/hyperv/netvsc_drv.c dev_mc_sync(vf_netdev, ndev); vf_netdev 2096 drivers/net/hyperv/netvsc_drv.c ret = dev_open(vf_netdev, NULL); vf_netdev 2098 drivers/net/hyperv/netvsc_drv.c netdev_warn(vf_netdev, vf_netdev 2111 drivers/net/hyperv/netvsc_drv.c struct net_device *vf_netdev; vf_netdev 2118 drivers/net/hyperv/netvsc_drv.c vf_netdev = rtnl_dereference(ndev_ctx->vf_netdev); vf_netdev 2119 drivers/net/hyperv/netvsc_drv.c if (vf_netdev) vf_netdev 2120 drivers/net/hyperv/netvsc_drv.c __netvsc_vf_setup(ndev, vf_netdev); vf_netdev 2128 drivers/net/hyperv/netvsc_drv.c static struct net_device *get_netvsc_byslot(const struct net_device *vf_netdev) vf_netdev 2130 drivers/net/hyperv/netvsc_drv.c struct device *parent = vf_netdev->dev.parent; vf_netdev 2140 drivers/net/hyperv/netvsc_drv.c netdev_notice(vf_netdev, "no PCI slot information\n"); vf_netdev 2145 drivers/net/hyperv/netvsc_drv.c netdev_notice(vf_netdev, "Invalid vf serial:%s\n", vf_netdev 2158 drivers/net/hyperv/netvsc_drv.c netdev_notice(vf_netdev, vf_netdev 2163 drivers/net/hyperv/netvsc_drv.c static int netvsc_register_vf(struct net_device *vf_netdev) vf_netdev 2170 drivers/net/hyperv/netvsc_drv.c if (vf_netdev->addr_len != ETH_ALEN) vf_netdev 2173 drivers/net/hyperv/netvsc_drv.c ndev = get_netvsc_byslot(vf_netdev); vf_netdev 2179 drivers/net/hyperv/netvsc_drv.c if (!netvsc_dev || rtnl_dereference(net_device_ctx->vf_netdev)) vf_netdev 2186 drivers/net/hyperv/netvsc_drv.c if (!net_eq(dev_net(ndev), dev_net(vf_netdev))) { vf_netdev 2187 drivers/net/hyperv/netvsc_drv.c ret = dev_change_net_namespace(vf_netdev, vf_netdev 2190 drivers/net/hyperv/netvsc_drv.c netdev_err(vf_netdev, vf_netdev 2194 drivers/net/hyperv/netvsc_drv.c netdev_info(vf_netdev, vf_netdev 2200 drivers/net/hyperv/netvsc_drv.c netdev_info(ndev, "VF registering: %s\n", vf_netdev->name); vf_netdev 2202 drivers/net/hyperv/netvsc_drv.c if (netvsc_vf_join(vf_netdev, ndev) != 0) vf_netdev 2205 drivers/net/hyperv/netvsc_drv.c dev_hold(vf_netdev); vf_netdev 2206 drivers/net/hyperv/netvsc_drv.c rcu_assign_pointer(net_device_ctx->vf_netdev, vf_netdev); vf_netdev 2208 drivers/net/hyperv/netvsc_drv.c vf_netdev->wanted_features = ndev->features; vf_netdev 2209 drivers/net/hyperv/netvsc_drv.c netdev_update_features(vf_netdev); vf_netdev 2215 drivers/net/hyperv/netvsc_drv.c static int netvsc_vf_changed(struct net_device *vf_netdev) vf_netdev 2220 drivers/net/hyperv/netvsc_drv.c bool vf_is_up = netif_running(vf_netdev); vf_netdev 2222 drivers/net/hyperv/netvsc_drv.c ndev = get_netvsc_byref(vf_netdev); vf_netdev 2233 drivers/net/hyperv/netvsc_drv.c vf_is_up ? "to" : "from", vf_netdev->name); vf_netdev 2238 drivers/net/hyperv/netvsc_drv.c static int netvsc_unregister_vf(struct net_device *vf_netdev) vf_netdev 2243 drivers/net/hyperv/netvsc_drv.c ndev = get_netvsc_byref(vf_netdev); vf_netdev 2250 drivers/net/hyperv/netvsc_drv.c netdev_info(ndev, "VF unregistering: %s\n", vf_netdev->name); vf_netdev 2252 drivers/net/hyperv/netvsc_drv.c netdev_rx_handler_unregister(vf_netdev); vf_netdev 2253 drivers/net/hyperv/netvsc_drv.c netdev_upper_dev_unlink(vf_netdev, ndev); vf_netdev 2254 drivers/net/hyperv/netvsc_drv.c RCU_INIT_POINTER(net_device_ctx->vf_netdev, NULL); vf_netdev 2255 drivers/net/hyperv/netvsc_drv.c dev_put(vf_netdev); vf_netdev 2385 drivers/net/hyperv/netvsc_drv.c struct net_device *vf_netdev, *net; vf_netdev 2407 drivers/net/hyperv/netvsc_drv.c vf_netdev = rtnl_dereference(ndev_ctx->vf_netdev); vf_netdev 2408 drivers/net/hyperv/netvsc_drv.c if (vf_netdev) vf_netdev 2409 drivers/net/hyperv/netvsc_drv.c netvsc_unregister_vf(vf_netdev);