Lines Matching refs:vf_netdev

66 	struct net_device *vf_netdev = rtnl_dereference(ndev_ctx->vf_netdev);  in netvsc_change_rx_flags()  local
69 if (!vf_netdev) in netvsc_change_rx_flags()
74 dev_set_promiscuity(vf_netdev, inc); in netvsc_change_rx_flags()
79 dev_set_allmulti(vf_netdev, inc); in netvsc_change_rx_flags()
86 struct net_device *vf_netdev; in netvsc_set_rx_mode() local
90 vf_netdev = rcu_dereference(ndev_ctx->vf_netdev); in netvsc_set_rx_mode()
91 if (vf_netdev) { in netvsc_set_rx_mode()
92 dev_uc_sync(vf_netdev, net); in netvsc_set_rx_mode()
93 dev_mc_sync(vf_netdev, net); in netvsc_set_rx_mode()
114 struct net_device *vf_netdev = rtnl_dereference(ndev_ctx->vf_netdev); in netvsc_open() local
134 if (vf_netdev) { in netvsc_open()
139 ret = dev_open(vf_netdev, NULL); in netvsc_open()
143 vf_netdev->name, ret); in netvsc_open()
200 struct net_device *vf_netdev in netvsc_close() local
201 = rtnl_dereference(net_device_ctx->vf_netdev); in netvsc_close()
221 if (vf_netdev) in netvsc_close()
222 dev_close(vf_netdev); in netvsc_close()
347 struct net_device *vf_netdev; in netvsc_select_queue() local
351 vf_netdev = rcu_dereference(ndc->vf_netdev); in netvsc_select_queue()
352 if (vf_netdev) { in netvsc_select_queue()
353 const struct net_device_ops *vf_ops = vf_netdev->netdev_ops; in netvsc_select_queue()
356 txq = vf_ops->ndo_select_queue(vf_netdev, skb, sb_dev); in netvsc_select_queue()
358 txq = netdev_pick_tx(vf_netdev, skb, NULL); in netvsc_select_queue()
497 static int netvsc_vf_xmit(struct net_device *net, struct net_device *vf_netdev, in netvsc_vf_xmit() argument
504 skb->dev = vf_netdev; in netvsc_vf_xmit()
530 struct net_device *vf_netdev; in netvsc_xmit() local
539 vf_netdev = rcu_dereference_bh(net_device_ctx->vf_netdev); in netvsc_xmit()
540 if (vf_netdev && netif_running(vf_netdev) && in netvsc_xmit()
541 netif_carrier_ok(vf_netdev) && !netpoll_tx_running(net)) in netvsc_xmit()
542 return netvsc_vf_xmit(net, vf_netdev, skb); in netvsc_xmit()
1191 struct net_device *vf_netdev; in netvsc_get_link_ksettings() local
1193 vf_netdev = rtnl_dereference(ndc->vf_netdev); in netvsc_get_link_ksettings()
1195 if (vf_netdev) in netvsc_get_link_ksettings()
1196 return __ethtool_get_link_ksettings(vf_netdev, cmd); in netvsc_get_link_ksettings()
1209 struct net_device *vf_netdev = rtnl_dereference(ndc->vf_netdev); in netvsc_set_link_ksettings() local
1211 if (vf_netdev) { in netvsc_set_link_ksettings()
1212 if (!vf_netdev->ethtool_ops->set_link_ksettings) in netvsc_set_link_ksettings()
1215 return vf_netdev->ethtool_ops->set_link_ksettings(vf_netdev, in netvsc_set_link_ksettings()
1226 struct net_device *vf_netdev = rtnl_dereference(ndevctx->vf_netdev); in netvsc_change_mtu() local
1241 if (vf_netdev) { in netvsc_change_mtu()
1242 ret = dev_set_mtu(vf_netdev, mtu); in netvsc_change_mtu()
1263 if (vf_netdev) in netvsc_change_mtu()
1264 dev_set_mtu(vf_netdev, orig_mtu); in netvsc_change_mtu()
1417 struct net_device *vf_netdev = rtnl_dereference(ndc->vf_netdev); in netvsc_set_mac_addr() local
1429 if (vf_netdev) { in netvsc_set_mac_addr()
1430 err = dev_set_mac_address(vf_netdev, addr, NULL); in netvsc_set_mac_addr()
1438 } else if (vf_netdev) { in netvsc_set_mac_addr()
1441 dev_set_mac_address(vf_netdev, addr, NULL); in netvsc_set_mac_addr()
1935 struct net_device *vf_netdev = rtnl_dereference(ndevctx->vf_netdev); in netvsc_set_features() local
1963 if (!vf_netdev) in netvsc_set_features()
1966 vf_netdev->wanted_features = features; in netvsc_set_features()
1967 netdev_update_features(vf_netdev); in netvsc_set_features()
2152 static struct net_device *get_netvsc_byref(struct net_device *vf_netdev) in get_netvsc_byref() argument
2157 dev = netdev_master_upper_dev_get(vf_netdev); in get_netvsc_byref()
2196 static int netvsc_vf_join(struct net_device *vf_netdev, in netvsc_vf_join() argument
2202 ret = netdev_rx_handler_register(vf_netdev, in netvsc_vf_join()
2205 netdev_err(vf_netdev, in netvsc_vf_join()
2211 ret = netdev_master_upper_dev_link(vf_netdev, ndev, in netvsc_vf_join()
2214 netdev_err(vf_netdev, in netvsc_vf_join()
2221 vf_netdev->flags |= IFF_SLAVE; in netvsc_vf_join()
2225 call_netdevice_notifiers(NETDEV_JOIN, vf_netdev); in netvsc_vf_join()
2227 netdev_info(vf_netdev, "joined to %s\n", ndev->name); in netvsc_vf_join()
2231 netdev_rx_handler_unregister(vf_netdev); in netvsc_vf_join()
2237 struct net_device *vf_netdev) in __netvsc_vf_setup() argument
2242 ret = dev_set_mtu(vf_netdev, ndev->mtu); in __netvsc_vf_setup()
2244 netdev_warn(vf_netdev, in __netvsc_vf_setup()
2248 dev_change_flags(vf_netdev, ndev->flags | IFF_SLAVE, NULL); in __netvsc_vf_setup()
2252 dev_uc_sync(vf_netdev, ndev); in __netvsc_vf_setup()
2253 dev_mc_sync(vf_netdev, ndev); in __netvsc_vf_setup()
2257 ret = dev_open(vf_netdev, NULL); in __netvsc_vf_setup()
2259 netdev_warn(vf_netdev, in __netvsc_vf_setup()
2272 struct net_device *vf_netdev; in netvsc_vf_setup() local
2279 vf_netdev = rtnl_dereference(ndev_ctx->vf_netdev); in netvsc_vf_setup()
2280 if (vf_netdev) in netvsc_vf_setup()
2281 __netvsc_vf_setup(ndev, vf_netdev); in netvsc_vf_setup()
2289 static struct net_device *get_netvsc_byslot(const struct net_device *vf_netdev) in get_netvsc_byslot() argument
2291 struct device *parent = vf_netdev->dev.parent; in get_netvsc_byslot()
2302 netdev_notice(vf_netdev, "no PCI slot information\n"); in get_netvsc_byslot()
2307 netdev_notice(vf_netdev, "Invalid vf serial:%s\n", in get_netvsc_byslot()
2325 if (ether_addr_equal(vf_netdev->perm_addr, ndev->perm_addr)) { in get_netvsc_byslot()
2326 netdev_notice(vf_netdev, in get_netvsc_byslot()
2332 netdev_notice(vf_netdev, in get_netvsc_byslot()
2337 static int netvsc_register_vf(struct net_device *vf_netdev) in netvsc_register_vf() argument
2345 if (vf_netdev->addr_len != ETH_ALEN) in netvsc_register_vf()
2348 ndev = get_netvsc_byslot(vf_netdev); in netvsc_register_vf()
2354 if (!netvsc_dev || rtnl_dereference(net_device_ctx->vf_netdev)) in netvsc_register_vf()
2361 if (!net_eq(dev_net(ndev), dev_net(vf_netdev))) { in netvsc_register_vf()
2362 ret = dev_change_net_namespace(vf_netdev, in netvsc_register_vf()
2365 netdev_err(vf_netdev, in netvsc_register_vf()
2369 netdev_info(vf_netdev, in netvsc_register_vf()
2375 netdev_info(ndev, "VF registering: %s\n", vf_netdev->name); in netvsc_register_vf()
2377 if (netvsc_vf_join(vf_netdev, ndev) != 0) in netvsc_register_vf()
2380 dev_hold(vf_netdev); in netvsc_register_vf()
2381 rcu_assign_pointer(net_device_ctx->vf_netdev, vf_netdev); in netvsc_register_vf()
2383 vf_netdev->wanted_features = ndev->features; in netvsc_register_vf()
2384 netdev_update_features(vf_netdev); in netvsc_register_vf()
2387 netvsc_vf_setxdp(vf_netdev, prog); in netvsc_register_vf()
2402 static int netvsc_vf_changed(struct net_device *vf_netdev) in netvsc_vf_changed() argument
2407 bool vf_is_up = netif_running(vf_netdev); in netvsc_vf_changed()
2409 ndev = get_netvsc_byref(vf_netdev); in netvsc_vf_changed()
2429 vf_is_up ? "to" : "from", vf_netdev->name); in netvsc_vf_changed()
2434 static int netvsc_unregister_vf(struct net_device *vf_netdev) in netvsc_unregister_vf() argument
2439 ndev = get_netvsc_byref(vf_netdev); in netvsc_unregister_vf()
2446 netdev_info(ndev, "VF unregistering: %s\n", vf_netdev->name); in netvsc_unregister_vf()
2448 netvsc_vf_setxdp(vf_netdev, NULL); in netvsc_unregister_vf()
2451 netdev_rx_handler_unregister(vf_netdev); in netvsc_unregister_vf()
2452 netdev_upper_dev_unlink(vf_netdev, ndev); in netvsc_unregister_vf()
2453 RCU_INIT_POINTER(net_device_ctx->vf_netdev, NULL); in netvsc_unregister_vf()
2454 dev_put(vf_netdev); in netvsc_unregister_vf()
2587 struct net_device *vf_netdev, *net; in netvsc_remove() local
2611 vf_netdev = rtnl_dereference(ndev_ctx->vf_netdev); in netvsc_remove()
2612 if (vf_netdev) in netvsc_remove()
2613 netvsc_unregister_vf(vf_netdev); in netvsc_remove()