Lines Matching refs:vsi

25 static void ice_qp_reset_stats(struct ice_vsi *vsi, u16 q_idx)  in ice_qp_reset_stats()  argument
30 pf = vsi->back; in ice_qp_reset_stats()
34 vsi_stat = pf->vsi_stats[vsi->idx]; in ice_qp_reset_stats()
42 if (ice_is_xdp_ena_vsi(vsi)) in ice_qp_reset_stats()
43 memset(&vsi->xdp_rings[q_idx]->ring_stats->stats, 0, in ice_qp_reset_stats()
44 sizeof(vsi->xdp_rings[q_idx]->ring_stats->stats)); in ice_qp_reset_stats()
52 static void ice_qp_clean_rings(struct ice_vsi *vsi, u16 q_idx) in ice_qp_clean_rings() argument
54 ice_clean_tx_ring(vsi->tx_rings[q_idx]); in ice_qp_clean_rings()
55 if (ice_is_xdp_ena_vsi(vsi)) in ice_qp_clean_rings()
56 ice_clean_tx_ring(vsi->xdp_rings[q_idx]); in ice_qp_clean_rings()
57 ice_clean_rx_ring(vsi->rx_rings[q_idx]); in ice_qp_clean_rings()
67 ice_qvec_toggle_napi(struct ice_vsi *vsi, struct ice_q_vector *q_vector, in ice_qvec_toggle_napi() argument
70 if (!vsi->netdev || !q_vector) in ice_qvec_toggle_napi()
86 ice_qvec_dis_irq(struct ice_vsi *vsi, struct ice_rx_ring *rx_ring, in ice_qvec_dis_irq() argument
89 struct ice_pf *pf = vsi->back; in ice_qvec_dis_irq()
115 ice_qvec_cfg_msix(struct ice_vsi *vsi, struct ice_q_vector *q_vector) in ice_qvec_cfg_msix() argument
118 struct ice_pf *pf = vsi->back; in ice_qvec_cfg_msix()
126 ice_cfg_txq_interrupt(vsi, tx_ring->reg_idx, reg_idx, in ice_qvec_cfg_msix()
130 ice_cfg_rxq_interrupt(vsi, rx_ring->reg_idx, reg_idx, in ice_qvec_cfg_msix()
141 static void ice_qvec_ena_irq(struct ice_vsi *vsi, struct ice_q_vector *q_vector) in ice_qvec_ena_irq() argument
143 struct ice_pf *pf = vsi->back; in ice_qvec_ena_irq()
146 ice_irq_dynamic_ena(hw, vsi, q_vector); in ice_qvec_ena_irq()
158 static int ice_qp_dis(struct ice_vsi *vsi, u16 q_idx) in ice_qp_dis() argument
167 if (q_idx >= vsi->num_rxq || q_idx >= vsi->num_txq) in ice_qp_dis()
170 tx_ring = vsi->tx_rings[q_idx]; in ice_qp_dis()
171 rx_ring = vsi->rx_rings[q_idx]; in ice_qp_dis()
174 while (test_and_set_bit(ICE_CFG_BUSY, vsi->state)) { in ice_qp_dis()
182 netif_tx_stop_queue(netdev_get_tx_queue(vsi->netdev, q_idx)); in ice_qp_dis()
184 ice_qvec_dis_irq(vsi, rx_ring, q_vector); in ice_qp_dis()
185 ice_qvec_toggle_napi(vsi, q_vector, false); in ice_qp_dis()
187 ice_fill_txq_meta(vsi, tx_ring, &txq_meta); in ice_qp_dis()
188 err = ice_vsi_stop_tx_ring(vsi, ICE_NO_RESET, 0, tx_ring, &txq_meta); in ice_qp_dis()
191 if (ice_is_xdp_ena_vsi(vsi)) { in ice_qp_dis()
192 struct ice_tx_ring *xdp_ring = vsi->xdp_rings[q_idx]; in ice_qp_dis()
195 ice_fill_txq_meta(vsi, xdp_ring, &txq_meta); in ice_qp_dis()
196 err = ice_vsi_stop_tx_ring(vsi, ICE_NO_RESET, 0, xdp_ring, in ice_qp_dis()
202 ice_vsi_ctrl_one_rx_ring(vsi, false, q_idx, false); in ice_qp_dis()
203 ice_qp_clean_rings(vsi, q_idx); in ice_qp_dis()
204 ice_qp_reset_stats(vsi, q_idx); in ice_qp_dis()
216 static int ice_qp_ena(struct ice_vsi *vsi, u16 q_idx) in ice_qp_ena() argument
225 if (q_idx >= vsi->num_rxq || q_idx >= vsi->num_txq) in ice_qp_ena()
235 tx_ring = vsi->tx_rings[q_idx]; in ice_qp_ena()
236 rx_ring = vsi->rx_rings[q_idx]; in ice_qp_ena()
239 err = ice_vsi_cfg_txq(vsi, tx_ring, qg_buf); in ice_qp_ena()
243 if (ice_is_xdp_ena_vsi(vsi)) { in ice_qp_ena()
244 struct ice_tx_ring *xdp_ring = vsi->xdp_rings[q_idx]; in ice_qp_ena()
248 err = ice_vsi_cfg_txq(vsi, xdp_ring, qg_buf); in ice_qp_ena()
252 ice_tx_xsk_pool(vsi, q_idx); in ice_qp_ena()
259 ice_qvec_cfg_msix(vsi, q_vector); in ice_qp_ena()
261 err = ice_vsi_ctrl_one_rx_ring(vsi, true, q_idx, true); in ice_qp_ena()
265 ice_qvec_toggle_napi(vsi, q_vector, true); in ice_qp_ena()
266 ice_qvec_ena_irq(vsi, q_vector); in ice_qp_ena()
268 netif_tx_start_queue(netdev_get_tx_queue(vsi->netdev, q_idx)); in ice_qp_ena()
269 clear_bit(ICE_CFG_BUSY, vsi->state); in ice_qp_ena()
282 static int ice_xsk_pool_disable(struct ice_vsi *vsi, u16 qid) in ice_xsk_pool_disable() argument
284 struct xsk_buff_pool *pool = xsk_get_pool_from_qid(vsi->netdev, qid); in ice_xsk_pool_disable()
303 ice_xsk_pool_enable(struct ice_vsi *vsi, struct xsk_buff_pool *pool, u16 qid) in ice_xsk_pool_enable() argument
307 if (vsi->type != ICE_VSI_PF) in ice_xsk_pool_enable()
310 if (qid >= vsi->netdev->real_num_rx_queues || in ice_xsk_pool_enable()
311 qid >= vsi->netdev->real_num_tx_queues) in ice_xsk_pool_enable()
314 err = xsk_pool_dma_map(pool, ice_pf_to_dev(vsi->back), in ice_xsk_pool_enable()
363 int ice_realloc_zc_buf(struct ice_vsi *vsi, bool zc) in ice_realloc_zc_buf() argument
368 ice_for_each_rxq(vsi, i) { in ice_realloc_zc_buf()
369 rx_ring = vsi->rx_rings[i]; in ice_realloc_zc_buf()
388 int ice_xsk_pool_setup(struct ice_vsi *vsi, struct xsk_buff_pool *pool, u16 qid) in ice_xsk_pool_setup() argument
393 if (qid >= vsi->num_rxq || qid >= vsi->num_txq) { in ice_xsk_pool_setup()
394 netdev_err(vsi->netdev, "Please use queue id in scope of combined queues count\n"); in ice_xsk_pool_setup()
399 if_running = !test_bit(ICE_VSI_DOWN, vsi->state) && in ice_xsk_pool_setup()
400 ice_is_xdp_ena_vsi(vsi); in ice_xsk_pool_setup()
403 struct ice_rx_ring *rx_ring = vsi->rx_rings[qid]; in ice_xsk_pool_setup()
405 ret = ice_qp_dis(vsi, qid); in ice_xsk_pool_setup()
407 netdev_err(vsi->netdev, "ice_qp_dis error = %d\n", ret); in ice_xsk_pool_setup()
416 pool_failure = pool_present ? ice_xsk_pool_enable(vsi, pool, qid) : in ice_xsk_pool_setup()
417 ice_xsk_pool_disable(vsi, qid); in ice_xsk_pool_setup()
421 ret = ice_qp_ena(vsi, qid); in ice_xsk_pool_setup()
423 napi_schedule(&vsi->rx_rings[qid]->xdp_ring->q_vector->napi); in ice_xsk_pool_setup()
425 netdev_err(vsi->netdev, "ice_qp_ena error = %d\n", ret); in ice_xsk_pool_setup()
430 netdev_err(vsi->netdev, "Could not %sable buffer pool, error = %d\n", in ice_xsk_pool_setup()
1069 if (!netif_carrier_ok(xdp_ring->vsi->netdev) || in ice_xmit_zc()
1070 !netif_running(xdp_ring->vsi->netdev)) in ice_xmit_zc()
1113 struct ice_vsi *vsi = np->vsi; in ice_xsk_wakeup() local
1116 if (test_bit(ICE_VSI_DOWN, vsi->state) || !netif_carrier_ok(netdev)) in ice_xsk_wakeup()
1119 if (!ice_is_xdp_ena_vsi(vsi)) in ice_xsk_wakeup()
1122 if (queue_id >= vsi->num_txq || queue_id >= vsi->num_rxq) in ice_xsk_wakeup()
1125 ring = vsi->rx_rings[queue_id]->xdp_ring; in ice_xsk_wakeup()
1138 ice_trigger_sw_intr(&vsi->back->hw, q_vector); in ice_xsk_wakeup()
1149 bool ice_xsk_any_rx_ring_ena(struct ice_vsi *vsi) in ice_xsk_any_rx_ring_ena() argument
1153 ice_for_each_rxq(vsi, i) { in ice_xsk_any_rx_ring_ena()
1154 if (xsk_get_pool_from_qid(vsi->netdev, i)) in ice_xsk_any_rx_ring_ena()