Commit d1b58fc6 authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'nfp-flower-fix-matching-and-pushing-vlan-CFI-bit'



Jakub Kicinski says:

====================
nfp: flower: fix matching and pushing vlan CFI bit

This patch clears up some confusion around the meaning of bit 12
for FW messages related to VLAN and flower offload.

Pieter says:
It fixes issues with matching, pushing and popping vlan tags.
We replace the vlan CFI bit with a vlan present bit that
indicates the presence of a vlan tag. We also no longer set
the CFI when pushing vlan tags.
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 3c446e6f 42cd5484
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -48,8 +48,7 @@ nfp_fl_push_vlan(struct nfp_fl_push_vlan *push_vlan,

	tmp_push_vlan_tci =
		FIELD_PREP(NFP_FL_PUSH_VLAN_PRIO, act->vlan.prio) |
		FIELD_PREP(NFP_FL_PUSH_VLAN_VID, act->vlan.vid) |
		NFP_FL_PUSH_VLAN_CFI;
		FIELD_PREP(NFP_FL_PUSH_VLAN_VID, act->vlan.vid);
	push_vlan->vlan_tci = cpu_to_be16(tmp_push_vlan_tci);
}

+1 −2
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@
#define NFP_FLOWER_LAYER2_GENEVE_OP	BIT(6)

#define NFP_FLOWER_MASK_VLAN_PRIO	GENMASK(15, 13)
#define NFP_FLOWER_MASK_VLAN_CFI	BIT(12)
#define NFP_FLOWER_MASK_VLAN_PRESENT	BIT(12)
#define NFP_FLOWER_MASK_VLAN_VID	GENMASK(11, 0)

#define NFP_FLOWER_MASK_MPLS_LB		GENMASK(31, 12)
@@ -82,7 +82,6 @@
#define NFP_FL_OUT_FLAGS_TYPE_IDX	GENMASK(2, 0)

#define NFP_FL_PUSH_VLAN_PRIO		GENMASK(15, 13)
#define NFP_FL_PUSH_VLAN_CFI		BIT(12)
#define NFP_FL_PUSH_VLAN_VID		GENMASK(11, 0)

#define IPV6_FLOW_LABEL_MASK		cpu_to_be32(0x000fffff)
+13 −14
Original line number Diff line number Diff line
@@ -30,22 +30,21 @@ nfp_flower_compile_meta_tci(struct nfp_flower_meta_tci *ext,

		flow_rule_match_vlan(rule, &match);
		/* Populate the tci field. */
		if (match.key->vlan_id || match.key->vlan_priority) {
			tmp_tci = FIELD_PREP(NFP_FLOWER_MASK_VLAN_PRIO,
		tmp_tci = NFP_FLOWER_MASK_VLAN_PRESENT;
		tmp_tci |= FIELD_PREP(NFP_FLOWER_MASK_VLAN_PRIO,
				      match.key->vlan_priority) |
			   FIELD_PREP(NFP_FLOWER_MASK_VLAN_VID,
					     match.key->vlan_id) |
				  NFP_FLOWER_MASK_VLAN_CFI;
				      match.key->vlan_id);
		ext->tci = cpu_to_be16(tmp_tci);
			tmp_tci = FIELD_PREP(NFP_FLOWER_MASK_VLAN_PRIO,

		tmp_tci = NFP_FLOWER_MASK_VLAN_PRESENT;
		tmp_tci |= FIELD_PREP(NFP_FLOWER_MASK_VLAN_PRIO,
				      match.mask->vlan_priority) |
			   FIELD_PREP(NFP_FLOWER_MASK_VLAN_VID,
					     match.mask->vlan_id) |
				  NFP_FLOWER_MASK_VLAN_CFI;
				      match.mask->vlan_id);
		msk->tci = cpu_to_be16(tmp_tci);
	}
}
}

static void
nfp_flower_compile_ext_meta(struct nfp_flower_ext_meta *frame, u32 key_ext)