Lines Matching refs:vsi

9 static void print_invalid_tpid(struct ice_vsi *vsi, u16 tpid)
11 dev_err(ice_pf_to_dev(vsi->back), "%s %d specified invalid VLAN tpid 0x%04x\n",
12 ice_vsi_type_str(vsi->type), vsi->idx, tpid);
17 * @vsi: VSI used for printing error message
24 static bool validate_vlan(struct ice_vsi *vsi, struct ice_vlan *vlan)
28 print_invalid_tpid(vsi, vlan->tpid);
37 * @vsi: VSI being configured
40 int ice_vsi_add_vlan(struct ice_vsi *vsi, struct ice_vlan *vlan)
44 if (!validate_vlan(vsi, vlan))
47 err = ice_fltr_add_vlan(vsi, vlan);
49 dev_err(ice_pf_to_dev(vsi->back), "Failure Adding VLAN %d on VSI %i, status %d\n",
50 vlan->vid, vsi->vsi_num, err);
54 vsi->num_vlan++;
60 * @vsi: VSI being configured
63 int ice_vsi_del_vlan(struct ice_vsi *vsi, struct ice_vlan *vlan)
65 struct ice_pf *pf = vsi->back;
69 if (!validate_vlan(vsi, vlan))
74 err = ice_fltr_remove_vlan(vsi, vlan);
76 vsi->num_vlan--;
81 vlan->vid, vsi->vsi_num, err);
88 * @vsi: the VSI being changed
90 static int ice_vsi_manage_vlan_insertion(struct ice_vsi *vsi)
92 struct ice_hw *hw = &vsi->back->hw;
107 ctxt->info.inner_vlan_flags |= (vsi->info.inner_vlan_flags &
112 err = ice_update_vsi(hw, vsi->idx, ctxt, NULL);
114 dev_err(ice_pf_to_dev(vsi->back), "update VSI for VLAN insert failed, err %d aq_err %s\n",
119 vsi->info.inner_vlan_flags = ctxt->info.inner_vlan_flags;
127 * @vsi: the VSI being changed
130 static int ice_vsi_manage_vlan_stripping(struct ice_vsi *vsi, bool ena)
132 struct ice_hw *hw = &vsi->back->hw;
140 if (vsi->info.port_based_inner_vlan)
168 err = ice_update_vsi(hw, vsi->idx, ctxt, NULL);
170 dev_err(ice_pf_to_dev(vsi->back), "update VSI for VLAN strip failed, ena = %d err %d aq_err %s\n",
175 vsi->info.inner_vlan_flags = ctxt->info.inner_vlan_flags;
181 int ice_vsi_ena_inner_stripping(struct ice_vsi *vsi, const u16 tpid)
184 print_invalid_tpid(vsi, tpid);
188 return ice_vsi_manage_vlan_stripping(vsi, true);
191 int ice_vsi_dis_inner_stripping(struct ice_vsi *vsi)
193 return ice_vsi_manage_vlan_stripping(vsi, false);
196 int ice_vsi_ena_inner_insertion(struct ice_vsi *vsi, const u16 tpid)
199 print_invalid_tpid(vsi, tpid);
203 return ice_vsi_manage_vlan_insertion(vsi);
206 int ice_vsi_dis_inner_insertion(struct ice_vsi *vsi)
208 return ice_vsi_manage_vlan_insertion(vsi);
231 * @vsi: the VSI to update
234 static int __ice_vsi_set_inner_port_vlan(struct ice_vsi *vsi, u16 pvid_info)
236 struct ice_hw *hw = &vsi->back->hw;
245 ice_save_vlan_info(&vsi->info, &vsi->vlan_info);
246 ctxt->info = vsi->info;
257 ret = ice_update_vsi(hw, vsi->idx, ctxt, NULL);
264 vsi->info.inner_vlan_flags = info->inner_vlan_flags;
265 vsi->info.sw_flags2 = info->sw_flags2;
266 vsi->info.port_based_inner_vlan = info->port_based_inner_vlan;
272 int ice_vsi_set_inner_port_vlan(struct ice_vsi *vsi, struct ice_vlan *vlan)
284 return __ice_vsi_set_inner_port_vlan(vsi, port_vlan_info);
287 int ice_vsi_clear_inner_port_vlan(struct ice_vsi *vsi)
289 struct ice_hw *hw = &vsi->back->hw;
298 ice_restore_vlan_info(&vsi->info, &vsi->vlan_info);
299 vsi->info.port_based_inner_vlan = 0;
300 ctxt->info = vsi->info;
305 ret = ice_update_vsi(hw, vsi->idx, ctxt, NULL);
316 * @vsi: VSI to enable or disable VLAN pruning on
321 static int ice_cfg_vlan_pruning(struct ice_vsi *vsi, bool ena)
327 if (!vsi)
334 if (vsi->netdev && vsi->netdev->flags & IFF_PROMISC && ena)
337 pf = vsi->back;
342 ctxt->info = vsi->info;
351 status = ice_update_vsi(&pf->hw, vsi->idx, ctxt, NULL);
353 netdev_err(vsi->netdev, "%sabling VLAN pruning on VSI handle: %d, VSI HW ID: %d failed, err = %d, aq_err = %s\n",
354 ena ? "En" : "Dis", vsi->idx, vsi->vsi_num, status,
359 vsi->info.sw_flags2 = ctxt->info.sw_flags2;
369 int ice_vsi_ena_rx_vlan_filtering(struct ice_vsi *vsi)
371 return ice_cfg_vlan_pruning(vsi, true);
374 int ice_vsi_dis_rx_vlan_filtering(struct ice_vsi *vsi)
376 return ice_cfg_vlan_pruning(vsi, false);
379 static int ice_cfg_vlan_antispoof(struct ice_vsi *vsi, bool enable)
388 ctx->info.sec_flags = vsi->info.sec_flags;
398 err = ice_update_vsi(&vsi->back->hw, vsi->idx, ctx, NULL);
400 dev_err(ice_pf_to_dev(vsi->back), "Failed to configure Tx VLAN anti-spoof %s for VSI %d, error %d\n",
401 enable ? "ON" : "OFF", vsi->vsi_num, err);
403 vsi->info.sec_flags = ctx->info.sec_flags;
410 int ice_vsi_ena_tx_vlan_filtering(struct ice_vsi *vsi)
412 return ice_cfg_vlan_antispoof(vsi, true);
415 int ice_vsi_dis_tx_vlan_filtering(struct ice_vsi *vsi)
417 return ice_cfg_vlan_antispoof(vsi, false);
447 * @vsi: VSI to configure
464 int ice_vsi_ena_outer_stripping(struct ice_vsi *vsi, u16 tpid)
466 struct ice_hw *hw = &vsi->back->hw;
474 if (vsi->info.port_based_outer_vlan)
487 ctxt->info.outer_vlan_flags = vsi->info.outer_vlan_flags &
496 err = ice_update_vsi(hw, vsi->idx, ctxt, NULL);
498 dev_err(ice_pf_to_dev(vsi->back), "update VSI for enabling outer VLAN stripping failed, err %d aq_err %s\n",
501 vsi->info.outer_vlan_flags = ctxt->info.outer_vlan_flags;
509 * @vsi: VSI to configure
522 int ice_vsi_dis_outer_stripping(struct ice_vsi *vsi)
524 struct ice_hw *hw = &vsi->back->hw;
528 if (vsi->info.port_based_outer_vlan)
538 ctxt->info.outer_vlan_flags = vsi->info.outer_vlan_flags &
543 err = ice_update_vsi(hw, vsi->idx, ctxt, NULL);
545 dev_err(ice_pf_to_dev(vsi->back), "update VSI for disabling outer VLAN stripping failed, err %d aq_err %s\n",
548 vsi->info.outer_vlan_flags = ctxt->info.outer_vlan_flags;
556 * @vsi: VSI to configure
573 int ice_vsi_ena_outer_insertion(struct ice_vsi *vsi, u16 tpid)
575 struct ice_hw *hw = &vsi->back->hw;
580 if (vsi->info.port_based_outer_vlan)
593 ctxt->info.outer_vlan_flags = vsi->info.outer_vlan_flags &
603 err = ice_update_vsi(hw, vsi->idx, ctxt, NULL);
605 dev_err(ice_pf_to_dev(vsi->back), "update VSI for enabling outer VLAN insertion failed, err %d aq_err %s\n",
608 vsi->info.outer_vlan_flags = ctxt->info.outer_vlan_flags;
616 * @vsi: VSI to configure
629 int ice_vsi_dis_outer_insertion(struct ice_vsi *vsi)
631 struct ice_hw *hw = &vsi->back->hw;
635 if (vsi->info.port_based_outer_vlan)
645 ctxt->info.outer_vlan_flags = vsi->info.outer_vlan_flags &
653 err = ice_update_vsi(hw, vsi->idx, ctxt, NULL);
655 dev_err(ice_pf_to_dev(vsi->back), "update VSI for disabling outer VLAN insertion failed, err %d aq_err %s\n",
658 vsi->info.outer_vlan_flags = ctxt->info.outer_vlan_flags;
666 * @vsi: VSI to configure
686 __ice_vsi_set_outer_port_vlan(struct ice_vsi *vsi, u16 vlan_info, u16 tpid)
688 struct ice_hw *hw = &vsi->back->hw;
700 ice_save_vlan_info(&vsi->info, &vsi->vlan_info);
701 ctxt->info = vsi->info;
719 err = ice_update_vsi(hw, vsi->idx, ctxt, NULL);
721 dev_err(ice_pf_to_dev(vsi->back), "update VSI for setting outer port based VLAN failed, err %d aq_err %s\n",
724 vsi->info.port_based_outer_vlan = ctxt->info.port_based_outer_vlan;
725 vsi->info.outer_vlan_flags = ctxt->info.outer_vlan_flags;
726 vsi->info.sw_flags2 = ctxt->info.sw_flags2;
735 * @vsi: VSI to configure
744 int ice_vsi_set_outer_port_vlan(struct ice_vsi *vsi, struct ice_vlan *vlan)
753 return __ice_vsi_set_outer_port_vlan(vsi, port_vlan_info, vlan->tpid);
758 * @vsi: VSI to configure
761 * vsi->vlan_info). Setting happens in port vlan configuration.
763 int ice_vsi_clear_outer_port_vlan(struct ice_vsi *vsi)
765 struct ice_hw *hw = &vsi->back->hw;
773 ice_restore_vlan_info(&vsi->info, &vsi->vlan_info);
774 vsi->info.port_based_outer_vlan = 0;
775 ctxt->info = vsi->info;
781 err = ice_update_vsi(hw, vsi->idx, ctxt, NULL);
783 dev_err(ice_pf_to_dev(vsi->back), "update VSI for clearing outer port based VLAN failed, err %d aq_err %s\n",