Lines Matching refs:interface

55 static int fm10k_setup_all_tx_resources(struct fm10k_intfc *interface)  in fm10k_setup_all_tx_resources()  argument
59 for (i = 0; i < interface->num_tx_queues; i++) { in fm10k_setup_all_tx_resources()
60 err = fm10k_setup_tx_resources(interface->tx_ring[i]); in fm10k_setup_all_tx_resources()
64 netif_err(interface, probe, interface->netdev, in fm10k_setup_all_tx_resources()
73 fm10k_free_tx_resources(interface->tx_ring[i]); in fm10k_setup_all_tx_resources()
122 static int fm10k_setup_all_rx_resources(struct fm10k_intfc *interface) in fm10k_setup_all_rx_resources() argument
126 for (i = 0; i < interface->num_rx_queues; i++) { in fm10k_setup_all_rx_resources()
127 err = fm10k_setup_rx_resources(interface->rx_ring[i]); in fm10k_setup_all_rx_resources()
131 netif_err(interface, probe, interface->netdev, in fm10k_setup_all_rx_resources()
140 fm10k_free_rx_resources(interface->rx_ring[i]); in fm10k_setup_all_rx_resources()
222 void fm10k_clean_all_tx_rings(struct fm10k_intfc *interface) in fm10k_clean_all_tx_rings() argument
226 for (i = 0; i < interface->num_tx_queues; i++) in fm10k_clean_all_tx_rings()
227 fm10k_clean_tx_ring(interface->tx_ring[i]); in fm10k_clean_all_tx_rings()
236 static void fm10k_free_all_tx_resources(struct fm10k_intfc *interface) in fm10k_free_all_tx_resources() argument
238 int i = interface->num_tx_queues; in fm10k_free_all_tx_resources()
241 fm10k_free_tx_resources(interface->tx_ring[i]); in fm10k_free_all_tx_resources()
312 void fm10k_clean_all_rx_rings(struct fm10k_intfc *interface) in fm10k_clean_all_rx_rings() argument
316 for (i = 0; i < interface->num_rx_queues; i++) in fm10k_clean_all_rx_rings()
317 fm10k_clean_rx_ring(interface->rx_ring[i]); in fm10k_clean_all_rx_rings()
326 static void fm10k_free_all_rx_resources(struct fm10k_intfc *interface) in fm10k_free_all_rx_resources() argument
328 int i = interface->num_rx_queues; in fm10k_free_all_rx_resources()
331 fm10k_free_rx_resources(interface->rx_ring[i]); in fm10k_free_all_rx_resources()
340 static void fm10k_request_glort_range(struct fm10k_intfc *interface) in fm10k_request_glort_range() argument
342 struct fm10k_hw *hw = &interface->hw; in fm10k_request_glort_range()
346 interface->glort = hw->mac.dglort_map & FM10K_DGLORTMAP_NONE; in fm10k_request_glort_range()
347 interface->glort_count = 0; in fm10k_request_glort_range()
359 interface->glort_count = 1; in fm10k_request_glort_range()
360 interface->glort += mask; in fm10k_request_glort_range()
362 interface->glort_count = (mask + 1) / 2; in fm10k_request_glort_range()
363 interface->glort += interface->glort_count; in fm10k_request_glort_range()
365 interface->glort_count = mask - 63; in fm10k_request_glort_range()
366 interface->glort += 64; in fm10k_request_glort_range()
376 static void fm10k_free_udp_port_info(struct fm10k_intfc *interface) in fm10k_free_udp_port_info() argument
381 port = list_first_entry_or_null(&interface->vxlan_port, in fm10k_free_udp_port_info()
386 port = list_first_entry_or_null(&interface->vxlan_port, in fm10k_free_udp_port_info()
392 port = list_first_entry_or_null(&interface->geneve_port, in fm10k_free_udp_port_info()
397 port = list_first_entry_or_null(&interface->vxlan_port, in fm10k_free_udp_port_info()
409 static void fm10k_restore_udp_port_info(struct fm10k_intfc *interface) in fm10k_restore_udp_port_info() argument
411 struct fm10k_hw *hw = &interface->hw; in fm10k_restore_udp_port_info()
418 port = list_first_entry_or_null(&interface->vxlan_port, in fm10k_restore_udp_port_info()
426 port = list_first_entry_or_null(&interface->geneve_port, in fm10k_restore_udp_port_info()
483 struct fm10k_intfc *interface = netdev_priv(dev); in fm10k_udp_tunnel_add() local
486 if (interface->hw.mac.type != fm10k_mac_pf) in fm10k_udp_tunnel_add()
491 fm10k_insert_tunnel_port(&interface->vxlan_port, ti); in fm10k_udp_tunnel_add()
494 fm10k_insert_tunnel_port(&interface->geneve_port, ti); in fm10k_udp_tunnel_add()
500 fm10k_restore_udp_port_info(interface); in fm10k_udp_tunnel_add()
515 struct fm10k_intfc *interface = netdev_priv(dev); in fm10k_udp_tunnel_del() local
518 if (interface->hw.mac.type != fm10k_mac_pf) in fm10k_udp_tunnel_del()
523 port = fm10k_remove_tunnel_port(&interface->vxlan_port, ti); in fm10k_udp_tunnel_del()
526 port = fm10k_remove_tunnel_port(&interface->geneve_port, ti); in fm10k_udp_tunnel_del()
535 fm10k_restore_udp_port_info(interface); in fm10k_udp_tunnel_del()
552 struct fm10k_intfc *interface = netdev_priv(netdev); in fm10k_open() local
556 err = fm10k_setup_all_tx_resources(interface); in fm10k_open()
561 err = fm10k_setup_all_rx_resources(interface); in fm10k_open()
566 err = fm10k_qv_request_irq(interface); in fm10k_open()
571 fm10k_request_glort_range(interface); in fm10k_open()
575 interface->num_tx_queues); in fm10k_open()
580 interface->num_rx_queues); in fm10k_open()
586 fm10k_up(interface); in fm10k_open()
591 fm10k_qv_free_irq(interface); in fm10k_open()
593 fm10k_free_all_rx_resources(interface); in fm10k_open()
595 fm10k_free_all_tx_resources(interface); in fm10k_open()
613 struct fm10k_intfc *interface = netdev_priv(netdev); in fm10k_close() local
615 fm10k_down(interface); in fm10k_close()
617 fm10k_qv_free_irq(interface); in fm10k_close()
619 fm10k_free_udp_port_info(interface); in fm10k_close()
621 fm10k_free_all_tx_resources(interface); in fm10k_close()
622 fm10k_free_all_rx_resources(interface); in fm10k_close()
629 struct fm10k_intfc *interface = netdev_priv(dev); in fm10k_xmit_frame() local
630 int num_tx_queues = READ_ONCE(interface->num_tx_queues); in fm10k_xmit_frame()
692 err = fm10k_xmit_frame_ring(skb, interface->tx_ring[r_idx]); in fm10k_xmit_frame()
703 struct fm10k_intfc *interface = netdev_priv(netdev); in fm10k_tx_timeout() local
708 for (i = 0; i < interface->num_tx_queues; i++) { in fm10k_tx_timeout()
709 struct fm10k_ring *tx_ring = interface->tx_ring[i]; in fm10k_tx_timeout()
716 fm10k_tx_timeout_reset(interface); in fm10k_tx_timeout()
718 netif_info(interface, drv, netdev, in fm10k_tx_timeout()
738 static bool fm10k_host_mbx_ready(struct fm10k_intfc *interface) in fm10k_host_mbx_ready() argument
740 struct fm10k_hw *hw = &interface->hw; in fm10k_host_mbx_ready()
742 return (hw->mac.type == fm10k_mac_vf || interface->host_ready); in fm10k_host_mbx_ready()
757 int fm10k_queue_vlan_request(struct fm10k_intfc *interface, in fm10k_queue_vlan_request() argument
775 spin_lock_irqsave(&interface->macvlan_lock, flags); in fm10k_queue_vlan_request()
776 list_add_tail(&request->list, &interface->macvlan_requests); in fm10k_queue_vlan_request()
777 spin_unlock_irqrestore(&interface->macvlan_lock, flags); in fm10k_queue_vlan_request()
779 fm10k_macvlan_schedule(interface); in fm10k_queue_vlan_request()
796 int fm10k_queue_mac_request(struct fm10k_intfc *interface, u16 glort, in fm10k_queue_mac_request() argument
819 spin_lock_irqsave(&interface->macvlan_lock, flags); in fm10k_queue_mac_request()
820 list_add_tail(&request->list, &interface->macvlan_requests); in fm10k_queue_mac_request()
821 spin_unlock_irqrestore(&interface->macvlan_lock, flags); in fm10k_queue_mac_request()
823 fm10k_macvlan_schedule(interface); in fm10k_queue_mac_request()
837 void fm10k_clear_macvlan_queue(struct fm10k_intfc *interface, in fm10k_clear_macvlan_queue() argument
844 spin_lock_irqsave(&interface->macvlan_lock, flags); in fm10k_clear_macvlan_queue()
847 list_for_each_entry_safe(r, tmp, &interface->macvlan_requests, list) { in fm10k_clear_macvlan_queue()
864 spin_unlock_irqrestore(&interface->macvlan_lock, flags); in fm10k_clear_macvlan_queue()
870 struct fm10k_intfc *interface = netdev_priv(netdev); in fm10k_uc_vlan_unsync() local
871 u16 glort = interface->glort; in fm10k_uc_vlan_unsync()
872 u16 vid = interface->vid; in fm10k_uc_vlan_unsync()
879 err = fm10k_queue_mac_request(interface, glort, uc_addr, vid, set); in fm10k_uc_vlan_unsync()
890 struct fm10k_intfc *interface = netdev_priv(netdev); in fm10k_mc_vlan_unsync() local
891 u16 glort = interface->glort; in fm10k_mc_vlan_unsync()
892 u16 vid = interface->vid; in fm10k_mc_vlan_unsync()
899 err = fm10k_queue_mac_request(interface, glort, mc_addr, vid, set); in fm10k_mc_vlan_unsync()
909 struct fm10k_intfc *interface = netdev_priv(netdev); in fm10k_update_vid() local
910 struct fm10k_l2_accel *l2_accel = interface->l2_accel; in fm10k_update_vid()
911 struct fm10k_hw *hw = &interface->hw; in fm10k_update_vid()
932 set_bit(vid, interface->active_vlans); in fm10k_update_vid()
934 clear_bit(vid, interface->active_vlans); in fm10k_update_vid()
937 for (i = 0; i < interface->num_rx_queues; i++) { in fm10k_update_vid()
938 struct fm10k_ring *rx_ring = interface->rx_ring[i]; in fm10k_update_vid()
941 if (test_bit(rx_vid, interface->active_vlans)) in fm10k_update_vid()
962 if (test_bit(__FM10K_DOWN, interface->state)) in fm10k_update_vid()
965 fm10k_mbx_lock(interface); in fm10k_update_vid()
969 err = fm10k_queue_vlan_request(interface, vid, 0, set); in fm10k_update_vid()
975 err = fm10k_queue_mac_request(interface, interface->glort, in fm10k_update_vid()
990 fm10k_queue_mac_request(interface, glort, in fm10k_update_vid()
997 interface->vid = vid + (set ? VLAN_N_VID : 0); in fm10k_update_vid()
1004 fm10k_mbx_unlock(interface); in fm10k_update_vid()
1023 static u16 fm10k_find_next_vlan(struct fm10k_intfc *interface, u16 vid) in fm10k_find_next_vlan() argument
1025 struct fm10k_hw *hw = &interface->hw; in fm10k_find_next_vlan()
1029 vid = find_next_bit(interface->active_vlans, vid_limit, ++vid); in fm10k_find_next_vlan()
1034 static void fm10k_clear_unused_vlans(struct fm10k_intfc *interface) in fm10k_clear_unused_vlans() argument
1041 prev_vid = vid + 1, vid = fm10k_find_next_vlan(interface, vid)) { in fm10k_clear_unused_vlans()
1047 fm10k_queue_vlan_request(interface, prev_vid, 0, false); in fm10k_clear_unused_vlans()
1054 struct fm10k_intfc *interface = netdev_priv(dev); in __fm10k_uc_sync() local
1055 u16 vid, glort = interface->glort; in __fm10k_uc_sync()
1061 for (vid = fm10k_find_next_vlan(interface, 0); in __fm10k_uc_sync()
1063 vid = fm10k_find_next_vlan(interface, vid)) { in __fm10k_uc_sync()
1064 err = fm10k_queue_mac_request(interface, glort, in __fm10k_uc_sync()
1087 struct fm10k_intfc *interface = netdev_priv(dev); in fm10k_set_mac() local
1088 struct fm10k_hw *hw = &interface->hw; in fm10k_set_mac()
1097 fm10k_mbx_lock(interface); in fm10k_set_mac()
1103 fm10k_mbx_unlock(interface); in fm10k_set_mac()
1119 struct fm10k_intfc *interface = netdev_priv(dev); in __fm10k_mc_sync() local
1120 u16 vid, glort = interface->glort; in __fm10k_mc_sync()
1126 for (vid = fm10k_find_next_vlan(interface, 0); in __fm10k_mc_sync()
1128 vid = fm10k_find_next_vlan(interface, vid)) { in __fm10k_mc_sync()
1129 err = fm10k_queue_mac_request(interface, glort, in __fm10k_mc_sync()
1152 struct fm10k_intfc *interface = netdev_priv(dev); in fm10k_set_rx_mode() local
1153 struct fm10k_hw *hw = &interface->hw; in fm10k_set_rx_mode()
1166 fm10k_mbx_lock(interface); in fm10k_set_rx_mode()
1169 if (interface->xcast_mode != xcast_mode) { in fm10k_set_rx_mode()
1172 fm10k_queue_vlan_request(interface, FM10K_VLAN_ALL, in fm10k_set_rx_mode()
1176 if (interface->xcast_mode == FM10K_XCAST_MODE_PROMISC) in fm10k_set_rx_mode()
1177 fm10k_clear_unused_vlans(interface); in fm10k_set_rx_mode()
1180 if (fm10k_host_mbx_ready(interface)) in fm10k_set_rx_mode()
1181 hw->mac.ops.update_xcast_mode(hw, interface->glort, in fm10k_set_rx_mode()
1185 interface->xcast_mode = xcast_mode; in fm10k_set_rx_mode()
1192 fm10k_mbx_unlock(interface); in fm10k_set_rx_mode()
1195 void fm10k_restore_rx_state(struct fm10k_intfc *interface) in fm10k_restore_rx_state() argument
1197 struct fm10k_l2_accel *l2_accel = interface->l2_accel; in fm10k_restore_rx_state()
1198 struct net_device *netdev = interface->netdev; in fm10k_restore_rx_state()
1199 struct fm10k_hw *hw = &interface->hw; in fm10k_restore_rx_state()
1204 glort = interface->glort; in fm10k_restore_rx_state()
1216 fm10k_mbx_lock(interface); in fm10k_restore_rx_state()
1219 if (fm10k_host_mbx_ready(interface)) in fm10k_restore_rx_state()
1221 interface->glort_count, true); in fm10k_restore_rx_state()
1224 fm10k_queue_vlan_request(interface, FM10K_VLAN_ALL, 0, in fm10k_restore_rx_state()
1228 for (vid = fm10k_find_next_vlan(interface, 0); in fm10k_restore_rx_state()
1230 vid = fm10k_find_next_vlan(interface, vid)) { in fm10k_restore_rx_state()
1231 fm10k_queue_vlan_request(interface, vid, 0, true); in fm10k_restore_rx_state()
1233 fm10k_queue_mac_request(interface, glort, in fm10k_restore_rx_state()
1246 fm10k_queue_mac_request(interface, glort, in fm10k_restore_rx_state()
1256 if (fm10k_host_mbx_ready(interface)) in fm10k_restore_rx_state()
1275 fm10k_queue_mac_request(interface, glort, in fm10k_restore_rx_state()
1281 fm10k_mbx_unlock(interface); in fm10k_restore_rx_state()
1284 interface->xcast_mode = xcast_mode; in fm10k_restore_rx_state()
1287 fm10k_restore_udp_port_info(interface); in fm10k_restore_rx_state()
1290 void fm10k_reset_rx_state(struct fm10k_intfc *interface) in fm10k_reset_rx_state() argument
1292 struct net_device *netdev = interface->netdev; in fm10k_reset_rx_state()
1293 struct fm10k_hw *hw = &interface->hw; in fm10k_reset_rx_state()
1296 while (test_bit(__FM10K_MACVLAN_SCHED, interface->state)) in fm10k_reset_rx_state()
1300 fm10k_clear_macvlan_queue(interface, interface->glort, true); in fm10k_reset_rx_state()
1302 fm10k_mbx_lock(interface); in fm10k_reset_rx_state()
1307 if (fm10k_host_mbx_ready(interface)) in fm10k_reset_rx_state()
1308 hw->mac.ops.update_lport_state(hw, interface->glort, in fm10k_reset_rx_state()
1309 interface->glort_count, false); in fm10k_reset_rx_state()
1311 fm10k_mbx_unlock(interface); in fm10k_reset_rx_state()
1314 interface->xcast_mode = FM10K_XCAST_MODE_NONE; in fm10k_reset_rx_state()
1332 struct fm10k_intfc *interface = netdev_priv(netdev); in fm10k_get_stats64() local
1339 for (i = 0; i < interface->num_rx_queues; i++) { in fm10k_get_stats64()
1340 ring = READ_ONCE(interface->rx_ring[i]); in fm10k_get_stats64()
1355 for (i = 0; i < interface->num_tx_queues; i++) { in fm10k_get_stats64()
1356 ring = READ_ONCE(interface->tx_ring[i]); in fm10k_get_stats64()
1379 struct fm10k_intfc *interface = netdev_priv(dev); in fm10k_setup_tc() local
1383 if (tc && (interface->hw.mac.type != fm10k_mac_pf)) in fm10k_setup_tc()
1397 fm10k_mbx_free_irq(interface); in fm10k_setup_tc()
1399 fm10k_clear_queueing_scheme(interface); in fm10k_setup_tc()
1405 err = fm10k_init_queueing_scheme(interface); in fm10k_setup_tc()
1409 err = fm10k_mbx_request_irq(interface); in fm10k_setup_tc()
1418 set_bit(FM10K_FLAG_SWPRI_CONFIG, interface->flags); in fm10k_setup_tc()
1422 fm10k_mbx_free_irq(interface); in fm10k_setup_tc()
1424 fm10k_clear_queueing_scheme(interface); in fm10k_setup_tc()
1444 static void fm10k_assign_l2_accel(struct fm10k_intfc *interface, in fm10k_assign_l2_accel() argument
1450 for (i = 0; i < interface->num_rx_queues; i++) { in fm10k_assign_l2_accel()
1451 ring = interface->rx_ring[i]; in fm10k_assign_l2_accel()
1455 interface->l2_accel = l2_accel; in fm10k_assign_l2_accel()
1461 struct fm10k_intfc *interface = netdev_priv(dev); in fm10k_dfwd_add_station() local
1462 struct fm10k_l2_accel *l2_accel = interface->l2_accel; in fm10k_dfwd_add_station()
1465 struct fm10k_hw *hw = &interface->hw; in fm10k_dfwd_add_station()
1479 if (interface->glort_count < 7) in fm10k_dfwd_add_station()
1488 l2_accel->dglort = interface->glort; in fm10k_dfwd_add_station()
1491 fm10k_assign_l2_accel(interface, l2_accel); in fm10k_dfwd_add_station()
1494 (l2_accel->count == (interface->glort_count - 1))) { in fm10k_dfwd_add_station()
1512 fm10k_assign_l2_accel(interface, l2_accel); in fm10k_dfwd_add_station()
1529 dglort.rss_l = fls(interface->ring_feature[RING_F_RSS].mask); in fm10k_dfwd_add_station()
1530 dglort.pc_l = fls(interface->ring_feature[RING_F_QOS].mask); in fm10k_dfwd_add_station()
1531 dglort.glort = interface->glort; in fm10k_dfwd_add_station()
1536 fm10k_mbx_lock(interface); in fm10k_dfwd_add_station()
1540 if (fm10k_host_mbx_ready(interface)) in fm10k_dfwd_add_station()
1544 fm10k_queue_mac_request(interface, glort, sdev->dev_addr, in fm10k_dfwd_add_station()
1547 for (vid = fm10k_find_next_vlan(interface, 0); in fm10k_dfwd_add_station()
1549 vid = fm10k_find_next_vlan(interface, vid)) in fm10k_dfwd_add_station()
1550 fm10k_queue_mac_request(interface, glort, sdev->dev_addr, in fm10k_dfwd_add_station()
1553 fm10k_mbx_unlock(interface); in fm10k_dfwd_add_station()
1560 struct fm10k_intfc *interface = netdev_priv(dev); in fm10k_dfwd_del_station() local
1561 struct fm10k_l2_accel *l2_accel = READ_ONCE(interface->l2_accel); in fm10k_dfwd_del_station()
1563 struct fm10k_hw *hw = &interface->hw; in fm10k_dfwd_del_station()
1582 fm10k_mbx_lock(interface); in fm10k_dfwd_del_station()
1586 if (fm10k_host_mbx_ready(interface)) in fm10k_dfwd_del_station()
1590 fm10k_queue_mac_request(interface, glort, sdev->dev_addr, in fm10k_dfwd_del_station()
1593 for (vid = fm10k_find_next_vlan(interface, 0); in fm10k_dfwd_del_station()
1595 vid = fm10k_find_next_vlan(interface, vid)) in fm10k_dfwd_del_station()
1596 fm10k_queue_mac_request(interface, glort, sdev->dev_addr, in fm10k_dfwd_del_station()
1599 fm10k_mbx_unlock(interface); in fm10k_dfwd_del_station()
1608 dglort.rss_l = fls(interface->ring_feature[RING_F_RSS].mask); in fm10k_dfwd_del_station()
1609 dglort.pc_l = fls(interface->ring_feature[RING_F_QOS].mask); in fm10k_dfwd_del_station()
1610 dglort.glort = interface->glort; in fm10k_dfwd_del_station()
1616 fm10k_assign_l2_accel(interface, NULL); in fm10k_dfwd_del_station()
1659 struct fm10k_intfc *interface; in fm10k_alloc_netdev() local
1671 interface = netdev_priv(dev); in fm10k_alloc_netdev()
1672 interface->msg_enable = BIT(DEFAULT_DEBUG_LEVEL_SHIFT) - 1; in fm10k_alloc_netdev()