Commit 0f30a31b authored by Bobby Eshleman's avatar Bobby Eshleman Committed by Paolo Abeni
Browse files

eth: fbnic: set DMA_HINT_L4 for all flows



fbnic always advertises ETHTOOL_TCP_DATA_SPLIT_ENABLED via ethtool
.get_ringparam. To enable proper splitting for all flow types, even for
IP/Ethernet flows, this patch sets DMA_HINT_L4 unconditionally for all
RSS and NFC flow steering rules. According to the spec, L4 falls back to
L3 if no valid L4 is found, and L3 falls back to L2 if no L3 is found.
This makes sure that the correct header boundary is used regardless of
traffic type. This is important for zero-copy use cases where we must
ensure that all ZC packets are split correctly.

Fixes: 2b30fc01 ("eth: fbnic: Add support for HDS configuration")
Signed-off-by: default avatarBobby Eshleman <bobbyeshleman@meta.com>
Link: https://patch.msgid.link/20260211-fbnic-tcp-hds-fixes-v1-3-55d050e6f606@meta.com


Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent bd254115
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -1145,6 +1145,9 @@ static int fbnic_set_cls_rule_ins(struct fbnic_net *fbn,
		return -EINVAL;
	}

	dest |= FIELD_PREP(FBNIC_RPC_ACT_TBL0_DMA_HINT,
			   FBNIC_RCD_HDR_AL_DMA_HINT_L4);

	/* Write action table values */
	act_tcam->dest = dest;
	act_tcam->rss_en_mask = fbnic_flow_hash_2_rss_en_mask(fbn, hash_idx);
+2 −3
Original line number Diff line number Diff line
@@ -338,7 +338,6 @@ void fbnic_rss_reinit(struct fbnic_dev *fbd, struct fbnic_net *fbn)
		else if (tstamp_mask & (1u << flow_type))
			dest |= FBNIC_RPC_ACT_TBL0_TS_ENA;

		if (act1_value[flow_type] & FBNIC_RPC_TCAM_ACT1_L4_VALID)
		dest |= FIELD_PREP(FBNIC_RPC_ACT_TBL0_DMA_HINT,
				   FBNIC_RCD_HDR_AL_DMA_HINT_L4);