Lines Matching refs:vf
24 struct i40e_vf *vf = pf->vf; in i40e_vc_vf_broadcast() local
27 for (i = 0; i < pf->num_alloc_vfs; i++, vf++) { in i40e_vc_vf_broadcast()
28 int abs_vf_id = vf->vf_id + (int)hw->func_caps.vf_base_id; in i40e_vc_vf_broadcast()
30 if (!test_bit(I40E_VF_STATE_INIT, &vf->vf_states) && in i40e_vc_vf_broadcast()
31 !test_bit(I40E_VF_STATE_ACTIVE, &vf->vf_states)) in i40e_vc_vf_broadcast()
83 static void i40e_set_vf_link_state(struct i40e_vf *vf, in i40e_set_vf_link_state() argument
88 if (vf->link_forced) in i40e_set_vf_link_state()
89 link_status = vf->link_up; in i40e_set_vf_link_state()
91 if (vf->driver_caps & VIRTCHNL_VF_CAP_ADV_LINK_SPEED) { in i40e_set_vf_link_state()
108 static void i40e_vc_notify_vf_link_state(struct i40e_vf *vf) in i40e_vc_notify_vf_link_state() argument
111 struct i40e_pf *pf = vf->pf; in i40e_vc_notify_vf_link_state()
114 int abs_vf_id = vf->vf_id + (int)hw->func_caps.vf_base_id; in i40e_vc_notify_vf_link_state()
119 i40e_set_vf_link_state(vf, &pfe, ls); in i40e_vc_notify_vf_link_state()
136 i40e_vc_notify_vf_link_state(&pf->vf[i]); in i40e_vc_notify_link_state()
187 void i40e_vc_notify_vf_reset(struct i40e_vf *vf) in i40e_vc_notify_vf_reset() argument
193 if (!vf || vf->vf_id >= vf->pf->num_alloc_vfs) in i40e_vc_notify_vf_reset()
197 if (!test_bit(I40E_VF_STATE_INIT, &vf->vf_states) && in i40e_vc_notify_vf_reset()
198 !test_bit(I40E_VF_STATE_ACTIVE, &vf->vf_states)) in i40e_vc_notify_vf_reset()
201 abs_vf_id = vf->vf_id + (int)vf->pf->hw.func_caps.vf_base_id; in i40e_vc_notify_vf_reset()
205 i40e_aq_send_msg_to_vf(&vf->pf->hw, abs_vf_id, VIRTCHNL_OP_EVENT, in i40e_vc_notify_vf_reset()
217 static void i40e_vc_reset_vf(struct i40e_vf *vf, bool notify_vf) in i40e_vc_reset_vf() argument
219 struct i40e_pf *pf = vf->pf; in i40e_vc_reset_vf()
223 i40e_vc_notify_vf_reset(vf); in i40e_vc_reset_vf()
236 if (i40e_reset_vf(vf, false)) in i40e_vc_reset_vf()
242 dev_warn(&vf->pf->pdev->dev, in i40e_vc_reset_vf()
244 vf->vf_id); in i40e_vc_reset_vf()
246 dev_dbg(&vf->pf->pdev->dev, in i40e_vc_reset_vf()
248 vf->vf_id); in i40e_vc_reset_vf()
258 static inline bool i40e_vc_isvalid_vsi_id(struct i40e_vf *vf, u16 vsi_id) in i40e_vc_isvalid_vsi_id() argument
260 struct i40e_pf *pf = vf->pf; in i40e_vc_isvalid_vsi_id()
263 return (vsi && (vsi->vf_id == vf->vf_id)); in i40e_vc_isvalid_vsi_id()
274 static inline bool i40e_vc_isvalid_queue_id(struct i40e_vf *vf, u16 vsi_id, in i40e_vc_isvalid_queue_id() argument
277 struct i40e_pf *pf = vf->pf; in i40e_vc_isvalid_queue_id()
290 static inline bool i40e_vc_isvalid_vector_id(struct i40e_vf *vf, u32 vector_id) in i40e_vc_isvalid_vector_id() argument
292 struct i40e_pf *pf = vf->pf; in i40e_vc_isvalid_vector_id()
307 static u16 i40e_vc_get_pf_queue_id(struct i40e_vf *vf, u16 vsi_id, in i40e_vc_get_pf_queue_id() argument
310 struct i40e_pf *pf = vf->pf; in i40e_vc_get_pf_queue_id()
336 static u16 i40e_get_real_pf_qid(struct i40e_vf *vf, u16 vsi_id, u16 queue_id) in i40e_get_real_pf_qid() argument
340 if (vf->adq_enabled) { in i40e_get_real_pf_qid()
345 for (i = 0; i < vf->num_tc; i++) { in i40e_get_real_pf_qid()
346 if (queue_id < vf->ch[i].num_qps) { in i40e_get_real_pf_qid()
347 vsi_id = vf->ch[i].vsi_id; in i40e_get_real_pf_qid()
353 queue_id -= vf->ch[i].num_qps; in i40e_get_real_pf_qid()
357 return i40e_vc_get_pf_queue_id(vf, vsi_id, queue_id); in i40e_get_real_pf_qid()
368 static void i40e_config_irq_link_list(struct i40e_vf *vf, u16 vsi_id, in i40e_config_irq_link_list() argument
372 struct i40e_pf *pf = vf->pf; in i40e_config_irq_link_list()
383 reg_idx = I40E_VPINT_LNKLST0(vf->vf_id); in i40e_config_irq_link_list()
386 ((pf->hw.func_caps.num_msix_vectors_vf - 1) * vf->vf_id) + in i40e_config_irq_link_list()
413 pf_queue_id = i40e_get_real_pf_qid(vf, vsi_id, vsi_queue_id); in i40e_config_irq_link_list()
436 pf_queue_id = i40e_get_real_pf_qid(vf, in i40e_config_irq_link_list()
456 if ((vf->driver_caps & VIRTCHNL_VF_OFFLOAD_RX_POLLING) && in i40e_config_irq_link_list()
474 static void i40e_release_iwarp_qvlist(struct i40e_vf *vf) in i40e_release_iwarp_qvlist() argument
476 struct i40e_pf *pf = vf->pf; in i40e_release_iwarp_qvlist()
477 struct virtchnl_iwarp_qvlist_info *qvlist_info = vf->qvlist_info; in i40e_release_iwarp_qvlist()
481 if (!vf->qvlist_info) in i40e_release_iwarp_qvlist()
499 reg_idx = (msix_vf - 1) * vf->vf_id + qv_info->ceq_idx; in i40e_release_iwarp_qvlist()
506 reg_idx = ((msix_vf - 1) * vf->vf_id) + (v_idx - 1); in i40e_release_iwarp_qvlist()
515 kfree(vf->qvlist_info); in i40e_release_iwarp_qvlist()
516 vf->qvlist_info = NULL; in i40e_release_iwarp_qvlist()
526 static int i40e_config_iwarp_qvlist(struct i40e_vf *vf, in i40e_config_iwarp_qvlist() argument
529 struct i40e_pf *pf = vf->pf; in i40e_config_iwarp_qvlist()
548 kfree(vf->qvlist_info); in i40e_config_iwarp_qvlist()
549 vf->qvlist_info = kzalloc(struct_size(vf->qvlist_info, qv_info, in i40e_config_iwarp_qvlist()
552 if (!vf->qvlist_info) { in i40e_config_iwarp_qvlist()
556 vf->qvlist_info->num_vectors = qvlist_info->num_vectors; in i40e_config_iwarp_qvlist()
565 if (!i40e_vc_isvalid_vector_id(vf, qv_info->v_idx)) { in i40e_config_iwarp_qvlist()
572 vf->qvlist_info->qv_info[i] = *qv_info; in i40e_config_iwarp_qvlist()
574 reg_idx = ((msix_vf - 1) * vf->vf_id) + (v_idx - 1); in i40e_config_iwarp_qvlist()
586 reg_idx = (msix_vf - 1) * vf->vf_id + qv_info->ceq_idx; in i40e_config_iwarp_qvlist()
594 reg_idx = ((msix_vf - 1) * vf->vf_id) + (v_idx - 1); in i40e_config_iwarp_qvlist()
607 wr32(hw, I40E_VPINT_AEQCTL(vf->vf_id), reg); in i40e_config_iwarp_qvlist()
613 kfree(vf->qvlist_info); in i40e_config_iwarp_qvlist()
614 vf->qvlist_info = NULL; in i40e_config_iwarp_qvlist()
628 static int i40e_config_vsi_tx_queue(struct i40e_vf *vf, u16 vsi_id, in i40e_config_vsi_tx_queue() argument
632 struct i40e_pf *pf = vf->pf; in i40e_config_vsi_tx_queue()
640 if (!i40e_vc_isvalid_vsi_id(vf, info->vsi_id)) { in i40e_config_vsi_tx_queue()
644 pf_queue_id = i40e_vc_get_pf_queue_id(vf, vsi_id, vsi_queue_id); in i40e_config_vsi_tx_queue()
686 qtx_ctl |= (((vf->vf_id + hw->func_caps.vf_base_id) in i40e_config_vsi_tx_queue()
705 static int i40e_config_vsi_rx_queue(struct i40e_vf *vf, u16 vsi_id, in i40e_config_vsi_rx_queue() argument
709 u16 pf_queue_id = i40e_vc_get_pf_queue_id(vf, vsi_id, vsi_queue_id); in i40e_config_vsi_rx_queue()
710 struct i40e_pf *pf = vf->pf; in i40e_config_vsi_rx_queue()
711 struct i40e_vsi *vsi = pf->vsi[vf->lan_vsi_idx]; in i40e_config_vsi_rx_queue()
797 static int i40e_alloc_vsi_res(struct i40e_vf *vf, u8 idx) in i40e_alloc_vsi_res() argument
800 struct i40e_pf *pf = vf->pf; in i40e_alloc_vsi_res()
806 vf->vf_id); in i40e_alloc_vsi_res()
811 vf->vf_id, pf->hw.aq.asq_last_status); in i40e_alloc_vsi_res()
820 vf->lan_vsi_idx = vsi->idx; in i40e_alloc_vsi_res()
821 vf->lan_vsi_id = vsi->id; in i40e_alloc_vsi_res()
828 if (vf->port_vlan_id) in i40e_alloc_vsi_res()
829 i40e_vsi_add_pvid(vsi, vf->port_vlan_id); in i40e_alloc_vsi_res()
832 if (is_valid_ether_addr(vf->default_lan_addr.addr)) { in i40e_alloc_vsi_res()
834 vf->default_lan_addr.addr); in i40e_alloc_vsi_res()
838 vf->default_lan_addr.addr, vf->vf_id); in i40e_alloc_vsi_res()
846 wr32(&pf->hw, I40E_VFQF_HENA1(0, vf->vf_id), (u32)hena); in i40e_alloc_vsi_res()
847 wr32(&pf->hw, I40E_VFQF_HENA1(1, vf->vf_id), (u32)(hena >> 32)); in i40e_alloc_vsi_res()
855 if (vf->adq_enabled) { in i40e_alloc_vsi_res()
856 vf->ch[idx].vsi_idx = vsi->idx; in i40e_alloc_vsi_res()
857 vf->ch[idx].vsi_id = vsi->id; in i40e_alloc_vsi_res()
861 if (vf->tx_rate) { in i40e_alloc_vsi_res()
862 max_tx_rate = vf->tx_rate; in i40e_alloc_vsi_res()
863 } else if (vf->ch[idx].max_tx_rate) { in i40e_alloc_vsi_res()
864 max_tx_rate = vf->ch[idx].max_tx_rate; in i40e_alloc_vsi_res()
873 vf->vf_id, ret); in i40e_alloc_vsi_res()
887 static void i40e_map_pf_queues_to_vsi(struct i40e_vf *vf) in i40e_map_pf_queues_to_vsi() argument
889 struct i40e_pf *pf = vf->pf; in i40e_map_pf_queues_to_vsi()
895 if (vf->adq_enabled) in i40e_map_pf_queues_to_vsi()
896 num_tc = vf->num_tc; in i40e_map_pf_queues_to_vsi()
899 if (vf->adq_enabled) { in i40e_map_pf_queues_to_vsi()
900 qps = vf->ch[i].num_qps; in i40e_map_pf_queues_to_vsi()
901 vsi_id = vf->ch[i].vsi_id; in i40e_map_pf_queues_to_vsi()
903 qps = pf->vsi[vf->lan_vsi_idx]->alloc_queue_pairs; in i40e_map_pf_queues_to_vsi()
904 vsi_id = vf->lan_vsi_id; in i40e_map_pf_queues_to_vsi()
912 u16 qid = i40e_vc_get_pf_queue_id(vf, in i40e_map_pf_queues_to_vsi()
916 qid = i40e_vc_get_pf_queue_id(vf, vsi_id, in i40e_map_pf_queues_to_vsi()
934 static void i40e_map_pf_to_vf_queues(struct i40e_vf *vf) in i40e_map_pf_to_vf_queues() argument
936 struct i40e_pf *pf = vf->pf; in i40e_map_pf_to_vf_queues()
943 if (vf->adq_enabled) in i40e_map_pf_to_vf_queues()
944 num_tc = vf->num_tc; in i40e_map_pf_to_vf_queues()
947 if (vf->adq_enabled) { in i40e_map_pf_to_vf_queues()
948 qps = vf->ch[i].num_qps; in i40e_map_pf_to_vf_queues()
949 vsi_id = vf->ch[i].vsi_id; in i40e_map_pf_to_vf_queues()
951 qps = pf->vsi[vf->lan_vsi_idx]->alloc_queue_pairs; in i40e_map_pf_to_vf_queues()
952 vsi_id = vf->lan_vsi_id; in i40e_map_pf_to_vf_queues()
956 qid = i40e_vc_get_pf_queue_id(vf, vsi_id, j); in i40e_map_pf_to_vf_queues()
959 wr32(hw, I40E_VPLAN_QTABLE(total_qps, vf->vf_id), in i40e_map_pf_to_vf_queues()
972 static void i40e_enable_vf_mappings(struct i40e_vf *vf) in i40e_enable_vf_mappings() argument
974 struct i40e_pf *pf = vf->pf; in i40e_enable_vf_mappings()
982 i40e_write_rx_ctl(hw, I40E_VSILAN_QBASE(vf->lan_vsi_id), in i40e_enable_vf_mappings()
987 wr32(hw, I40E_VPLAN_MAPENA(vf->vf_id), reg); in i40e_enable_vf_mappings()
989 i40e_map_pf_to_vf_queues(vf); in i40e_enable_vf_mappings()
990 i40e_map_pf_queues_to_vsi(vf); in i40e_enable_vf_mappings()
1001 static void i40e_disable_vf_mappings(struct i40e_vf *vf) in i40e_disable_vf_mappings() argument
1003 struct i40e_pf *pf = vf->pf; in i40e_disable_vf_mappings()
1008 wr32(hw, I40E_VPLAN_MAPENA(vf->vf_id), 0); in i40e_disable_vf_mappings()
1010 wr32(hw, I40E_VPLAN_QTABLE(i, vf->vf_id), in i40e_disable_vf_mappings()
1021 static void i40e_free_vf_res(struct i40e_vf *vf) in i40e_free_vf_res() argument
1023 struct i40e_pf *pf = vf->pf; in i40e_free_vf_res()
1031 clear_bit(I40E_VF_STATE_INIT, &vf->vf_states); in i40e_free_vf_res()
1036 if (vf->num_queue_pairs > I40E_DEFAULT_QUEUES_PER_VF) { in i40e_free_vf_res()
1037 pf->queues_left += vf->num_queue_pairs - in i40e_free_vf_res()
1042 if (vf->lan_vsi_idx) { in i40e_free_vf_res()
1043 i40e_vsi_release(pf->vsi[vf->lan_vsi_idx]); in i40e_free_vf_res()
1044 vf->lan_vsi_idx = 0; in i40e_free_vf_res()
1045 vf->lan_vsi_id = 0; in i40e_free_vf_res()
1049 if (vf->adq_enabled && vf->ch[0].vsi_idx) { in i40e_free_vf_res()
1050 for (j = 0; j < vf->num_tc; j++) { in i40e_free_vf_res()
1056 i40e_vsi_release(pf->vsi[vf->ch[j].vsi_idx]); in i40e_free_vf_res()
1057 vf->ch[j].vsi_idx = 0; in i40e_free_vf_res()
1058 vf->ch[j].vsi_id = 0; in i40e_free_vf_res()
1067 reg_idx = I40E_VFINT_DYN_CTL0(vf->vf_id); in i40e_free_vf_res()
1070 (vf->vf_id)) in i40e_free_vf_res()
1080 reg_idx = I40E_VPINT_LNKLST0(vf->vf_id); in i40e_free_vf_res()
1083 (vf->vf_id)) in i40e_free_vf_res()
1091 vf->num_queue_pairs = 0; in i40e_free_vf_res()
1092 clear_bit(I40E_VF_STATE_MC_PROMISC, &vf->vf_states); in i40e_free_vf_res()
1093 clear_bit(I40E_VF_STATE_UC_PROMISC, &vf->vf_states); in i40e_free_vf_res()
1102 static int i40e_alloc_vf_res(struct i40e_vf *vf) in i40e_alloc_vf_res() argument
1104 struct i40e_pf *pf = vf->pf; in i40e_alloc_vf_res()
1108 if (vf->num_req_queues && in i40e_alloc_vf_res()
1109 vf->num_req_queues <= pf->queues_left + I40E_DEFAULT_QUEUES_PER_VF) in i40e_alloc_vf_res()
1110 pf->num_vf_qps = vf->num_req_queues; in i40e_alloc_vf_res()
1115 ret = i40e_alloc_vsi_res(vf, 0); in i40e_alloc_vf_res()
1118 total_queue_pairs += pf->vsi[vf->lan_vsi_idx]->alloc_queue_pairs; in i40e_alloc_vf_res()
1121 if (vf->adq_enabled) { in i40e_alloc_vf_res()
1125 for (idx = 1; idx < vf->num_tc; idx++) { in i40e_alloc_vf_res()
1126 ret = i40e_alloc_vsi_res(vf, idx); in i40e_alloc_vf_res()
1134 vf->vf_id); in i40e_alloc_vf_res()
1135 vf->adq_enabled = false; in i40e_alloc_vf_res()
1148 if (vf->trusted) in i40e_alloc_vf_res()
1149 set_bit(I40E_VIRTCHNL_VF_CAP_PRIVILEGE, &vf->vf_caps); in i40e_alloc_vf_res()
1151 clear_bit(I40E_VIRTCHNL_VF_CAP_PRIVILEGE, &vf->vf_caps); in i40e_alloc_vf_res()
1156 vf->num_queue_pairs = total_queue_pairs; in i40e_alloc_vf_res()
1159 set_bit(I40E_VF_STATE_INIT, &vf->vf_states); in i40e_alloc_vf_res()
1163 i40e_free_vf_res(vf); in i40e_alloc_vf_res()
1177 static int i40e_quiesce_vf_pci(struct i40e_vf *vf) in i40e_quiesce_vf_pci() argument
1179 struct i40e_pf *pf = vf->pf; in i40e_quiesce_vf_pci()
1184 vf_abs_id = vf->vf_id + hw->func_caps.vf_base_id; in i40e_quiesce_vf_pci()
1276 i40e_set_vsi_promisc(struct i40e_vf *vf, u16 seid, bool multi_enable, in i40e_set_vsi_promisc() argument
1279 struct i40e_pf *pf = vf->pf; in i40e_set_vsi_promisc()
1294 vf->vf_id, in i40e_set_vsi_promisc()
1310 vf->vf_id, in i40e_set_vsi_promisc()
1327 vf->vf_id, in i40e_set_vsi_promisc()
1343 vf->vf_id, in i40e_set_vsi_promisc()
1368 static int i40e_config_vf_promiscuous_mode(struct i40e_vf *vf, in i40e_config_vf_promiscuous_mode() argument
1373 struct i40e_pf *pf = vf->pf; in i40e_config_vf_promiscuous_mode()
1380 if (!i40e_vc_isvalid_vsi_id(vf, vsi_id) || !vsi) in i40e_config_vf_promiscuous_mode()
1383 if (vf->port_vlan_id) { in i40e_config_vf_promiscuous_mode()
1384 aq_ret = i40e_set_vsi_promisc(vf, vsi->seid, allmulti, in i40e_config_vf_promiscuous_mode()
1385 alluni, &vf->port_vlan_id, 1); in i40e_config_vf_promiscuous_mode()
1393 aq_ret = i40e_set_vsi_promisc(vf, vsi->seid, allmulti, alluni, in i40e_config_vf_promiscuous_mode()
1400 aq_ret = i40e_set_vsi_promisc(vf, vsi->seid, allmulti, alluni, in i40e_config_vf_promiscuous_mode()
1440 static void i40e_trigger_vf_reset(struct i40e_vf *vf, bool flr) in i40e_trigger_vf_reset() argument
1442 struct i40e_pf *pf = vf->pf; in i40e_trigger_vf_reset()
1449 vf_active = test_and_clear_bit(I40E_VF_STATE_ACTIVE, &vf->vf_states); in i40e_trigger_vf_reset()
1457 clear_bit(I40E_VF_STATE_INIT, &vf->vf_states); in i40e_trigger_vf_reset()
1464 radq = rd32(hw, I40E_VFINT_ICR0_ENA(vf->vf_id)) & in i40e_trigger_vf_reset()
1468 if (i40e_sync_vfr_reset(hw, vf->vf_id)) in i40e_trigger_vf_reset()
1471 vf->vf_id); in i40e_trigger_vf_reset()
1476 reg = rd32(hw, I40E_VPGEN_VFRTRIG(vf->vf_id)); in i40e_trigger_vf_reset()
1478 wr32(hw, I40E_VPGEN_VFRTRIG(vf->vf_id), reg); in i40e_trigger_vf_reset()
1482 reg_idx = (hw->func_caps.vf_base_id + vf->vf_id) / 32; in i40e_trigger_vf_reset()
1483 bit_idx = (hw->func_caps.vf_base_id + vf->vf_id) % 32; in i40e_trigger_vf_reset()
1487 if (i40e_quiesce_vf_pci(vf)) in i40e_trigger_vf_reset()
1489 vf->vf_id); in i40e_trigger_vf_reset()
1500 static void i40e_cleanup_reset_vf(struct i40e_vf *vf) in i40e_cleanup_reset_vf() argument
1502 struct i40e_pf *pf = vf->pf; in i40e_cleanup_reset_vf()
1507 i40e_config_vf_promiscuous_mode(vf, vf->lan_vsi_id, false, false); in i40e_cleanup_reset_vf()
1510 i40e_free_vf_res(vf); in i40e_cleanup_reset_vf()
1522 reg = rd32(hw, I40E_VPGEN_VFRTRIG(vf->vf_id)); in i40e_cleanup_reset_vf()
1524 wr32(hw, I40E_VPGEN_VFRTRIG(vf->vf_id), reg); in i40e_cleanup_reset_vf()
1527 if (!i40e_alloc_vf_res(vf)) { in i40e_cleanup_reset_vf()
1528 int abs_vf_id = vf->vf_id + hw->func_caps.vf_base_id; in i40e_cleanup_reset_vf()
1529 i40e_enable_vf_mappings(vf); in i40e_cleanup_reset_vf()
1530 set_bit(I40E_VF_STATE_ACTIVE, &vf->vf_states); in i40e_cleanup_reset_vf()
1531 clear_bit(I40E_VF_STATE_DISABLED, &vf->vf_states); in i40e_cleanup_reset_vf()
1534 &vf->vf_states)) in i40e_cleanup_reset_vf()
1536 vf->num_vlan = 0; in i40e_cleanup_reset_vf()
1543 wr32(hw, I40E_VFGEN_RSTAT1(vf->vf_id), VIRTCHNL_VFR_VFACTIVE); in i40e_cleanup_reset_vf()
1554 bool i40e_reset_vf(struct i40e_vf *vf, bool flr) in i40e_reset_vf() argument
1556 struct i40e_pf *pf = vf->pf; in i40e_reset_vf()
1570 if (test_and_set_bit(I40E_VF_STATE_RESETTING, &vf->vf_states)) in i40e_reset_vf()
1573 i40e_trigger_vf_reset(vf, flr); in i40e_reset_vf()
1585 reg = rd32(hw, I40E_VPGEN_VFRSTAT(vf->vf_id)); in i40e_reset_vf()
1597 vf->vf_id); in i40e_reset_vf()
1601 if (vf->lan_vsi_idx != 0) in i40e_reset_vf()
1602 i40e_vsi_stop_rings(pf->vsi[vf->lan_vsi_idx]); in i40e_reset_vf()
1604 i40e_cleanup_reset_vf(vf); in i40e_reset_vf()
1608 clear_bit(I40E_VF_STATE_RESETTING, &vf->vf_states); in i40e_reset_vf()
1628 struct i40e_vf *vf; in i40e_reset_all_vfs() local
1642 vf = &pf->vf[v]; in i40e_reset_all_vfs()
1644 if (!test_bit(I40E_VF_STATE_RESETTING, &vf->vf_states)) in i40e_reset_all_vfs()
1645 i40e_trigger_vf_reset(&pf->vf[v], flr); in i40e_reset_all_vfs()
1661 vf = &pf->vf[v]; in i40e_reset_all_vfs()
1662 if (!test_bit(I40E_VF_STATE_RESETTING, &vf->vf_states)) { in i40e_reset_all_vfs()
1663 reg = rd32(hw, I40E_VPGEN_VFRSTAT(vf->vf_id)); in i40e_reset_all_vfs()
1683 pf->vf[v].vf_id); in i40e_reset_all_vfs()
1691 if (pf->vf[v].lan_vsi_idx == 0) in i40e_reset_all_vfs()
1695 if (test_bit(I40E_VF_STATE_RESETTING, &vf->vf_states)) in i40e_reset_all_vfs()
1698 i40e_vsi_stop_rings_no_wait(pf->vsi[pf->vf[v].lan_vsi_idx]); in i40e_reset_all_vfs()
1706 if (pf->vf[v].lan_vsi_idx == 0) in i40e_reset_all_vfs()
1710 if (test_bit(I40E_VF_STATE_RESETTING, &vf->vf_states)) in i40e_reset_all_vfs()
1713 i40e_vsi_wait_queues_disabled(pf->vsi[pf->vf[v].lan_vsi_idx]); in i40e_reset_all_vfs()
1724 if (test_bit(I40E_VF_STATE_RESETTING, &vf->vf_states)) in i40e_reset_all_vfs()
1727 i40e_cleanup_reset_vf(&pf->vf[v]); in i40e_reset_all_vfs()
1749 if (!pf->vf) in i40e_free_vfs()
1769 if (test_bit(I40E_VF_STATE_INIT, &pf->vf[i].vf_states)) in i40e_free_vfs()
1772 i40e_vsi_stop_rings_no_wait(pf->vsi[pf->vf[i].lan_vsi_idx]); in i40e_free_vfs()
1776 if (test_bit(I40E_VF_STATE_INIT, &pf->vf[i].vf_states)) in i40e_free_vfs()
1779 i40e_vsi_wait_queues_disabled(pf->vsi[pf->vf[i].lan_vsi_idx]); in i40e_free_vfs()
1786 if (test_bit(I40E_VF_STATE_INIT, &pf->vf[i].vf_states)) in i40e_free_vfs()
1787 i40e_free_vf_res(&pf->vf[i]); in i40e_free_vfs()
1789 i40e_disable_vf_mappings(&pf->vf[i]); in i40e_free_vfs()
1792 kfree(pf->vf); in i40e_free_vfs()
1793 pf->vf = NULL; in i40e_free_vfs()
1844 pf->vf = vfs; in i40e_alloc_vfs()
1978 static int i40e_vc_send_msg_to_vf(struct i40e_vf *vf, u32 v_opcode, in i40e_vc_send_msg_to_vf() argument
1987 if (!vf || vf->vf_id >= vf->pf->num_alloc_vfs) in i40e_vc_send_msg_to_vf()
1990 pf = vf->pf; in i40e_vc_send_msg_to_vf()
1992 abs_vf_id = vf->vf_id + hw->func_caps.vf_base_id; in i40e_vc_send_msg_to_vf()
1999 vf->vf_id, pf->hw.aq.asq_last_status); in i40e_vc_send_msg_to_vf()
2014 static int i40e_vc_send_resp_to_vf(struct i40e_vf *vf, in i40e_vc_send_resp_to_vf() argument
2018 return i40e_vc_send_msg_to_vf(vf, opcode, retval, NULL, 0); in i40e_vc_send_resp_to_vf()
2029 static bool i40e_sync_vf_state(struct i40e_vf *vf, enum i40e_vf_states state) in i40e_sync_vf_state() argument
2039 if (test_bit(state, &vf->vf_states)) in i40e_sync_vf_state()
2044 return test_bit(state, &vf->vf_states); in i40e_sync_vf_state()
2054 static int i40e_vc_get_version_msg(struct i40e_vf *vf, u8 *msg) in i40e_vc_get_version_msg() argument
2060 vf->vf_ver = *(struct virtchnl_version_info *)msg; in i40e_vc_get_version_msg()
2062 if (VF_IS_V10(&vf->vf_ver)) in i40e_vc_get_version_msg()
2064 return i40e_vc_send_msg_to_vf(vf, VIRTCHNL_OP_VERSION, in i40e_vc_get_version_msg()
2073 static void i40e_del_qch(struct i40e_vf *vf) in i40e_del_qch() argument
2075 struct i40e_pf *pf = vf->pf; in i40e_del_qch()
2081 for (i = 1; i < vf->num_tc; i++) { in i40e_del_qch()
2082 if (vf->ch[i].vsi_idx) { in i40e_del_qch()
2083 i40e_vsi_release(pf->vsi[vf->ch[i].vsi_idx]); in i40e_del_qch()
2084 vf->ch[i].vsi_idx = 0; in i40e_del_qch()
2085 vf->ch[i].vsi_id = 0; in i40e_del_qch()
2099 static u16 i40e_vc_get_max_frame_size(struct i40e_vf *vf) in i40e_vc_get_max_frame_size() argument
2101 u16 max_frame_size = vf->pf->hw.phy.link_info.max_frame_size; in i40e_vc_get_max_frame_size()
2103 if (vf->port_vlan_id) in i40e_vc_get_max_frame_size()
2116 static int i40e_vc_get_vf_resources_msg(struct i40e_vf *vf, u8 *msg) in i40e_vc_get_vf_resources_msg() argument
2119 struct i40e_pf *pf = vf->pf; in i40e_vc_get_vf_resources_msg()
2126 if (!i40e_sync_vf_state(vf, I40E_VF_STATE_INIT)) { in i40e_vc_get_vf_resources_msg()
2138 if (VF_IS_V11(&vf->vf_ver)) in i40e_vc_get_vf_resources_msg()
2139 vf->driver_caps = *(u32 *)msg; in i40e_vc_get_vf_resources_msg()
2141 vf->driver_caps = VIRTCHNL_VF_OFFLOAD_L2 | in i40e_vc_get_vf_resources_msg()
2147 vsi = pf->vsi[vf->lan_vsi_idx]; in i40e_vc_get_vf_resources_msg()
2151 if (i40e_vf_client_capable(pf, vf->vf_id) && in i40e_vc_get_vf_resources_msg()
2152 (vf->driver_caps & VIRTCHNL_VF_OFFLOAD_IWARP)) { in i40e_vc_get_vf_resources_msg()
2154 set_bit(I40E_VF_STATE_IWARPENA, &vf->vf_states); in i40e_vc_get_vf_resources_msg()
2156 clear_bit(I40E_VF_STATE_IWARPENA, &vf->vf_states); in i40e_vc_get_vf_resources_msg()
2159 if (vf->driver_caps & VIRTCHNL_VF_OFFLOAD_RSS_PF) { in i40e_vc_get_vf_resources_msg()
2163 (vf->driver_caps & VIRTCHNL_VF_OFFLOAD_RSS_AQ)) in i40e_vc_get_vf_resources_msg()
2170 if (vf->driver_caps & VIRTCHNL_VF_OFFLOAD_RSS_PCTYPE_V2) in i40e_vc_get_vf_resources_msg()
2175 if (vf->driver_caps & VIRTCHNL_VF_OFFLOAD_ENCAP) in i40e_vc_get_vf_resources_msg()
2179 (vf->driver_caps & VIRTCHNL_VF_OFFLOAD_ENCAP_CSUM)) in i40e_vc_get_vf_resources_msg()
2182 if (vf->driver_caps & VIRTCHNL_VF_OFFLOAD_RX_POLLING) { in i40e_vc_get_vf_resources_msg()
2186 vf->vf_id); in i40e_vc_get_vf_resources_msg()
2194 if (vf->driver_caps & VIRTCHNL_VF_OFFLOAD_WB_ON_ITR) in i40e_vc_get_vf_resources_msg()
2199 if (vf->driver_caps & VIRTCHNL_VF_OFFLOAD_REQ_QUEUES) in i40e_vc_get_vf_resources_msg()
2202 if (vf->driver_caps & VIRTCHNL_VF_OFFLOAD_ADQ) in i40e_vc_get_vf_resources_msg()
2206 vfres->num_queue_pairs = vf->num_queue_pairs; in i40e_vc_get_vf_resources_msg()
2210 vfres->max_mtu = i40e_vc_get_max_frame_size(vf); in i40e_vc_get_vf_resources_msg()
2212 if (vf->lan_vsi_idx) { in i40e_vc_get_vf_resources_msg()
2213 vfres->vsi_res[0].vsi_id = vf->lan_vsi_id; in i40e_vc_get_vf_resources_msg()
2219 if (!(vf->driver_caps & VIRTCHNL_VF_OFFLOAD_USO) && !vf->pf_set_mac) { in i40e_vc_get_vf_resources_msg()
2220 i40e_del_mac_filter(vsi, vf->default_lan_addr.addr); in i40e_vc_get_vf_resources_msg()
2221 eth_zero_addr(vf->default_lan_addr.addr); in i40e_vc_get_vf_resources_msg()
2224 vf->default_lan_addr.addr); in i40e_vc_get_vf_resources_msg()
2226 set_bit(I40E_VF_STATE_ACTIVE, &vf->vf_states); in i40e_vc_get_vf_resources_msg()
2230 ret = i40e_vc_send_msg_to_vf(vf, VIRTCHNL_OP_GET_VF_RESOURCES, in i40e_vc_get_vf_resources_msg()
2245 static int i40e_vc_config_promiscuous_mode_msg(struct i40e_vf *vf, u8 *msg) in i40e_vc_config_promiscuous_mode_msg() argument
2249 struct i40e_pf *pf = vf->pf; in i40e_vc_config_promiscuous_mode_msg()
2254 if (!i40e_sync_vf_state(vf, I40E_VF_STATE_ACTIVE)) { in i40e_vc_config_promiscuous_mode_msg()
2258 if (!test_bit(I40E_VIRTCHNL_VF_CAP_PRIVILEGE, &vf->vf_caps)) { in i40e_vc_config_promiscuous_mode_msg()
2261 vf->vf_id); in i40e_vc_config_promiscuous_mode_msg()
2275 if (!i40e_vc_isvalid_vsi_id(vf, info->vsi_id)) { in i40e_vc_config_promiscuous_mode_msg()
2286 aq_ret = i40e_config_vf_promiscuous_mode(vf, info->vsi_id, allmulti, in i40e_vc_config_promiscuous_mode_msg()
2293 &vf->vf_states)) in i40e_vc_config_promiscuous_mode_msg()
2296 vf->vf_id); in i40e_vc_config_promiscuous_mode_msg()
2298 &vf->vf_states)) in i40e_vc_config_promiscuous_mode_msg()
2301 vf->vf_id); in i40e_vc_config_promiscuous_mode_msg()
2305 &vf->vf_states)) in i40e_vc_config_promiscuous_mode_msg()
2308 vf->vf_id); in i40e_vc_config_promiscuous_mode_msg()
2310 &vf->vf_states)) in i40e_vc_config_promiscuous_mode_msg()
2313 vf->vf_id); in i40e_vc_config_promiscuous_mode_msg()
2317 return i40e_vc_send_resp_to_vf(vf, in i40e_vc_config_promiscuous_mode_msg()
2330 static int i40e_vc_config_queues_msg(struct i40e_vf *vf, u8 *msg) in i40e_vc_config_queues_msg() argument
2336 struct i40e_pf *pf = vf->pf; in i40e_vc_config_queues_msg()
2342 if (!i40e_sync_vf_state(vf, I40E_VF_STATE_ACTIVE)) { in i40e_vc_config_queues_msg()
2347 if (!i40e_vc_isvalid_vsi_id(vf, qci->vsi_id)) { in i40e_vc_config_queues_msg()
2357 if (vf->adq_enabled) { in i40e_vc_config_queues_msg()
2358 for (i = 0; i < vf->num_tc; i++) in i40e_vc_config_queues_msg()
2359 num_qps_all += vf->ch[i].num_qps; in i40e_vc_config_queues_msg()
2371 if (!vf->adq_enabled) { in i40e_vc_config_queues_msg()
2372 if (!i40e_vc_isvalid_queue_id(vf, vsi_id, in i40e_vc_config_queues_msg()
2388 if (vf->adq_enabled) { in i40e_vc_config_queues_msg()
2389 if (idx >= ARRAY_SIZE(vf->ch)) { in i40e_vc_config_queues_msg()
2393 vsi_id = vf->ch[idx].vsi_id; in i40e_vc_config_queues_msg()
2396 if (i40e_config_vsi_rx_queue(vf, vsi_id, vsi_queue_id, in i40e_vc_config_queues_msg()
2398 i40e_config_vsi_tx_queue(vf, vsi_id, vsi_queue_id, in i40e_vc_config_queues_msg()
2409 if (vf->adq_enabled) { in i40e_vc_config_queues_msg()
2410 if (idx >= ARRAY_SIZE(vf->ch)) { in i40e_vc_config_queues_msg()
2414 if (j == (vf->ch[idx].num_qps - 1)) { in i40e_vc_config_queues_msg()
2425 if (!vf->adq_enabled) { in i40e_vc_config_queues_msg()
2426 pf->vsi[vf->lan_vsi_idx]->num_queue_pairs = in i40e_vc_config_queues_msg()
2429 for (i = 0; i < vf->num_tc; i++) { in i40e_vc_config_queues_msg()
2430 vsi = pf->vsi[vf->ch[i].vsi_idx]; in i40e_vc_config_queues_msg()
2431 vsi->num_queue_pairs = vf->ch[i].num_qps; in i40e_vc_config_queues_msg()
2442 return i40e_vc_send_resp_to_vf(vf, VIRTCHNL_OP_CONFIG_VSI_QUEUES, in i40e_vc_config_queues_msg()
2454 static int i40e_validate_queue_map(struct i40e_vf *vf, u16 vsi_id, in i40e_validate_queue_map() argument
2460 if (vf->adq_enabled) { in i40e_validate_queue_map()
2461 vsi_id = vf->ch[vsi_queue_id / I40E_MAX_VF_VSI].vsi_id; in i40e_validate_queue_map()
2467 if (!i40e_vc_isvalid_queue_id(vf, vsi_id, queue_id)) in i40e_validate_queue_map()
2482 static int i40e_vc_config_irq_map_msg(struct i40e_vf *vf, u8 *msg) in i40e_vc_config_irq_map_msg() argument
2491 if (!i40e_sync_vf_state(vf, I40E_VF_STATE_ACTIVE)) { in i40e_vc_config_irq_map_msg()
2497 vf->pf->hw.func_caps.num_msix_vectors_vf) { in i40e_vc_config_irq_map_msg()
2505 if (!i40e_vc_isvalid_vector_id(vf, map->vector_id) || in i40e_vc_config_irq_map_msg()
2506 !i40e_vc_isvalid_vsi_id(vf, map->vsi_id)) { in i40e_vc_config_irq_map_msg()
2512 if (i40e_validate_queue_map(vf, vsi_id, map->rxq_map)) { in i40e_vc_config_irq_map_msg()
2517 if (i40e_validate_queue_map(vf, vsi_id, map->txq_map)) { in i40e_vc_config_irq_map_msg()
2522 i40e_config_irq_link_list(vf, vsi_id, map); in i40e_vc_config_irq_map_msg()
2526 return i40e_vc_send_resp_to_vf(vf, VIRTCHNL_OP_CONFIG_IRQ_MAP, in i40e_vc_config_irq_map_msg()
2598 static int i40e_vc_enable_queues_msg(struct i40e_vf *vf, u8 *msg) in i40e_vc_enable_queues_msg() argument
2602 struct i40e_pf *pf = vf->pf; in i40e_vc_enable_queues_msg()
2606 if (vf->is_disabled_from_host) { in i40e_vc_enable_queues_msg()
2610 vf->vf_id); in i40e_vc_enable_queues_msg()
2614 if (!test_bit(I40E_VF_STATE_ACTIVE, &vf->vf_states)) { in i40e_vc_enable_queues_msg()
2619 if (!i40e_vc_isvalid_vsi_id(vf, vqs->vsi_id)) { in i40e_vc_enable_queues_msg()
2630 if (i40e_ctrl_vf_rx_rings(pf->vsi[vf->lan_vsi_idx], vqs->rx_queues, in i40e_vc_enable_queues_msg()
2635 if (i40e_ctrl_vf_tx_rings(pf->vsi[vf->lan_vsi_idx], vqs->tx_queues, in i40e_vc_enable_queues_msg()
2642 if (vf->adq_enabled) { in i40e_vc_enable_queues_msg()
2644 for (i = 1; i < vf->num_tc; i++) { in i40e_vc_enable_queues_msg()
2645 if (i40e_vsi_start_rings(pf->vsi[vf->ch[i].vsi_idx])) in i40e_vc_enable_queues_msg()
2652 return i40e_vc_send_resp_to_vf(vf, VIRTCHNL_OP_ENABLE_QUEUES, in i40e_vc_enable_queues_msg()
2664 static int i40e_vc_disable_queues_msg(struct i40e_vf *vf, u8 *msg) in i40e_vc_disable_queues_msg() argument
2668 struct i40e_pf *pf = vf->pf; in i40e_vc_disable_queues_msg()
2671 if (!i40e_sync_vf_state(vf, I40E_VF_STATE_ACTIVE)) { in i40e_vc_disable_queues_msg()
2676 if (!i40e_vc_isvalid_vsi_id(vf, vqs->vsi_id)) { in i40e_vc_disable_queues_msg()
2687 if (i40e_ctrl_vf_tx_rings(pf->vsi[vf->lan_vsi_idx], vqs->tx_queues, in i40e_vc_disable_queues_msg()
2692 if (i40e_ctrl_vf_rx_rings(pf->vsi[vf->lan_vsi_idx], vqs->rx_queues, in i40e_vc_disable_queues_msg()
2699 return i40e_vc_send_resp_to_vf(vf, VIRTCHNL_OP_DISABLE_QUEUES, in i40e_vc_disable_queues_msg()
2710 static int i40e_check_enough_queue(struct i40e_vf *vf, u16 needed) in i40e_check_enough_queue() argument
2714 struct i40e_pf *pf = vf->pf; in i40e_check_enough_queue()
2717 vsi = pf->vsi[vf->lan_vsi_idx]; in i40e_check_enough_queue()
2766 static int i40e_vc_request_queues_msg(struct i40e_vf *vf, u8 *msg) in i40e_vc_request_queues_msg() argument
2771 u8 cur_pairs = vf->num_queue_pairs; in i40e_vc_request_queues_msg()
2772 struct i40e_pf *pf = vf->pf; in i40e_vc_request_queues_msg()
2774 if (!i40e_sync_vf_state(vf, I40E_VF_STATE_ACTIVE)) in i40e_vc_request_queues_msg()
2780 vf->vf_id, in i40e_vc_request_queues_msg()
2786 vf->vf_id, in i40e_vc_request_queues_msg()
2790 } else if (i40e_check_enough_queue(vf, req_pairs) < 0) { in i40e_vc_request_queues_msg()
2793 vf->vf_id, in i40e_vc_request_queues_msg()
2798 vf->num_req_queues = req_pairs; in i40e_vc_request_queues_msg()
2799 i40e_vc_reset_vf(vf, true); in i40e_vc_request_queues_msg()
2803 return i40e_vc_send_msg_to_vf(vf, VIRTCHNL_OP_REQUEST_QUEUES, 0, in i40e_vc_request_queues_msg()
2814 static int i40e_vc_get_stats_msg(struct i40e_vf *vf, u8 *msg) in i40e_vc_get_stats_msg() argument
2818 struct i40e_pf *pf = vf->pf; in i40e_vc_get_stats_msg()
2825 if (!i40e_sync_vf_state(vf, I40E_VF_STATE_ACTIVE)) { in i40e_vc_get_stats_msg()
2830 if (!i40e_vc_isvalid_vsi_id(vf, vqs->vsi_id)) { in i40e_vc_get_stats_msg()
2835 vsi = pf->vsi[vf->lan_vsi_idx]; in i40e_vc_get_stats_msg()
2845 return i40e_vc_send_msg_to_vf(vf, VIRTCHNL_OP_GET_STATS, aq_ret, in i40e_vc_get_stats_msg()
2872 static inline int i40e_check_vf_permission(struct i40e_vf *vf, in i40e_check_vf_permission() argument
2875 struct i40e_pf *pf = vf->pf; in i40e_check_vf_permission()
2876 struct i40e_vsi *vsi = pf->vsi[vf->lan_vsi_idx]; in i40e_check_vf_permission()
2898 if (!test_bit(I40E_VIRTCHNL_VF_CAP_PRIVILEGE, &vf->vf_caps) && in i40e_check_vf_permission()
2899 !is_multicast_ether_addr(addr) && vf->pf_set_mac && in i40e_check_vf_permission()
2900 !ether_addr_equal(addr, vf->default_lan_addr.addr)) { in i40e_check_vf_permission()
2916 if (!test_bit(I40E_VIRTCHNL_VF_CAP_PRIVILEGE, &vf->vf_caps) && in i40e_check_vf_permission()
2933 static int i40e_vc_add_mac_addr_msg(struct i40e_vf *vf, u8 *msg) in i40e_vc_add_mac_addr_msg() argument
2937 struct i40e_pf *pf = vf->pf; in i40e_vc_add_mac_addr_msg()
2942 if (!i40e_sync_vf_state(vf, I40E_VF_STATE_ACTIVE) || in i40e_vc_add_mac_addr_msg()
2943 !i40e_vc_isvalid_vsi_id(vf, al->vsi_id)) { in i40e_vc_add_mac_addr_msg()
2948 vsi = pf->vsi[vf->lan_vsi_idx]; in i40e_vc_add_mac_addr_msg()
2955 ret = i40e_check_vf_permission(vf, al); in i40e_vc_add_mac_addr_msg()
2972 al->list[i].addr, vf->vf_id); in i40e_vc_add_mac_addr_msg()
2978 is_zero_ether_addr(vf->default_lan_addr.addr)) in i40e_vc_add_mac_addr_msg()
2979 ether_addr_copy(vf->default_lan_addr.addr, in i40e_vc_add_mac_addr_msg()
2989 vf->vf_id, ret); in i40e_vc_add_mac_addr_msg()
2993 return i40e_vc_send_msg_to_vf(vf, VIRTCHNL_OP_ADD_ETH_ADDR, in i40e_vc_add_mac_addr_msg()
3004 static int i40e_vc_del_mac_addr_msg(struct i40e_vf *vf, u8 *msg) in i40e_vc_del_mac_addr_msg() argument
3009 struct i40e_pf *pf = vf->pf; in i40e_vc_del_mac_addr_msg()
3014 if (!i40e_sync_vf_state(vf, I40E_VF_STATE_ACTIVE) || in i40e_vc_del_mac_addr_msg()
3015 !i40e_vc_isvalid_vsi_id(vf, al->vsi_id)) { in i40e_vc_del_mac_addr_msg()
3024 al->list[i].addr, vf->vf_id); in i40e_vc_del_mac_addr_msg()
3028 if (ether_addr_equal(al->list[i].addr, vf->default_lan_addr.addr)) in i40e_vc_del_mac_addr_msg()
3031 vsi = pf->vsi[vf->lan_vsi_idx]; in i40e_vc_del_mac_addr_msg()
3048 vf->vf_id, ret); in i40e_vc_del_mac_addr_msg()
3050 if (vf->trusted && was_unimac_deleted) { in i40e_vc_del_mac_addr_msg()
3063 ether_addr_copy(vf->default_lan_addr.addr, macaddr); in i40e_vc_del_mac_addr_msg()
3068 return i40e_vc_send_resp_to_vf(vf, VIRTCHNL_OP_DEL_ETH_ADDR, ret); in i40e_vc_del_mac_addr_msg()
3078 static int i40e_vc_add_vlan_msg(struct i40e_vf *vf, u8 *msg) in i40e_vc_add_vlan_msg() argument
3082 struct i40e_pf *pf = vf->pf; in i40e_vc_add_vlan_msg()
3087 if ((vf->num_vlan >= I40E_VC_MAX_VLAN_PER_VF) && in i40e_vc_add_vlan_msg()
3088 !test_bit(I40E_VIRTCHNL_VF_CAP_PRIVILEGE, &vf->vf_caps)) { in i40e_vc_add_vlan_msg()
3093 if (!test_bit(I40E_VF_STATE_ACTIVE, &vf->vf_states) || in i40e_vc_add_vlan_msg()
3094 !i40e_vc_isvalid_vsi_id(vf, vfl->vsi_id)) { in i40e_vc_add_vlan_msg()
3107 vsi = pf->vsi[vf->lan_vsi_idx]; in i40e_vc_add_vlan_msg()
3118 vf->num_vlan++; in i40e_vc_add_vlan_msg()
3120 if (test_bit(I40E_VF_STATE_UC_PROMISC, &vf->vf_states)) in i40e_vc_add_vlan_msg()
3125 if (test_bit(I40E_VF_STATE_MC_PROMISC, &vf->vf_states)) in i40e_vc_add_vlan_msg()
3134 vfl->vlan_id[i], vf->vf_id, ret); in i40e_vc_add_vlan_msg()
3139 return i40e_vc_send_resp_to_vf(vf, VIRTCHNL_OP_ADD_VLAN, aq_ret); in i40e_vc_add_vlan_msg()
3149 static int i40e_vc_remove_vlan_msg(struct i40e_vf *vf, u8 *msg) in i40e_vc_remove_vlan_msg() argument
3153 struct i40e_pf *pf = vf->pf; in i40e_vc_remove_vlan_msg()
3158 if (!i40e_sync_vf_state(vf, I40E_VF_STATE_ACTIVE) || in i40e_vc_remove_vlan_msg()
3159 !i40e_vc_isvalid_vsi_id(vf, vfl->vsi_id)) { in i40e_vc_remove_vlan_msg()
3171 vsi = pf->vsi[vf->lan_vsi_idx]; in i40e_vc_remove_vlan_msg()
3180 vf->num_vlan--; in i40e_vc_remove_vlan_msg()
3182 if (test_bit(I40E_VF_STATE_UC_PROMISC, &vf->vf_states)) in i40e_vc_remove_vlan_msg()
3187 if (test_bit(I40E_VF_STATE_MC_PROMISC, &vf->vf_states)) in i40e_vc_remove_vlan_msg()
3196 return i40e_vc_send_resp_to_vf(vf, VIRTCHNL_OP_DEL_VLAN, aq_ret); in i40e_vc_remove_vlan_msg()
3207 static int i40e_vc_iwarp_msg(struct i40e_vf *vf, u8 *msg, u16 msglen) in i40e_vc_iwarp_msg() argument
3209 struct i40e_pf *pf = vf->pf; in i40e_vc_iwarp_msg()
3210 int abs_vf_id = vf->vf_id + pf->hw.func_caps.vf_base_id; in i40e_vc_iwarp_msg()
3213 if (!test_bit(I40E_VF_STATE_ACTIVE, &vf->vf_states) || in i40e_vc_iwarp_msg()
3214 !test_bit(I40E_VF_STATE_IWARPENA, &vf->vf_states)) { in i40e_vc_iwarp_msg()
3224 return i40e_vc_send_resp_to_vf(vf, VIRTCHNL_OP_IWARP, in i40e_vc_iwarp_msg()
3236 static int i40e_vc_iwarp_qvmap_msg(struct i40e_vf *vf, u8 *msg, bool config) in i40e_vc_iwarp_qvmap_msg() argument
3242 if (!test_bit(I40E_VF_STATE_ACTIVE, &vf->vf_states) || in i40e_vc_iwarp_qvmap_msg()
3243 !test_bit(I40E_VF_STATE_IWARPENA, &vf->vf_states)) { in i40e_vc_iwarp_qvmap_msg()
3249 if (i40e_config_iwarp_qvlist(vf, qvlist_info)) in i40e_vc_iwarp_qvmap_msg()
3252 i40e_release_iwarp_qvlist(vf); in i40e_vc_iwarp_qvmap_msg()
3257 return i40e_vc_send_resp_to_vf(vf, in i40e_vc_iwarp_qvmap_msg()
3270 static int i40e_vc_config_rss_key(struct i40e_vf *vf, u8 *msg) in i40e_vc_config_rss_key() argument
3274 struct i40e_pf *pf = vf->pf; in i40e_vc_config_rss_key()
3278 if (!i40e_sync_vf_state(vf, I40E_VF_STATE_ACTIVE) || in i40e_vc_config_rss_key()
3279 !i40e_vc_isvalid_vsi_id(vf, vrk->vsi_id) || in i40e_vc_config_rss_key()
3285 vsi = pf->vsi[vf->lan_vsi_idx]; in i40e_vc_config_rss_key()
3289 return i40e_vc_send_resp_to_vf(vf, VIRTCHNL_OP_CONFIG_RSS_KEY, in i40e_vc_config_rss_key()
3300 static int i40e_vc_config_rss_lut(struct i40e_vf *vf, u8 *msg) in i40e_vc_config_rss_lut() argument
3304 struct i40e_pf *pf = vf->pf; in i40e_vc_config_rss_lut()
3309 if (!i40e_sync_vf_state(vf, I40E_VF_STATE_ACTIVE) || in i40e_vc_config_rss_lut()
3310 !i40e_vc_isvalid_vsi_id(vf, vrl->vsi_id) || in i40e_vc_config_rss_lut()
3317 if (vrl->lut[i] >= vf->num_queue_pairs) { in i40e_vc_config_rss_lut()
3322 vsi = pf->vsi[vf->lan_vsi_idx]; in i40e_vc_config_rss_lut()
3326 return i40e_vc_send_resp_to_vf(vf, VIRTCHNL_OP_CONFIG_RSS_LUT, in i40e_vc_config_rss_lut()
3337 static int i40e_vc_get_rss_hena(struct i40e_vf *vf, u8 *msg) in i40e_vc_get_rss_hena() argument
3340 struct i40e_pf *pf = vf->pf; in i40e_vc_get_rss_hena()
3344 if (!i40e_sync_vf_state(vf, I40E_VF_STATE_ACTIVE)) { in i40e_vc_get_rss_hena()
3359 aq_ret = i40e_vc_send_msg_to_vf(vf, VIRTCHNL_OP_GET_RSS_HENA_CAPS, in i40e_vc_get_rss_hena()
3372 static int i40e_vc_set_rss_hena(struct i40e_vf *vf, u8 *msg) in i40e_vc_set_rss_hena() argument
3376 struct i40e_pf *pf = vf->pf; in i40e_vc_set_rss_hena()
3380 if (!i40e_sync_vf_state(vf, I40E_VF_STATE_ACTIVE)) { in i40e_vc_set_rss_hena()
3384 i40e_write_rx_ctl(hw, I40E_VFQF_HENA1(0, vf->vf_id), (u32)vrh->hena); in i40e_vc_set_rss_hena()
3385 i40e_write_rx_ctl(hw, I40E_VFQF_HENA1(1, vf->vf_id), in i40e_vc_set_rss_hena()
3390 return i40e_vc_send_resp_to_vf(vf, VIRTCHNL_OP_SET_RSS_HENA, aq_ret); in i40e_vc_set_rss_hena()
3400 static int i40e_vc_enable_vlan_stripping(struct i40e_vf *vf, u8 *msg) in i40e_vc_enable_vlan_stripping() argument
3405 if (!i40e_sync_vf_state(vf, I40E_VF_STATE_ACTIVE)) { in i40e_vc_enable_vlan_stripping()
3410 vsi = vf->pf->vsi[vf->lan_vsi_idx]; in i40e_vc_enable_vlan_stripping()
3415 return i40e_vc_send_resp_to_vf(vf, VIRTCHNL_OP_ENABLE_VLAN_STRIPPING, in i40e_vc_enable_vlan_stripping()
3426 static int i40e_vc_disable_vlan_stripping(struct i40e_vf *vf, u8 *msg) in i40e_vc_disable_vlan_stripping() argument
3431 if (!i40e_sync_vf_state(vf, I40E_VF_STATE_ACTIVE)) { in i40e_vc_disable_vlan_stripping()
3436 vsi = vf->pf->vsi[vf->lan_vsi_idx]; in i40e_vc_disable_vlan_stripping()
3441 return i40e_vc_send_resp_to_vf(vf, VIRTCHNL_OP_DISABLE_VLAN_STRIPPING, in i40e_vc_disable_vlan_stripping()
3452 static int i40e_validate_cloud_filter(struct i40e_vf *vf, in i40e_validate_cloud_filter() argument
3457 struct i40e_pf *pf = vf->pf; in i40e_validate_cloud_filter()
3467 vf->vf_id, tc_filter->action); in i40e_validate_cloud_filter()
3473 tc_filter->action_meta > vf->num_tc) { in i40e_validate_cloud_filter()
3475 vf->vf_id, tc_filter->action_meta); in i40e_validate_cloud_filter()
3489 vsi = pf->vsi[vf->lan_vsi_idx]; in i40e_validate_cloud_filter()
3495 data.dst_mac, vf->vf_id); in i40e_validate_cloud_filter()
3510 vf->vf_id, ntohs(data.vlan_id)); in i40e_validate_cloud_filter()
3516 if (!test_bit(I40E_VIRTCHNL_VF_CAP_PRIVILEGE, &vf->vf_caps)) { in i40e_validate_cloud_filter()
3519 vf->vf_id); in i40e_validate_cloud_filter()
3528 vf->vf_id, data.dst_mac); in i40e_validate_cloud_filter()
3537 vf->vf_id, data.src_mac); in i40e_validate_cloud_filter()
3545 vf->vf_id); in i40e_validate_cloud_filter()
3553 vf->vf_id); in i40e_validate_cloud_filter()
3561 vf->vf_id); in i40e_validate_cloud_filter()
3568 vf->vf_id); in i40e_validate_cloud_filter()
3583 static struct i40e_vsi *i40e_find_vsi_from_seid(struct i40e_vf *vf, u16 seid) in i40e_find_vsi_from_seid() argument
3585 struct i40e_pf *pf = vf->pf; in i40e_find_vsi_from_seid()
3589 for (i = 0; i < vf->num_tc ; i++) { in i40e_find_vsi_from_seid()
3590 vsi = i40e_find_vsi_from_id(pf, vf->ch[i].vsi_id); in i40e_find_vsi_from_seid()
3603 static void i40e_del_all_cloud_filters(struct i40e_vf *vf) in i40e_del_all_cloud_filters() argument
3606 struct i40e_pf *pf = vf->pf; in i40e_del_all_cloud_filters()
3612 &vf->cloud_filter_list, cloud_node) { in i40e_del_all_cloud_filters()
3613 vsi = i40e_find_vsi_from_seid(vf, cfilter->seid); in i40e_del_all_cloud_filters()
3617 vf->vf_id, cfilter->seid); in i40e_del_all_cloud_filters()
3629 vf->vf_id, ret, in i40e_del_all_cloud_filters()
3635 vf->num_cloud_filters--; in i40e_del_all_cloud_filters()
3646 static int i40e_vc_del_cloud_filter(struct i40e_vf *vf, u8 *msg) in i40e_vc_del_cloud_filter() argument
3652 struct i40e_pf *pf = vf->pf; in i40e_vc_del_cloud_filter()
3658 if (!i40e_sync_vf_state(vf, I40E_VF_STATE_ACTIVE)) { in i40e_vc_del_cloud_filter()
3663 if (!vf->adq_enabled) { in i40e_vc_del_cloud_filter()
3666 vf->vf_id); in i40e_vc_del_cloud_filter()
3671 if (i40e_validate_cloud_filter(vf, vcf)) { in i40e_vc_del_cloud_filter()
3674 vf->vf_id); in i40e_vc_del_cloud_filter()
3716 vf->vf_id); in i40e_vc_del_cloud_filter()
3720 vsi = pf->vsi[vf->ch[vcf->action_meta].vsi_idx]; in i40e_vc_del_cloud_filter()
3732 vf->vf_id, ret, in i40e_vc_del_cloud_filter()
3738 &vf->cloud_filter_list, cloud_node) { in i40e_vc_del_cloud_filter()
3763 vf->num_cloud_filters--; in i40e_vc_del_cloud_filter()
3767 return i40e_vc_send_resp_to_vf(vf, VIRTCHNL_OP_DEL_CLOUD_FILTER, in i40e_vc_del_cloud_filter()
3778 static int i40e_vc_add_cloud_filter(struct i40e_vf *vf, u8 *msg) in i40e_vc_add_cloud_filter() argument
3784 struct i40e_pf *pf = vf->pf; in i40e_vc_add_cloud_filter()
3789 if (!i40e_sync_vf_state(vf, I40E_VF_STATE_ACTIVE)) { in i40e_vc_add_cloud_filter()
3794 if (!vf->adq_enabled) { in i40e_vc_add_cloud_filter()
3797 vf->vf_id); in i40e_vc_add_cloud_filter()
3802 if (i40e_validate_cloud_filter(vf, vcf)) { in i40e_vc_add_cloud_filter()
3805 vf->vf_id); in i40e_vc_add_cloud_filter()
3850 vf->vf_id); in i40e_vc_add_cloud_filter()
3854 vsi = pf->vsi[vf->ch[vcf->action_meta].vsi_idx]; in i40e_vc_add_cloud_filter()
3866 vf->vf_id, ret, in i40e_vc_add_cloud_filter()
3872 hlist_add_head(&cfilter->cloud_node, &vf->cloud_filter_list); in i40e_vc_add_cloud_filter()
3875 vf->num_cloud_filters++; in i40e_vc_add_cloud_filter()
3879 return i40e_vc_send_resp_to_vf(vf, VIRTCHNL_OP_ADD_CLOUD_FILTER, in i40e_vc_add_cloud_filter()
3888 static int i40e_vc_add_qch_msg(struct i40e_vf *vf, u8 *msg) in i40e_vc_add_qch_msg() argument
3892 struct i40e_pf *pf = vf->pf; in i40e_vc_add_qch_msg()
3898 if (!i40e_sync_vf_state(vf, I40E_VF_STATE_ACTIVE)) { in i40e_vc_add_qch_msg()
3904 if (vf->spoofchk) { in i40e_vc_add_qch_msg()
3911 if (!(vf->driver_caps & VIRTCHNL_VF_OFFLOAD_ADQ)) { in i40e_vc_add_qch_msg()
3914 vf->vf_id); in i40e_vc_add_qch_msg()
3923 vf->vf_id, tci->num_tc, I40E_MAX_VF_VSI); in i40e_vc_add_qch_msg()
3934 vf->vf_id, i, tci->list[i].count, in i40e_vc_add_qch_msg()
3946 vf->vf_id); in i40e_vc_add_qch_msg()
3954 vf->num_queue_pairs = I40E_MAX_VF_QUEUES; in i40e_vc_add_qch_msg()
3967 vf->num_tc = tci->num_tc; in i40e_vc_add_qch_msg()
3968 for (i = 0; i < vf->num_tc; i++) { in i40e_vc_add_qch_msg()
3974 vf->vf_id); in i40e_vc_add_qch_msg()
3978 vf->ch[i].max_tx_rate = in i40e_vc_add_qch_msg()
3982 vf->ch[i].num_qps = tci->list[i].count; in i40e_vc_add_qch_msg()
3986 vf->adq_enabled = true; in i40e_vc_add_qch_msg()
3989 i40e_vc_reset_vf(vf, true); in i40e_vc_add_qch_msg()
3995 return i40e_vc_send_resp_to_vf(vf, VIRTCHNL_OP_ENABLE_CHANNELS, in i40e_vc_add_qch_msg()
4004 static int i40e_vc_del_qch_msg(struct i40e_vf *vf, u8 *msg) in i40e_vc_del_qch_msg() argument
4006 struct i40e_pf *pf = vf->pf; in i40e_vc_del_qch_msg()
4009 if (!i40e_sync_vf_state(vf, I40E_VF_STATE_ACTIVE)) { in i40e_vc_del_qch_msg()
4014 if (vf->adq_enabled) { in i40e_vc_del_qch_msg()
4015 i40e_del_all_cloud_filters(vf); in i40e_vc_del_qch_msg()
4016 i40e_del_qch(vf); in i40e_vc_del_qch_msg()
4017 vf->adq_enabled = false; in i40e_vc_del_qch_msg()
4018 vf->num_tc = 0; in i40e_vc_del_qch_msg()
4021 vf->vf_id); in i40e_vc_del_qch_msg()
4024 vf->vf_id); in i40e_vc_del_qch_msg()
4029 i40e_vc_reset_vf(vf, true); in i40e_vc_del_qch_msg()
4034 return i40e_vc_send_resp_to_vf(vf, VIRTCHNL_OP_DISABLE_CHANNELS, in i40e_vc_del_qch_msg()
4055 struct i40e_vf *vf; in i40e_vc_process_vf_msg() local
4061 vf = &(pf->vf[local_vf_id]); in i40e_vc_process_vf_msg()
4064 if (test_bit(I40E_VF_STATE_DISABLED, &vf->vf_states)) in i40e_vc_process_vf_msg()
4068 ret = virtchnl_vc_validate_vf_msg(&vf->vf_ver, v_opcode, msg, msglen); in i40e_vc_process_vf_msg()
4071 i40e_vc_send_resp_to_vf(vf, v_opcode, I40E_ERR_PARAM); in i40e_vc_process_vf_msg()
4084 ret = i40e_vc_get_version_msg(vf, msg); in i40e_vc_process_vf_msg()
4087 ret = i40e_vc_get_vf_resources_msg(vf, msg); in i40e_vc_process_vf_msg()
4088 i40e_vc_notify_vf_link_state(vf); in i40e_vc_process_vf_msg()
4091 i40e_vc_reset_vf(vf, false); in i40e_vc_process_vf_msg()
4095 ret = i40e_vc_config_promiscuous_mode_msg(vf, msg); in i40e_vc_process_vf_msg()
4098 ret = i40e_vc_config_queues_msg(vf, msg); in i40e_vc_process_vf_msg()
4101 ret = i40e_vc_config_irq_map_msg(vf, msg); in i40e_vc_process_vf_msg()
4104 ret = i40e_vc_enable_queues_msg(vf, msg); in i40e_vc_process_vf_msg()
4105 i40e_vc_notify_vf_link_state(vf); in i40e_vc_process_vf_msg()
4108 ret = i40e_vc_disable_queues_msg(vf, msg); in i40e_vc_process_vf_msg()
4111 ret = i40e_vc_add_mac_addr_msg(vf, msg); in i40e_vc_process_vf_msg()
4114 ret = i40e_vc_del_mac_addr_msg(vf, msg); in i40e_vc_process_vf_msg()
4117 ret = i40e_vc_add_vlan_msg(vf, msg); in i40e_vc_process_vf_msg()
4120 ret = i40e_vc_remove_vlan_msg(vf, msg); in i40e_vc_process_vf_msg()
4123 ret = i40e_vc_get_stats_msg(vf, msg); in i40e_vc_process_vf_msg()
4126 ret = i40e_vc_iwarp_msg(vf, msg, msglen); in i40e_vc_process_vf_msg()
4129 ret = i40e_vc_iwarp_qvmap_msg(vf, msg, true); in i40e_vc_process_vf_msg()
4132 ret = i40e_vc_iwarp_qvmap_msg(vf, msg, false); in i40e_vc_process_vf_msg()
4135 ret = i40e_vc_config_rss_key(vf, msg); in i40e_vc_process_vf_msg()
4138 ret = i40e_vc_config_rss_lut(vf, msg); in i40e_vc_process_vf_msg()
4141 ret = i40e_vc_get_rss_hena(vf, msg); in i40e_vc_process_vf_msg()
4144 ret = i40e_vc_set_rss_hena(vf, msg); in i40e_vc_process_vf_msg()
4147 ret = i40e_vc_enable_vlan_stripping(vf, msg); in i40e_vc_process_vf_msg()
4150 ret = i40e_vc_disable_vlan_stripping(vf, msg); in i40e_vc_process_vf_msg()
4153 ret = i40e_vc_request_queues_msg(vf, msg); in i40e_vc_process_vf_msg()
4156 ret = i40e_vc_add_qch_msg(vf, msg); in i40e_vc_process_vf_msg()
4159 ret = i40e_vc_del_qch_msg(vf, msg); in i40e_vc_process_vf_msg()
4162 ret = i40e_vc_add_cloud_filter(vf, msg); in i40e_vc_process_vf_msg()
4165 ret = i40e_vc_del_cloud_filter(vf, msg); in i40e_vc_process_vf_msg()
4171 ret = i40e_vc_send_resp_to_vf(vf, v_opcode, in i40e_vc_process_vf_msg()
4190 struct i40e_vf *vf; in i40e_vc_process_vflr_event() local
4211 vf = &pf->vf[vf_id]; in i40e_vc_process_vflr_event()
4215 i40e_reset_vf(vf, true); in i40e_vc_process_vflr_event()
4233 struct i40e_vf *vf; in i40e_validate_vf() local
4242 vf = &pf->vf[vf_id]; in i40e_validate_vf()
4243 vsi = i40e_find_vsi_from_id(pf, vf->lan_vsi_id); in i40e_validate_vf()
4264 struct i40e_vf *vf; in i40e_ndo_set_vf_mac() local
4280 vf = &pf->vf[vf_id]; in i40e_ndo_set_vf_mac()
4289 if (test_bit(I40E_VF_STATE_INIT, &vf->vf_states)) in i40e_ndo_set_vf_mac()
4293 if (!test_bit(I40E_VF_STATE_INIT, &vf->vf_states)) { in i40e_ndo_set_vf_mac()
4299 vsi = pf->vsi[vf->lan_vsi_idx]; in i40e_ndo_set_vf_mac()
4314 if (!is_zero_ether_addr(vf->default_lan_addr.addr)) in i40e_ndo_set_vf_mac()
4315 i40e_del_mac_filter(vsi, vf->default_lan_addr.addr); in i40e_ndo_set_vf_mac()
4331 ether_addr_copy(vf->default_lan_addr.addr, mac); in i40e_ndo_set_vf_mac()
4334 vf->pf_set_mac = false; in i40e_ndo_set_vf_mac()
4337 vf->pf_set_mac = true; in i40e_ndo_set_vf_mac()
4345 i40e_vc_reset_vf(vf, true); in i40e_ndo_set_vf_mac()
4371 struct i40e_vf *vf; in i40e_ndo_set_vf_port_vlan() local
4396 vf = &pf->vf[vf_id]; in i40e_ndo_set_vf_port_vlan()
4397 vsi = pf->vsi[vf->lan_vsi_idx]; in i40e_ndo_set_vf_port_vlan()
4398 if (!test_bit(I40E_VF_STATE_INIT, &vf->vf_states)) { in i40e_ndo_set_vf_port_vlan()
4444 ret = i40e_config_vf_promiscuous_mode(vf, vf->lan_vsi_id, in i40e_ndo_set_vf_port_vlan()
4477 if (test_bit(I40E_VF_STATE_UC_PROMISC, &vf->vf_states)) in i40e_ndo_set_vf_port_vlan()
4480 if (test_bit(I40E_VF_STATE_MC_PROMISC, &vf->vf_states)) in i40e_ndo_set_vf_port_vlan()
4494 vf->port_vlan_id = le16_to_cpu(vsi->info.pvid); in i40e_ndo_set_vf_port_vlan()
4496 i40e_vc_reset_vf(vf, true); in i40e_ndo_set_vf_port_vlan()
4498 vsi = pf->vsi[vf->lan_vsi_idx]; in i40e_ndo_set_vf_port_vlan()
4500 ret = i40e_config_vf_promiscuous_mode(vf, vsi->id, allmulti, alluni); in i40e_ndo_set_vf_port_vlan()
4528 struct i40e_vf *vf; in i40e_ndo_set_vf_bw() local
4548 vf = &pf->vf[vf_id]; in i40e_ndo_set_vf_bw()
4549 vsi = pf->vsi[vf->lan_vsi_idx]; in i40e_ndo_set_vf_bw()
4550 if (!test_bit(I40E_VF_STATE_INIT, &vf->vf_states)) { in i40e_ndo_set_vf_bw()
4561 vf->tx_rate = max_tx_rate; in i40e_ndo_set_vf_bw()
4581 struct i40e_vf *vf; in i40e_ndo_get_vf_config() local
4594 vf = &pf->vf[vf_id]; in i40e_ndo_get_vf_config()
4596 vsi = pf->vsi[vf->lan_vsi_idx]; in i40e_ndo_get_vf_config()
4602 ivi->vf = vf_id; in i40e_ndo_get_vf_config()
4604 ether_addr_copy(ivi->mac, vf->default_lan_addr.addr); in i40e_ndo_get_vf_config()
4606 ivi->max_tx_rate = vf->tx_rate; in i40e_ndo_get_vf_config()
4611 if (vf->link_forced == false) in i40e_ndo_get_vf_config()
4613 else if (vf->link_up == true) in i40e_ndo_get_vf_config()
4617 ivi->spoofchk = vf->spoofchk; in i40e_ndo_get_vf_config()
4618 ivi->trusted = vf->trusted; in i40e_ndo_get_vf_config()
4643 struct i40e_vf *vf; in i40e_ndo_set_vf_link_state() local
4660 vf = &pf->vf[vf_id]; in i40e_ndo_set_vf_link_state()
4661 abs_vf_id = vf->vf_id + hw->func_caps.vf_base_id; in i40e_ndo_set_vf_link_state()
4668 vf->link_forced = false; in i40e_ndo_set_vf_link_state()
4669 vf->is_disabled_from_host = false; in i40e_ndo_set_vf_link_state()
4671 i40e_vc_reset_vf(vf, true); in i40e_ndo_set_vf_link_state()
4672 i40e_set_vf_link_state(vf, &pfe, ls); in i40e_ndo_set_vf_link_state()
4675 vf->link_forced = true; in i40e_ndo_set_vf_link_state()
4676 vf->link_up = true; in i40e_ndo_set_vf_link_state()
4677 vf->is_disabled_from_host = false; in i40e_ndo_set_vf_link_state()
4679 i40e_vc_reset_vf(vf, true); in i40e_ndo_set_vf_link_state()
4680 i40e_set_vf_link_state(vf, &pfe, ls); in i40e_ndo_set_vf_link_state()
4683 vf->link_forced = true; in i40e_ndo_set_vf_link_state()
4684 vf->link_up = false; in i40e_ndo_set_vf_link_state()
4685 i40e_set_vf_link_state(vf, &pfe, ls); in i40e_ndo_set_vf_link_state()
4687 vsi = pf->vsi[vf->lan_vsi_idx]; in i40e_ndo_set_vf_link_state()
4690 vf->is_disabled_from_host = true; in i40e_ndo_set_vf_link_state()
4730 struct i40e_vf *vf; in i40e_ndo_set_vf_spoofchk() local
4745 vf = &(pf->vf[vf_id]); in i40e_ndo_set_vf_spoofchk()
4746 if (!test_bit(I40E_VF_STATE_INIT, &vf->vf_states)) { in i40e_ndo_set_vf_spoofchk()
4753 if (enable == vf->spoofchk) in i40e_ndo_set_vf_spoofchk()
4756 vf->spoofchk = enable; in i40e_ndo_set_vf_spoofchk()
4758 ctxt.seid = pf->vsi[vf->lan_vsi_idx]->seid; in i40e_ndo_set_vf_spoofchk()
4787 struct i40e_vf *vf; in i40e_ndo_set_vf_trust() local
4808 vf = &pf->vf[vf_id]; in i40e_ndo_set_vf_trust()
4810 if (setting == vf->trusted) in i40e_ndo_set_vf_trust()
4813 vf->trusted = setting; in i40e_ndo_set_vf_trust()
4817 pf->vsi[vf->lan_vsi_idx]->flags |= I40E_VSI_FLAG_FILTER_CHANGED; in i40e_ndo_set_vf_trust()
4819 i40e_vc_reset_vf(vf, true); in i40e_ndo_set_vf_trust()
4823 if (vf->adq_enabled) { in i40e_ndo_set_vf_trust()
4824 if (!vf->trusted) { in i40e_ndo_set_vf_trust()
4828 i40e_del_all_cloud_filters(vf); in i40e_ndo_set_vf_trust()
4850 struct i40e_vf *vf; in i40e_get_vf_stats() local
4856 vf = &pf->vf[vf_id]; in i40e_get_vf_stats()
4857 if (!test_bit(I40E_VF_STATE_INIT, &vf->vf_states)) { in i40e_get_vf_stats()
4862 vsi = pf->vsi[vf->lan_vsi_idx]; in i40e_get_vf_stats()