Lines Matching refs:netdev
71 static int fbnic_open(struct net_device *netdev) in fbnic_open() argument
73 struct fbnic_net *fbn = netdev_priv(netdev); in fbnic_open()
85 static int fbnic_stop(struct net_device *netdev) in fbnic_stop() argument
87 struct fbnic_net *fbn = netdev_priv(netdev); in fbnic_stop()
104 static int fbnic_uc_sync(struct net_device *netdev, const unsigned char *addr) in fbnic_uc_sync() argument
106 struct fbnic_net *fbn = netdev_priv(netdev); in fbnic_uc_sync()
122 static int fbnic_uc_unsync(struct net_device *netdev, const unsigned char *addr) in fbnic_uc_unsync() argument
124 struct fbnic_net *fbn = netdev_priv(netdev); in fbnic_uc_unsync()
145 static int fbnic_mc_sync(struct net_device *netdev, const unsigned char *addr) in fbnic_mc_sync() argument
147 struct fbnic_net *fbn = netdev_priv(netdev); in fbnic_mc_sync()
163 static int fbnic_mc_unsync(struct net_device *netdev, const unsigned char *addr) in fbnic_mc_unsync() argument
165 struct fbnic_net *fbn = netdev_priv(netdev); in fbnic_mc_unsync()
191 struct net_device *netdev = fbd->netdev; in __fbnic_set_rx_mode() local
197 if (!ether_addr_equal(mac_addr->value.addr8, netdev->dev_addr) || in __fbnic_set_rx_mode()
199 ether_addr_copy(mac_addr->value.addr8, netdev->dev_addr); in __fbnic_set_rx_mode()
206 if (netdev->flags & IFF_BROADCAST) { in __fbnic_set_rx_mode()
218 err = __hw_addr_sync_dev(uc, netdev, fbnic_uc_sync, fbnic_uc_unsync); in __fbnic_set_rx_mode()
221 err = __hw_addr_sync_dev(mc, netdev, fbnic_mc_sync, fbnic_mc_unsync); in __fbnic_set_rx_mode()
225 uc_promisc |= !!(netdev->flags & IFF_PROMISC); in __fbnic_set_rx_mode()
226 mc_promisc |= !!(netdev->flags & IFF_ALLMULTI) || uc_promisc; in __fbnic_set_rx_mode()
243 static void fbnic_set_rx_mode(struct net_device *netdev, in fbnic_set_rx_mode() argument
247 struct fbnic_net *fbn = netdev_priv(netdev); in fbnic_set_rx_mode()
251 if (netif_running(netdev)) in fbnic_set_rx_mode()
255 static int fbnic_set_mac(struct net_device *netdev, void *p) in fbnic_set_mac() argument
257 struct fbnic_net *fbn = netdev_priv(netdev); in fbnic_set_mac()
263 eth_hw_addr_set(netdev, addr->sa_data); in fbnic_set_mac()
265 if (netif_running(netdev)) in fbnic_set_mac()
266 __fbnic_set_rx_mode(fbn->fbd, &netdev->uc, &netdev->mc); in fbnic_set_mac()
290 struct net_device *netdev = fbd->netdev; in fbnic_clear_rx_mode() local
311 __dev_uc_unsync(netdev, NULL); in fbnic_clear_rx_mode()
312 __dev_mc_unsync(netdev, NULL); in fbnic_clear_rx_mode()
315 static int fbnic_hwtstamp_get(struct net_device *netdev, in fbnic_hwtstamp_get() argument
318 struct fbnic_net *fbn = netdev_priv(netdev); in fbnic_hwtstamp_get()
325 static int fbnic_hwtstamp_set(struct net_device *netdev, in fbnic_hwtstamp_set() argument
329 struct fbnic_net *fbn = netdev_priv(netdev); in fbnic_hwtstamp_set()
374 if (old_rx_filter != config->rx_filter && netif_running(fbn->netdev)) { in fbnic_hwtstamp_set()
530 static int fbnic_bpf(struct net_device *netdev, struct netdev_bpf *bpf) in fbnic_bpf() argument
533 struct fbnic_net *fbn = netdev_priv(netdev); in fbnic_bpf()
538 if (fbnic_check_split_frames(prog, netdev->mtu, in fbnic_bpf()
724 fbnic_phylink_destroy(fbd->netdev); in fbnic_netdev_free()
726 free_netdev(fbd->netdev); in fbnic_netdev_free()
727 fbd->netdev = NULL; in fbnic_netdev_free()
741 struct net_device *netdev; in fbnic_netdev_alloc() local
745 netdev = alloc_etherdev_mq(sizeof(*fbn), FBNIC_MAX_RXQS); in fbnic_netdev_alloc()
746 if (!netdev) in fbnic_netdev_alloc()
749 SET_NETDEV_DEV(netdev, fbd->dev); in fbnic_netdev_alloc()
750 fbd->netdev = netdev; in fbnic_netdev_alloc()
752 netdev->netdev_ops = &fbnic_netdev_ops; in fbnic_netdev_alloc()
753 netdev->stat_ops = &fbnic_stat_ops; in fbnic_netdev_alloc()
754 netdev->queue_mgmt_ops = &fbnic_queue_mgmt_ops; in fbnic_netdev_alloc()
755 netdev->netmem_tx = true; in fbnic_netdev_alloc()
757 fbnic_set_ethtool_ops(netdev); in fbnic_netdev_alloc()
759 fbn = netdev_priv(netdev); in fbnic_netdev_alloc()
761 fbn->netdev = netdev; in fbnic_netdev_alloc()
774 netdev->cfg->hds_thresh = FBNIC_HDS_THRESH_DEFAULT; in fbnic_netdev_alloc()
787 netdev->priv_flags |= IFF_UNICAST_FLT; in fbnic_netdev_alloc()
789 netdev->gso_partial_features = in fbnic_netdev_alloc()
796 netdev->features |= in fbnic_netdev_alloc()
797 netdev->gso_partial_features | in fbnic_netdev_alloc()
809 netdev->hw_features |= netdev->features; in fbnic_netdev_alloc()
810 netdev->vlan_features |= netdev->features; in fbnic_netdev_alloc()
811 netdev->hw_enc_features |= netdev->features; in fbnic_netdev_alloc()
812 netdev->features |= NETIF_F_NTUPLE; in fbnic_netdev_alloc()
814 netdev->xdp_features = NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_RX_SG; in fbnic_netdev_alloc()
816 netdev->min_mtu = IPV6_MIN_MTU; in fbnic_netdev_alloc()
817 netdev->max_mtu = FBNIC_MAX_JUMBO_FRAME_SIZE - ETH_HLEN; in fbnic_netdev_alloc()
822 netdev->ethtool->wol_enabled = true; in fbnic_netdev_alloc()
824 netif_carrier_off(netdev); in fbnic_netdev_alloc()
826 netif_tx_stop_all_queues(netdev); in fbnic_netdev_alloc()
828 if (fbnic_phylink_create(netdev)) { in fbnic_netdev_alloc()
829 free_netdev(netdev); in fbnic_netdev_alloc()
830 fbd->netdev = NULL; in fbnic_netdev_alloc()
834 return netdev; in fbnic_netdev_alloc()
857 int fbnic_netdev_register(struct net_device *netdev) in fbnic_netdev_register() argument
859 struct fbnic_net *fbn = netdev_priv(netdev); in fbnic_netdev_register()
867 ether_addr_copy(netdev->perm_addr, addr); in fbnic_netdev_register()
868 eth_hw_addr_set(netdev, addr); in fbnic_netdev_register()
878 return register_netdev(netdev); in fbnic_netdev_register()
881 void fbnic_netdev_unregister(struct net_device *netdev) in fbnic_netdev_unregister() argument
883 unregister_netdev(netdev); in fbnic_netdev_unregister()