Commit 8278ee2a authored by Suman Ghosh's avatar Suman Ghosh Committed by Paolo Abeni
Browse files

octeontx2-pf: Add additional check for MCAM rules



Due to hardware limitation, MCAM drop rule with
ether_type == 802.1Q and vlan_id == 0 is not supported. Hence rejecting
such rules.

Fixes: dce677da ("octeontx2-pf: Add vlan-etype to ntuple filters")
Signed-off-by: default avatarSuman Ghosh <sumang@marvell.com>
Link: https://lore.kernel.org/r/20230710103027.2244139-1-sumang@marvell.com


Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent 04499f28
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -872,6 +872,14 @@ static int otx2_prepare_flow_request(struct ethtool_rx_flow_spec *fsp,
				return -EINVAL;

			vlan_etype = be16_to_cpu(fsp->h_ext.vlan_etype);

			/* Drop rule with vlan_etype == 802.1Q
			 * and vlan_id == 0 is not supported
			 */
			if (vlan_etype == ETH_P_8021Q && !fsp->m_ext.vlan_tci &&
			    fsp->ring_cookie == RX_CLS_FLOW_DISC)
				return -EINVAL;

			/* Only ETH_P_8021Q and ETH_P_802AD types supported */
			if (vlan_etype != ETH_P_8021Q &&
			    vlan_etype != ETH_P_8021AD)
+15 −0
Original line number Diff line number Diff line
@@ -597,6 +597,21 @@ static int otx2_tc_prepare_flow(struct otx2_nic *nic, struct otx2_tc_flow *node,
			return -EOPNOTSUPP;
		}

		if (!match.mask->vlan_id) {
			struct flow_action_entry *act;
			int i;

			flow_action_for_each(i, act, &rule->action) {
				if (act->id == FLOW_ACTION_DROP) {
					netdev_err(nic->netdev,
						   "vlan tpid 0x%x with vlan_id %d is not supported for DROP rule.\n",
						   ntohs(match.key->vlan_tpid),
						   match.key->vlan_id);
					return -EOPNOTSUPP;
				}
			}
		}

		if (match.mask->vlan_id ||
		    match.mask->vlan_dei ||
		    match.mask->vlan_priority) {