ice: Use the proto argument for VLAN ops
Currently the proto argument is unused. This is because the driver only supports 802.1Q VLAN filtering. This policy is enforced via netdev features that the driver sets up when configuring the netdev, so the proto argument won't ever be anything other than 802.1Q. However, this will allow for future iterations of the driver to seemlessly support 802.1ad filtering. Begin using the proto argument and extend the related structures to support its use. Signed-off-by: Brett Creeley <brett.creeley@intel.com> Tested-by: Gurucharan G <gurucharanx.g@intel.com> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
This commit is contained in:
committed by
Tony Nguyen
parent
a19d7f7f01
commit
2bfefa2dab
@@ -1539,6 +1539,7 @@ ice_fill_sw_rule(struct ice_hw *hw, struct ice_fltr_info *f_info,
|
||||
struct ice_aqc_sw_rules_elem *s_rule, enum ice_adminq_opc opc)
|
||||
{
|
||||
u16 vlan_id = ICE_MAX_VLAN_ID + 1;
|
||||
u16 vlan_tpid = ETH_P_8021Q;
|
||||
void *daddr = NULL;
|
||||
u16 eth_hdr_sz;
|
||||
u8 *eth_hdr;
|
||||
@@ -1611,6 +1612,8 @@ ice_fill_sw_rule(struct ice_hw *hw, struct ice_fltr_info *f_info,
|
||||
break;
|
||||
case ICE_SW_LKUP_VLAN:
|
||||
vlan_id = f_info->l_data.vlan.vlan_id;
|
||||
if (f_info->l_data.vlan.tpid_valid)
|
||||
vlan_tpid = f_info->l_data.vlan.tpid;
|
||||
if (f_info->fltr_act == ICE_FWD_TO_VSI ||
|
||||
f_info->fltr_act == ICE_FWD_TO_VSI_LIST) {
|
||||
act |= ICE_SINGLE_ACT_PRUNE;
|
||||
@@ -1653,6 +1656,8 @@ ice_fill_sw_rule(struct ice_hw *hw, struct ice_fltr_info *f_info,
|
||||
if (!(vlan_id > ICE_MAX_VLAN_ID)) {
|
||||
off = (__force __be16 *)(eth_hdr + ICE_ETH_VLAN_TCI_OFFSET);
|
||||
*off = cpu_to_be16(vlan_id);
|
||||
off = (__force __be16 *)(eth_hdr + ICE_ETH_ETHTYPE_OFFSET);
|
||||
*off = cpu_to_be16(vlan_tpid);
|
||||
}
|
||||
|
||||
/* Create the switch rule with the final dummy Ethernet header */
|
||||
|
||||
Reference in New Issue
Block a user