| From 2827eea4f991421b0f473b1f21bd38d837dd2467 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 30 Aug 2021 23:30:46 +0530 |
| Subject: octeontx2-af: Set proper errorcode for IPv4 checksum errors |
| |
| From: Sunil Goutham <sgoutham@marvell.com> |
| |
| [ Upstream commit 1e4428b6dba9b683dc2ec0a56ed7879de3200cce ] |
| |
| With current config, for packets with IPv4 checksum errors, |
| errorcode is being set to UNKNOWN. Hence added a separate |
| errorcodes for outer and inner IPv4 checksum and changed |
| NPC configuration accordingly. |
| |
| Also turn on L2 multicast address check in NPC protocol check block. |
| |
| Fixes: 6b3321bacc5a ("octeontx2-af: Enable packet length and csum validation") |
| Signed-off-by: Sunil Goutham <sgoutham@marvell.com> |
| Signed-off-by: Subbaraya Sundeep <sbhatta@marvell.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c | 7 ++++--- |
| 1 file changed, 4 insertions(+), 3 deletions(-) |
| |
| diff --git a/drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c b/drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c |
| index 0a9ff2e0c9bb..26a792407c40 100644 |
| --- a/drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c |
| +++ b/drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c |
| @@ -2030,14 +2030,15 @@ int rvu_npc_init(struct rvu *rvu) |
| |
| /* Enable below for Rx pkts. |
| * - Outer IPv4 header checksum validation. |
| - * - Detect outer L2 broadcast address and set NPC_RESULT_S[L2M]. |
| + * - Detect outer L2 broadcast address and set NPC_RESULT_S[L2B]. |
| + * - Detect outer L2 multicast address and set NPC_RESULT_S[L2M]. |
| * - Inner IPv4 header checksum validation. |
| * - Set non zero checksum error code value |
| */ |
| rvu_write64(rvu, blkaddr, NPC_AF_PCK_CFG, |
| rvu_read64(rvu, blkaddr, NPC_AF_PCK_CFG) | |
| - BIT_ULL(32) | BIT_ULL(24) | BIT_ULL(6) | |
| - BIT_ULL(2) | BIT_ULL(1)); |
| + ((u64)NPC_EC_OIP4_CSUM << 32) | (NPC_EC_IIP4_CSUM << 24) | |
| + BIT_ULL(7) | BIT_ULL(6) | BIT_ULL(2) | BIT_ULL(1)); |
| |
| rvu_npc_setup_interfaces(rvu, blkaddr); |
| |
| -- |
| 2.30.2 |
| |