Lines Matching refs:vsi

25 static void ice_qp_reset_stats(struct ice_vsi *vsi, u16 q_idx)  in ice_qp_reset_stats()  argument
27 memset(&vsi->rx_rings[q_idx]->rx_stats, 0, in ice_qp_reset_stats()
28 sizeof(vsi->rx_rings[q_idx]->rx_stats)); in ice_qp_reset_stats()
29 memset(&vsi->tx_rings[q_idx]->stats, 0, in ice_qp_reset_stats()
30 sizeof(vsi->tx_rings[q_idx]->stats)); in ice_qp_reset_stats()
31 if (ice_is_xdp_ena_vsi(vsi)) in ice_qp_reset_stats()
32 memset(&vsi->xdp_rings[q_idx]->stats, 0, in ice_qp_reset_stats()
33 sizeof(vsi->xdp_rings[q_idx]->stats)); in ice_qp_reset_stats()
41 static void ice_qp_clean_rings(struct ice_vsi *vsi, u16 q_idx) in ice_qp_clean_rings() argument
43 ice_clean_tx_ring(vsi->tx_rings[q_idx]); in ice_qp_clean_rings()
44 if (ice_is_xdp_ena_vsi(vsi)) in ice_qp_clean_rings()
45 ice_clean_tx_ring(vsi->xdp_rings[q_idx]); in ice_qp_clean_rings()
46 ice_clean_rx_ring(vsi->rx_rings[q_idx]); in ice_qp_clean_rings()
56 ice_qvec_toggle_napi(struct ice_vsi *vsi, struct ice_q_vector *q_vector, in ice_qvec_toggle_napi() argument
59 if (!vsi->netdev || !q_vector) in ice_qvec_toggle_napi()
75 ice_qvec_dis_irq(struct ice_vsi *vsi, struct ice_rx_ring *rx_ring, in ice_qvec_dis_irq() argument
78 struct ice_pf *pf = vsi->back; in ice_qvec_dis_irq()
80 int base = vsi->base_vector; in ice_qvec_dis_irq()
107 ice_qvec_cfg_msix(struct ice_vsi *vsi, struct ice_q_vector *q_vector) in ice_qvec_cfg_msix() argument
110 struct ice_pf *pf = vsi->back; in ice_qvec_cfg_msix()
118 ice_cfg_txq_interrupt(vsi, tx_ring->reg_idx, reg_idx, in ice_qvec_cfg_msix()
122 ice_cfg_rxq_interrupt(vsi, rx_ring->reg_idx, reg_idx, in ice_qvec_cfg_msix()
133 static void ice_qvec_ena_irq(struct ice_vsi *vsi, struct ice_q_vector *q_vector) in ice_qvec_ena_irq() argument
135 struct ice_pf *pf = vsi->back; in ice_qvec_ena_irq()
138 ice_irq_dynamic_ena(hw, vsi, q_vector); in ice_qvec_ena_irq()
150 static int ice_qp_dis(struct ice_vsi *vsi, u16 q_idx) in ice_qp_dis() argument
159 if (q_idx >= vsi->num_rxq || q_idx >= vsi->num_txq) in ice_qp_dis()
162 tx_ring = vsi->tx_rings[q_idx]; in ice_qp_dis()
163 rx_ring = vsi->rx_rings[q_idx]; in ice_qp_dis()
166 while (test_and_set_bit(ICE_CFG_BUSY, vsi->state)) { in ice_qp_dis()
172 netif_tx_stop_queue(netdev_get_tx_queue(vsi->netdev, q_idx)); in ice_qp_dis()
174 ice_qvec_dis_irq(vsi, rx_ring, q_vector); in ice_qp_dis()
176 ice_fill_txq_meta(vsi, tx_ring, &txq_meta); in ice_qp_dis()
177 err = ice_vsi_stop_tx_ring(vsi, ICE_NO_RESET, 0, tx_ring, &txq_meta); in ice_qp_dis()
180 if (ice_is_xdp_ena_vsi(vsi)) { in ice_qp_dis()
181 struct ice_tx_ring *xdp_ring = vsi->xdp_rings[q_idx]; in ice_qp_dis()
184 ice_fill_txq_meta(vsi, xdp_ring, &txq_meta); in ice_qp_dis()
185 err = ice_vsi_stop_tx_ring(vsi, ICE_NO_RESET, 0, xdp_ring, in ice_qp_dis()
190 err = ice_vsi_ctrl_one_rx_ring(vsi, false, q_idx, true); in ice_qp_dis()
194 ice_qvec_toggle_napi(vsi, q_vector, false); in ice_qp_dis()
195 ice_qp_clean_rings(vsi, q_idx); in ice_qp_dis()
196 ice_qp_reset_stats(vsi, q_idx); in ice_qp_dis()
208 static int ice_qp_ena(struct ice_vsi *vsi, u16 q_idx) in ice_qp_ena() argument
217 if (q_idx >= vsi->num_rxq || q_idx >= vsi->num_txq) in ice_qp_ena()
227 tx_ring = vsi->tx_rings[q_idx]; in ice_qp_ena()
228 rx_ring = vsi->rx_rings[q_idx]; in ice_qp_ena()
231 err = ice_vsi_cfg_txq(vsi, tx_ring, qg_buf); in ice_qp_ena()
235 if (ice_is_xdp_ena_vsi(vsi)) { in ice_qp_ena()
236 struct ice_tx_ring *xdp_ring = vsi->xdp_rings[q_idx]; in ice_qp_ena()
240 err = ice_vsi_cfg_txq(vsi, xdp_ring, qg_buf); in ice_qp_ena()
251 ice_qvec_cfg_msix(vsi, q_vector); in ice_qp_ena()
253 err = ice_vsi_ctrl_one_rx_ring(vsi, true, q_idx, true); in ice_qp_ena()
257 clear_bit(ICE_CFG_BUSY, vsi->state); in ice_qp_ena()
258 ice_qvec_toggle_napi(vsi, q_vector, true); in ice_qp_ena()
259 ice_qvec_ena_irq(vsi, q_vector); in ice_qp_ena()
261 netif_tx_start_queue(netdev_get_tx_queue(vsi->netdev, q_idx)); in ice_qp_ena()
274 static int ice_xsk_pool_disable(struct ice_vsi *vsi, u16 qid) in ice_xsk_pool_disable() argument
276 struct xsk_buff_pool *pool = xsk_get_pool_from_qid(vsi->netdev, qid); in ice_xsk_pool_disable()
281 clear_bit(qid, vsi->af_xdp_zc_qps); in ice_xsk_pool_disable()
296 ice_xsk_pool_enable(struct ice_vsi *vsi, struct xsk_buff_pool *pool, u16 qid) in ice_xsk_pool_enable() argument
300 if (vsi->type != ICE_VSI_PF) in ice_xsk_pool_enable()
303 if (qid >= vsi->netdev->real_num_rx_queues || in ice_xsk_pool_enable()
304 qid >= vsi->netdev->real_num_tx_queues) in ice_xsk_pool_enable()
307 err = xsk_pool_dma_map(pool, ice_pf_to_dev(vsi->back), in ice_xsk_pool_enable()
312 set_bit(qid, vsi->af_xdp_zc_qps); in ice_xsk_pool_enable()
325 int ice_xsk_pool_setup(struct ice_vsi *vsi, struct xsk_buff_pool *pool, u16 qid) in ice_xsk_pool_setup() argument
330 if_running = netif_running(vsi->netdev) && ice_is_xdp_ena_vsi(vsi); in ice_xsk_pool_setup()
333 ret = ice_qp_dis(vsi, qid); in ice_xsk_pool_setup()
335 netdev_err(vsi->netdev, "ice_qp_dis error = %d\n", ret); in ice_xsk_pool_setup()
340 pool_failure = pool_present ? ice_xsk_pool_enable(vsi, pool, qid) : in ice_xsk_pool_setup()
341 ice_xsk_pool_disable(vsi, qid); in ice_xsk_pool_setup()
345 ret = ice_qp_ena(vsi, qid); in ice_xsk_pool_setup()
347 napi_schedule(&vsi->xdp_rings[qid]->q_vector->napi); in ice_xsk_pool_setup()
349 netdev_err(vsi->netdev, "ice_qp_ena error = %d\n", ret); in ice_xsk_pool_setup()
353 netdev_err(vsi->netdev, "Could not %sable buffer pool, error = %d\n", in ice_xsk_pool_setup()
759 struct ice_vsi *vsi = np->vsi; in ice_xsk_wakeup() local
762 if (test_bit(ICE_DOWN, vsi->state)) in ice_xsk_wakeup()
765 if (!ice_is_xdp_ena_vsi(vsi)) in ice_xsk_wakeup()
768 if (queue_id >= vsi->num_txq) in ice_xsk_wakeup()
771 if (!vsi->xdp_rings[queue_id]->xsk_pool) in ice_xsk_wakeup()
774 ring = vsi->xdp_rings[queue_id]; in ice_xsk_wakeup()
784 ice_trigger_sw_intr(&vsi->back->hw, q_vector); in ice_xsk_wakeup()
795 bool ice_xsk_any_rx_ring_ena(struct ice_vsi *vsi) in ice_xsk_any_rx_ring_ena() argument
799 ice_for_each_rxq(vsi, i) { in ice_xsk_any_rx_ring_ena()
800 if (xsk_get_pool_from_qid(vsi->netdev, i)) in ice_xsk_any_rx_ring_ena()