Lines Matching refs:interface
73 static int fm10k_setup_all_tx_resources(struct fm10k_intfc *interface) in fm10k_setup_all_tx_resources() argument
77 for (i = 0; i < interface->num_tx_queues; i++) { in fm10k_setup_all_tx_resources()
78 err = fm10k_setup_tx_resources(interface->tx_ring[i]); in fm10k_setup_all_tx_resources()
82 netif_err(interface, probe, interface->netdev, in fm10k_setup_all_tx_resources()
91 fm10k_free_tx_resources(interface->tx_ring[i]); in fm10k_setup_all_tx_resources()
140 static int fm10k_setup_all_rx_resources(struct fm10k_intfc *interface) in fm10k_setup_all_rx_resources() argument
144 for (i = 0; i < interface->num_rx_queues; i++) { in fm10k_setup_all_rx_resources()
145 err = fm10k_setup_rx_resources(interface->rx_ring[i]); in fm10k_setup_all_rx_resources()
149 netif_err(interface, probe, interface->netdev, in fm10k_setup_all_rx_resources()
158 fm10k_free_rx_resources(interface->rx_ring[i]); in fm10k_setup_all_rx_resources()
240 void fm10k_clean_all_tx_rings(struct fm10k_intfc *interface) in fm10k_clean_all_tx_rings() argument
244 for (i = 0; i < interface->num_tx_queues; i++) in fm10k_clean_all_tx_rings()
245 fm10k_clean_tx_ring(interface->tx_ring[i]); in fm10k_clean_all_tx_rings()
248 skb_queue_purge(&interface->ts_tx_skb_queue); in fm10k_clean_all_tx_rings()
257 static void fm10k_free_all_tx_resources(struct fm10k_intfc *interface) in fm10k_free_all_tx_resources() argument
259 int i = interface->num_tx_queues; in fm10k_free_all_tx_resources()
262 fm10k_free_tx_resources(interface->tx_ring[i]); in fm10k_free_all_tx_resources()
333 void fm10k_clean_all_rx_rings(struct fm10k_intfc *interface) in fm10k_clean_all_rx_rings() argument
337 for (i = 0; i < interface->num_rx_queues; i++) in fm10k_clean_all_rx_rings()
338 fm10k_clean_rx_ring(interface->rx_ring[i]); in fm10k_clean_all_rx_rings()
347 static void fm10k_free_all_rx_resources(struct fm10k_intfc *interface) in fm10k_free_all_rx_resources() argument
349 int i = interface->num_rx_queues; in fm10k_free_all_rx_resources()
352 fm10k_free_rx_resources(interface->rx_ring[i]); in fm10k_free_all_rx_resources()
361 static void fm10k_request_glort_range(struct fm10k_intfc *interface) in fm10k_request_glort_range() argument
363 struct fm10k_hw *hw = &interface->hw; in fm10k_request_glort_range()
367 interface->glort = hw->mac.dglort_map & FM10K_DGLORTMAP_NONE; in fm10k_request_glort_range()
368 interface->glort_count = 0; in fm10k_request_glort_range()
380 interface->glort_count = 1; in fm10k_request_glort_range()
381 interface->glort += mask; in fm10k_request_glort_range()
383 interface->glort_count = (mask + 1) / 2; in fm10k_request_glort_range()
384 interface->glort += interface->glort_count; in fm10k_request_glort_range()
386 interface->glort_count = mask - 63; in fm10k_request_glort_range()
387 interface->glort += 64; in fm10k_request_glort_range()
397 static void fm10k_del_vxlan_port_all(struct fm10k_intfc *interface) in fm10k_del_vxlan_port_all() argument
402 vxlan_port = list_first_entry_or_null(&interface->vxlan_port, in fm10k_del_vxlan_port_all()
407 vxlan_port = list_first_entry_or_null(&interface->vxlan_port, in fm10k_del_vxlan_port_all()
419 static void fm10k_restore_vxlan_port(struct fm10k_intfc *interface) in fm10k_restore_vxlan_port() argument
421 struct fm10k_hw *hw = &interface->hw; in fm10k_restore_vxlan_port()
428 vxlan_port = list_first_entry_or_null(&interface->vxlan_port, in fm10k_restore_vxlan_port()
451 struct fm10k_intfc *interface = netdev_priv(dev); in fm10k_add_vxlan_port() local
455 if (interface->hw.mac.type != fm10k_mac_pf) in fm10k_add_vxlan_port()
459 fm10k_vxlan_port_for_each(vxlan_port, interface) { in fm10k_add_vxlan_port()
476 list_add_tail(&vxlan_port->list, &interface->vxlan_port); in fm10k_add_vxlan_port()
478 fm10k_restore_vxlan_port(interface); in fm10k_add_vxlan_port()
494 struct fm10k_intfc *interface = netdev_priv(dev); in fm10k_del_vxlan_port() local
497 if (interface->hw.mac.type != fm10k_mac_pf) in fm10k_del_vxlan_port()
501 fm10k_vxlan_port_for_each(vxlan_port, interface) { in fm10k_del_vxlan_port()
510 fm10k_restore_vxlan_port(interface); in fm10k_del_vxlan_port()
527 struct fm10k_intfc *interface = netdev_priv(netdev); in fm10k_open() local
531 err = fm10k_setup_all_tx_resources(interface); in fm10k_open()
536 err = fm10k_setup_all_rx_resources(interface); in fm10k_open()
541 err = fm10k_qv_request_irq(interface); in fm10k_open()
546 fm10k_request_glort_range(interface); in fm10k_open()
550 interface->num_tx_queues); in fm10k_open()
555 interface->num_rx_queues); in fm10k_open()
564 fm10k_up(interface); in fm10k_open()
569 fm10k_qv_free_irq(interface); in fm10k_open()
571 fm10k_free_all_rx_resources(interface); in fm10k_open()
573 fm10k_free_all_tx_resources(interface); in fm10k_open()
591 struct fm10k_intfc *interface = netdev_priv(netdev); in fm10k_close() local
593 fm10k_down(interface); in fm10k_close()
595 fm10k_qv_free_irq(interface); in fm10k_close()
597 fm10k_del_vxlan_port_all(interface); in fm10k_close()
599 fm10k_free_all_tx_resources(interface); in fm10k_close()
600 fm10k_free_all_rx_resources(interface); in fm10k_close()
607 struct fm10k_intfc *interface = netdev_priv(dev); in fm10k_xmit_frame() local
665 fm10k_ts_tx_enqueue(interface, skb); in fm10k_xmit_frame()
667 if (r_idx >= interface->num_tx_queues) in fm10k_xmit_frame()
668 r_idx %= interface->num_tx_queues; in fm10k_xmit_frame()
670 err = fm10k_xmit_frame_ring(skb, interface->tx_ring[r_idx]); in fm10k_xmit_frame()
691 struct fm10k_intfc *interface = netdev_priv(netdev); in fm10k_tx_timeout() local
696 for (i = 0; i < interface->num_tx_queues; i++) { in fm10k_tx_timeout()
697 struct fm10k_ring *tx_ring = interface->tx_ring[i]; in fm10k_tx_timeout()
704 fm10k_tx_timeout_reset(interface); in fm10k_tx_timeout()
706 netif_info(interface, drv, netdev, in fm10k_tx_timeout()
719 struct fm10k_intfc *interface = netdev_priv(netdev); in fm10k_uc_vlan_unsync() local
720 struct fm10k_hw *hw = &interface->hw; in fm10k_uc_vlan_unsync()
721 u16 glort = interface->glort; in fm10k_uc_vlan_unsync()
722 u16 vid = interface->vid; in fm10k_uc_vlan_unsync()
740 struct fm10k_intfc *interface = netdev_priv(netdev); in fm10k_mc_vlan_unsync() local
741 struct fm10k_hw *hw = &interface->hw; in fm10k_mc_vlan_unsync()
742 u16 glort = interface->glort; in fm10k_mc_vlan_unsync()
743 u16 vid = interface->vid; in fm10k_mc_vlan_unsync()
760 struct fm10k_intfc *interface = netdev_priv(netdev); in fm10k_update_vid() local
761 struct fm10k_hw *hw = &interface->hw; in fm10k_update_vid()
777 set_bit(vid, interface->active_vlans); in fm10k_update_vid()
779 clear_bit(vid, interface->active_vlans); in fm10k_update_vid()
782 for (i = 0; i < interface->num_rx_queues; i++) { in fm10k_update_vid()
783 struct fm10k_ring *rx_ring = interface->rx_ring[i]; in fm10k_update_vid()
786 if (test_bit(rx_vid, interface->active_vlans)) in fm10k_update_vid()
799 if (test_bit(__FM10K_DOWN, &interface->state)) in fm10k_update_vid()
802 fm10k_mbx_lock(interface); in fm10k_update_vid()
812 err = hw->mac.ops.update_uc_addr(hw, interface->glort, hw->mac.addr, in fm10k_update_vid()
818 interface->vid = vid + (set ? VLAN_N_VID : 0); in fm10k_update_vid()
825 fm10k_mbx_unlock(interface); in fm10k_update_vid()
844 static u16 fm10k_find_next_vlan(struct fm10k_intfc *interface, u16 vid) in fm10k_find_next_vlan() argument
846 struct fm10k_hw *hw = &interface->hw; in fm10k_find_next_vlan()
850 vid = find_next_bit(interface->active_vlans, vid_limit, ++vid); in fm10k_find_next_vlan()
855 static void fm10k_clear_unused_vlans(struct fm10k_intfc *interface) in fm10k_clear_unused_vlans() argument
857 struct fm10k_hw *hw = &interface->hw; in fm10k_clear_unused_vlans()
863 prev_vid = vid + 1, vid = fm10k_find_next_vlan(interface, vid)) { in fm10k_clear_unused_vlans()
876 struct fm10k_intfc *interface = netdev_priv(dev); in __fm10k_uc_sync() local
877 struct fm10k_hw *hw = &interface->hw; in __fm10k_uc_sync()
878 u16 vid, glort = interface->glort; in __fm10k_uc_sync()
885 for (vid = hw->mac.default_vid ? fm10k_find_next_vlan(interface, 0) : 0; in __fm10k_uc_sync()
887 vid = fm10k_find_next_vlan(interface, vid)) { in __fm10k_uc_sync()
911 struct fm10k_intfc *interface = netdev_priv(dev); in fm10k_set_mac() local
912 struct fm10k_hw *hw = &interface->hw; in fm10k_set_mac()
921 fm10k_mbx_lock(interface); in fm10k_set_mac()
927 fm10k_mbx_unlock(interface); in fm10k_set_mac()
943 struct fm10k_intfc *interface = netdev_priv(dev); in __fm10k_mc_sync() local
944 struct fm10k_hw *hw = &interface->hw; in __fm10k_mc_sync()
945 u16 vid, glort = interface->glort; in __fm10k_mc_sync()
948 for (vid = hw->mac.default_vid ? fm10k_find_next_vlan(interface, 0) : 0; in __fm10k_mc_sync()
950 vid = fm10k_find_next_vlan(interface, vid)) { in __fm10k_mc_sync()
971 struct fm10k_intfc *interface = netdev_priv(dev); in fm10k_set_rx_mode() local
972 struct fm10k_hw *hw = &interface->hw; in fm10k_set_rx_mode()
985 fm10k_mbx_lock(interface); in fm10k_set_rx_mode()
988 if (interface->xcast_mode != xcast_mode) { in fm10k_set_rx_mode()
992 if (interface->xcast_mode == FM10K_XCAST_MODE_PROMISC) in fm10k_set_rx_mode()
993 fm10k_clear_unused_vlans(interface); in fm10k_set_rx_mode()
996 hw->mac.ops.update_xcast_mode(hw, interface->glort, xcast_mode); in fm10k_set_rx_mode()
999 interface->xcast_mode = xcast_mode; in fm10k_set_rx_mode()
1009 fm10k_mbx_unlock(interface); in fm10k_set_rx_mode()
1012 void fm10k_restore_rx_state(struct fm10k_intfc *interface) in fm10k_restore_rx_state() argument
1014 struct net_device *netdev = interface->netdev; in fm10k_restore_rx_state()
1015 struct fm10k_hw *hw = &interface->hw; in fm10k_restore_rx_state()
1020 glort = interface->glort; in fm10k_restore_rx_state()
1032 fm10k_mbx_lock(interface); in fm10k_restore_rx_state()
1035 hw->mac.ops.update_lport_state(hw, glort, interface->glort_count, true); in fm10k_restore_rx_state()
1045 for (vid = hw->mac.default_vid ? fm10k_find_next_vlan(interface, 0) : 0; in fm10k_restore_rx_state()
1047 vid = fm10k_find_next_vlan(interface, vid)) { in fm10k_restore_rx_state()
1063 fm10k_mbx_unlock(interface); in fm10k_restore_rx_state()
1066 interface->xcast_mode = xcast_mode; in fm10k_restore_rx_state()
1069 fm10k_restore_vxlan_port(interface); in fm10k_restore_rx_state()
1072 void fm10k_reset_rx_state(struct fm10k_intfc *interface) in fm10k_reset_rx_state() argument
1074 struct net_device *netdev = interface->netdev; in fm10k_reset_rx_state()
1075 struct fm10k_hw *hw = &interface->hw; in fm10k_reset_rx_state()
1077 fm10k_mbx_lock(interface); in fm10k_reset_rx_state()
1080 hw->mac.ops.update_lport_state(hw, interface->glort, in fm10k_reset_rx_state()
1081 interface->glort_count, false); in fm10k_reset_rx_state()
1083 fm10k_mbx_unlock(interface); in fm10k_reset_rx_state()
1086 interface->xcast_mode = FM10K_XCAST_MODE_NONE; in fm10k_reset_rx_state()
1104 struct fm10k_intfc *interface = netdev_priv(netdev); in fm10k_get_stats64() local
1111 for (i = 0; i < interface->num_rx_queues; i++) { in fm10k_get_stats64()
1112 ring = ACCESS_ONCE(interface->rx_ring[i]); in fm10k_get_stats64()
1127 for (i = 0; i < interface->num_tx_queues; i++) { in fm10k_get_stats64()
1128 ring = ACCESS_ONCE(interface->tx_ring[i]); in fm10k_get_stats64()
1153 struct fm10k_intfc *interface = netdev_priv(dev); in fm10k_setup_tc() local
1156 if (tc && (interface->hw.mac.type != fm10k_mac_pf)) in fm10k_setup_tc()
1170 fm10k_mbx_free_irq(interface); in fm10k_setup_tc()
1172 fm10k_clear_queueing_scheme(interface); in fm10k_setup_tc()
1178 fm10k_init_queueing_scheme(interface); in fm10k_setup_tc()
1180 fm10k_mbx_request_irq(interface); in fm10k_setup_tc()
1186 interface->flags |= FM10K_FLAG_SWPRI_CONFIG; in fm10k_setup_tc()
1203 static void fm10k_assign_l2_accel(struct fm10k_intfc *interface, in fm10k_assign_l2_accel() argument
1209 for (i = 0; i < interface->num_rx_queues; i++) { in fm10k_assign_l2_accel()
1210 ring = interface->rx_ring[i]; in fm10k_assign_l2_accel()
1214 interface->l2_accel = l2_accel; in fm10k_assign_l2_accel()
1220 struct fm10k_intfc *interface = netdev_priv(dev); in fm10k_dfwd_add_station() local
1221 struct fm10k_l2_accel *l2_accel = interface->l2_accel; in fm10k_dfwd_add_station()
1224 struct fm10k_hw *hw = &interface->hw; in fm10k_dfwd_add_station()
1231 if (interface->glort_count < 7) in fm10k_dfwd_add_station()
1240 l2_accel->dglort = interface->glort; in fm10k_dfwd_add_station()
1243 fm10k_assign_l2_accel(interface, l2_accel); in fm10k_dfwd_add_station()
1246 (l2_accel->count == (interface->glort_count - 1))) { in fm10k_dfwd_add_station()
1264 fm10k_assign_l2_accel(interface, l2_accel); in fm10k_dfwd_add_station()
1281 dglort.rss_l = fls(interface->ring_feature[RING_F_RSS].mask); in fm10k_dfwd_add_station()
1282 dglort.pc_l = fls(interface->ring_feature[RING_F_QOS].mask); in fm10k_dfwd_add_station()
1283 dglort.glort = interface->glort; in fm10k_dfwd_add_station()
1288 fm10k_mbx_lock(interface); in fm10k_dfwd_add_station()
1294 fm10k_mbx_unlock(interface); in fm10k_dfwd_add_station()
1301 struct fm10k_intfc *interface = netdev_priv(dev); in fm10k_dfwd_del_station() local
1302 struct fm10k_l2_accel *l2_accel = ACCESS_ONCE(interface->l2_accel); in fm10k_dfwd_del_station()
1304 struct fm10k_hw *hw = &interface->hw; in fm10k_dfwd_del_station()
1323 fm10k_mbx_lock(interface); in fm10k_dfwd_del_station()
1329 fm10k_mbx_unlock(interface); in fm10k_dfwd_del_station()
1338 dglort.rss_l = fls(interface->ring_feature[RING_F_RSS].mask); in fm10k_dfwd_del_station()
1339 dglort.pc_l = fls(interface->ring_feature[RING_F_QOS].mask); in fm10k_dfwd_del_station()
1340 dglort.glort = interface->glort; in fm10k_dfwd_del_station()
1346 fm10k_assign_l2_accel(interface, NULL); in fm10k_dfwd_del_station()
1393 struct fm10k_intfc *interface; in fm10k_alloc_netdev() local
1405 interface = netdev_priv(dev); in fm10k_alloc_netdev()
1406 interface->msg_enable = (1 << DEFAULT_DEBUG_LEVEL_SHIFT) - 1; in fm10k_alloc_netdev()