Lines Matching refs:vsi

38  * @qs_cfg: gathered variables needed for pf->vsi queues assignment
96 * @vsi: the VSI being configured
102 static int ice_vsi_alloc_q_vector(struct ice_vsi *vsi, u16 v_idx)
104 struct ice_pf *pf = vsi->back;
113 q_vector->vsi = vsi;
123 if (vsi->type == ICE_VSI_VF) {
124 q_vector->reg_idx = ice_calc_vf_reg_idx(vsi->vf, q_vector);
126 } else if (vsi->type == ICE_VSI_CTRL && vsi->vf) {
127 struct ice_vsi *ctrl_vsi = ice_get_vf_ctrl_vsi(pf, vsi);
140 q_vector->irq = ice_alloc_irq(pf, vsi->irq_dyn_alloc);
157 if (vsi->netdev)
158 netif_napi_add(vsi->netdev, &q_vector->napi, ice_napi_poll);
162 vsi->q_vectors[v_idx] = q_vector;
174 * @vsi: VSI having the memory freed
177 static void ice_free_q_vector(struct ice_vsi *vsi, int v_idx)
180 struct ice_pf *pf = vsi->back;
186 if (!vsi->q_vectors[v_idx]) {
190 q_vector = vsi->q_vectors[v_idx];
193 ice_queue_set_napi(vsi, tx_ring->q_index, NETDEV_QUEUE_TYPE_TX,
198 ice_queue_set_napi(vsi, rx_ring->q_index, NETDEV_QUEUE_TYPE_RX,
204 if (vsi->netdev)
211 /* only free last VF ctrl vsi interrupt */
212 if (vsi->type == ICE_VSI_CTRL && vsi->vf &&
213 ice_get_vf_ctrl_vsi(pf, vsi))
220 vsi->q_vectors[v_idx] = NULL;
248 * @vsi: VSI that ring belongs to
252 static u16 ice_calc_txq_handle(struct ice_vsi *vsi, struct ice_tx_ring *ring, u8 tc)
263 return ring->q_index - vsi->tc_cfg.tc_info[tc].qoffset;
272 * here by finding index in vsi->tx_rings of this ring.
275 * because VSI is get from ring->vsi, so it has to be present in this VSI.
279 const struct ice_vsi *vsi = ring->vsi;
282 ice_for_each_txq(vsi, i) {
283 if (vsi->tx_rings[i] == ring)
321 struct ice_vsi *vsi = ring->vsi;
322 struct ice_hw *hw = &vsi->back->hw;
326 tlan_ctx->port_num = vsi->port_info->lport;
342 switch (vsi->type) {
353 tlan_ctx->vmvf_num = hw->func_caps.vf_base_id + vsi->vf->vf_id;
367 tlan_ctx->src_vsi = ice_get_hw_vsi_num(hw, vsi->idx);
370 switch (vsi->type) {
409 struct ice_vsi *vsi = ring->vsi;
416 hw = &vsi->back->hw;
419 pf_q = vsi->rxq_map[ring->q_index];
455 if (vsi->type == ICE_VSI_VF &&
456 ice_vf_is_port_vlan_ena(vsi->vf))
476 rlan_ctx.rxmax = min_t(u32, vsi->max_frame,
488 if (vsi->type != ICE_VSI_VF)
497 dev_err(ice_pf_to_dev(vsi->back), "Failed to set LAN Rx queue context for absolute Rx queue %d error: %d\n",
502 if (vsi->type == ICE_VSI_VF)
506 if (!vsi->netdev || test_bit(ICE_FLAG_LEGACY_RX, vsi->back->flags))
541 struct device *dev = ice_pf_to_dev(ring->vsi->back);
545 ring->rx_buf_len = ring->vsi->rx_buf_len;
547 if (ring->vsi->type == ICE_VSI_PF) {
620 u16 pf_q = ring->vsi->rxq_map[ring->q_index];
634 int ice_vsi_cfg_single_rxq(struct ice_vsi *vsi, u16 q_idx)
636 if (q_idx >= vsi->num_rxq)
639 return ice_vsi_cfg_rxq(vsi->rx_rings[q_idx]);
644 * @vsi: VSI
646 static void ice_vsi_cfg_frame_size(struct ice_vsi *vsi)
648 if (!vsi->netdev || test_bit(ICE_FLAG_LEGACY_RX, vsi->back->flags)) {
649 vsi->max_frame = ICE_MAX_FRAME_LEGACY_RX;
650 vsi->rx_buf_len = ICE_RXBUF_1664;
653 (vsi->netdev->mtu <= ETH_DATA_LEN)) {
654 vsi->max_frame = ICE_RXBUF_1536 - NET_IP_ALIGN;
655 vsi->rx_buf_len = ICE_RXBUF_1536 - NET_IP_ALIGN;
658 vsi->max_frame = ICE_AQ_SET_MAC_FRAME_SIZE_MAX;
659 vsi->rx_buf_len = ICE_RXBUF_3072;
665 * @vsi: the VSI being configured
670 int ice_vsi_cfg_rxqs(struct ice_vsi *vsi)
674 if (vsi->type == ICE_VSI_VF)
677 ice_vsi_cfg_frame_size(vsi);
680 ice_for_each_rxq(vsi, i) {
681 int err = ice_vsi_cfg_rxq(vsi->rx_rings[i]);
692 * @qs_cfg: gathered variables needed for pf->vsi queues assignment
716 * @vsi: the VSI being configured
724 ice_vsi_ctrl_one_rx_ring(struct ice_vsi *vsi, bool ena, u16 rxq_idx, bool wait)
726 int pf_q = vsi->rxq_map[rxq_idx];
727 struct ice_pf *pf = vsi->back;
753 * @vsi: the VSI being configured
762 int ice_vsi_wait_one_rx_ring(struct ice_vsi *vsi, bool ena, u16 rxq_idx)
764 int pf_q = vsi->rxq_map[rxq_idx];
765 struct ice_pf *pf = vsi->back;
772 * @vsi: the VSI being configured
777 int ice_vsi_alloc_q_vectors(struct ice_vsi *vsi)
779 struct device *dev = ice_pf_to_dev(vsi->back);
783 if (vsi->q_vectors[0]) {
784 dev_dbg(dev, "VSI %d has existing q_vectors\n", vsi->vsi_num);
788 for (v_idx = 0; v_idx < vsi->num_q_vectors; v_idx++) {
789 err = ice_vsi_alloc_q_vector(vsi, v_idx);
798 ice_free_q_vector(vsi, v_idx);
801 vsi->num_q_vectors, vsi->vsi_num, err);
802 vsi->num_q_vectors = 0;
808 * @vsi: the VSI being configured
814 void ice_vsi_map_rings_to_vectors(struct ice_vsi *vsi)
816 int q_vectors = vsi->num_q_vectors;
821 tx_rings_rem = vsi->num_txq;
822 rx_rings_rem = vsi->num_rxq;
825 struct ice_q_vector *q_vector = vsi->q_vectors[v_id];
835 q_base = vsi->num_txq - tx_rings_rem;
838 struct ice_tx_ring *tx_ring = vsi->tx_rings[q_id];
852 q_base = vsi->num_rxq - rx_rings_rem;
855 struct ice_rx_ring *rx_ring = vsi->rx_rings[q_id];
867 * @vsi: the VSI having memory freed
869 void ice_vsi_free_q_vectors(struct ice_vsi *vsi)
873 ice_for_each_q_vector(vsi, v_idx)
874 ice_free_q_vector(vsi, v_idx);
876 vsi->num_q_vectors = 0;
881 * @vsi: the VSI that queue belongs to
886 ice_vsi_cfg_txq(struct ice_vsi *vsi, struct ice_tx_ring *ring,
893 struct ice_pf *pf = vsi->back;
922 if (vsi->type == ICE_VSI_SWITCHDEV_CTRL) {
928 ring->q_handle = ice_calc_txq_handle(vsi, ring, tc);
932 status = ice_ena_vsi_txq(vsi->port_info, ch->ch_vsi->idx, 0,
936 status = ice_ena_vsi_txq(vsi->port_info, vsi->idx, tc,
956 int ice_vsi_cfg_single_txq(struct ice_vsi *vsi, struct ice_tx_ring **tx_rings,
961 if (q_idx >= vsi->alloc_txq || !tx_rings || !tx_rings[q_idx])
966 return ice_vsi_cfg_txq(vsi, tx_rings[q_idx], qg_buf);
971 * @vsi: the VSI being configured
979 ice_vsi_cfg_txqs(struct ice_vsi *vsi, struct ice_tx_ring **rings, u16 count)
988 err = ice_vsi_cfg_txq(vsi, rings[q_idx], qg_buf);
998 * @vsi: the VSI being configured
1003 int ice_vsi_cfg_lan_txqs(struct ice_vsi *vsi)
1005 return ice_vsi_cfg_txqs(vsi, vsi->tx_rings, vsi->num_txq);
1010 * @vsi: the VSI being configured
1015 int ice_vsi_cfg_xdp_txqs(struct ice_vsi *vsi)
1020 ret = ice_vsi_cfg_txqs(vsi, vsi->xdp_rings, vsi->num_xdp_txq);
1024 ice_for_each_rxq(vsi, i)
1025 ice_tx_xsk_pool(vsi, i);
1053 * @vsi: the VSI being configured
1062 ice_cfg_txq_interrupt(struct ice_vsi *vsi, u16 txq, u16 msix_idx, u16 itr_idx)
1064 struct ice_pf *pf = vsi->back;
1073 wr32(hw, QINT_TQCTL(vsi->txq_map[txq]), val);
1074 if (ice_is_xdp_ena_vsi(vsi)) {
1075 u32 xdp_txq = txq + vsi->num_xdp_txq;
1077 wr32(hw, QINT_TQCTL(vsi->txq_map[xdp_txq]),
1085 * @vsi: the VSI being configured
1094 ice_cfg_rxq_interrupt(struct ice_vsi *vsi, u16 rxq, u16 msix_idx, u16 itr_idx)
1096 struct ice_pf *pf = vsi->back;
1105 wr32(hw, QINT_RQCTL(vsi->rxq_map[rxq]), val);
1125 * @vsi: the VSI being configured
1132 ice_vsi_stop_tx_ring(struct ice_vsi *vsi, enum ice_disq_rst_src rst_src,
1136 struct ice_pf *pf = vsi->back;
1154 if (q_vector && !(vsi->vf && ice_is_vf_disabled(vsi->vf)))
1157 status = ice_dis_vsi_txq(vsi->port_info, txq_meta->vsi_idx,
1168 dev_dbg(ice_pf_to_dev(vsi->back), "Reset in progress. LAN Tx queues already disabled\n");
1170 dev_dbg(ice_pf_to_dev(vsi->back), "LAN Tx queues do not exist, nothing to disable\n");
1172 dev_dbg(ice_pf_to_dev(vsi->back), "Failed to disable LAN Tx queues, error: %d\n",
1182 * @vsi: VSI that ring belongs to
1190 ice_fill_txq_meta(const struct ice_vsi *vsi, struct ice_tx_ring *ring,
1208 txq_meta->vsi_idx = vsi->idx;