summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/freescale/fman/Peripherals/FM/Port
diff options
context:
space:
mode:
authorMandy Lavi <mandy.lavi@freescale.com>2015-04-20 15:11:54 (GMT)
committerHonghua Yin <Hong-Hua.Yin@freescale.com>2015-05-05 07:47:00 (GMT)
commit0cb4aae0f23b254cae192217e08dfdb881efed18 (patch)
tree5f92790e95fd8bea4dfb7036ca0129936983ad68 /drivers/net/ethernet/freescale/fman/Peripherals/FM/Port
parentb830f3930a95eacd391a1e7ea5730abfe5d3c110 (diff)
downloadlinux-fsl-qoriq-0cb4aae0f23b254cae192217e08dfdb881efed18.tar.xz
fmd: fix parsing of IPv6 GRE frames on inbound OP
Change-Id: Ic55d4f698c2d406d524e54f817a07f0810f87e25 Signed-off-by: Mandy Lavi <mandy.lavi@freescale.com> Reviewed-on: http://git.am.freescale.net:8181/35329 Reviewed-by: Liron Himi <Liron.Himi@freescale.com> Reviewed-by: Honghua Yin <Hong-Hua.Yin@freescale.com> Tested-by: Honghua Yin <Hong-Hua.Yin@freescale.com>
Diffstat (limited to 'drivers/net/ethernet/freescale/fman/Peripherals/FM/Port')
-rw-r--r--drivers/net/ethernet/freescale/fman/Peripherals/FM/Port/fm_port.c13
-rw-r--r--drivers/net/ethernet/freescale/fman/Peripherals/FM/Port/fm_port.h4
2 files changed, 13 insertions, 4 deletions
diff --git a/drivers/net/ethernet/freescale/fman/Peripherals/FM/Port/fm_port.c b/drivers/net/ethernet/freescale/fman/Peripherals/FM/Port/fm_port.c
index bbcc59a..6462b1e 100644
--- a/drivers/net/ethernet/freescale/fman/Peripherals/FM/Port/fm_port.c
+++ b/drivers/net/ethernet/freescale/fman/Peripherals/FM/Port/fm_port.c
@@ -1568,7 +1568,7 @@ static t_Error SetPcd(t_FmPort *p_FmPort, t_FmPortPcdParams *p_PcdParams)
p_FmPort->p_FmPortPrsRegs->hdrs[i].lcv,
FmPcdGetLcv(p_FmPort->h_FmPcd, p_FmPort->netEnvId, (uint8_t)i));
/* set HXS register according to default+Additional params+protocol options */
- WRITE_UINT32( p_FmPort->p_FmPortPrsRegs->hdrs[i].softSeqAttach,
+ WRITE_UINT32(p_FmPort->p_FmPortPrsRegs->hdrs[i].softSeqAttach,
tmpHxs[i]);
}
@@ -1594,8 +1594,17 @@ static t_Error SetPcd(t_FmPort *p_FmPort, t_FmPortPcdParams *p_PcdParams)
p_PcdParams->p_PrsParams->prsResultPrivateInfo;
} /* end parser */
- else
+ else {
+ if (FmPcdIsAdvancedOffloadSupported(p_FmPort->h_FmPcd)
+ && (p_FmPort->portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING))
+ {
+ hdrNum = GetPrsHdrNum(HEADER_TYPE_IPv6);
+ WRITE_UINT32(p_FmPort->p_FmPortPrsRegs->hdrs[hdrNum].softSeqAttach,
+ (PRS_HDR_SW_PRS_EN | OFFLOAD_SW_PATCH_IPv6_LABEL));
+ }
+
p_FmPort->privateInfo = 0;
+ }
WRITE_UINT32(
*p_BmiPrsStartOffset,
diff --git a/drivers/net/ethernet/freescale/fman/Peripherals/FM/Port/fm_port.h b/drivers/net/ethernet/freescale/fman/Peripherals/FM/Port/fm_port.h
index eabf892..bd06b9b 100644
--- a/drivers/net/ethernet/freescale/fman/Peripherals/FM/Port/fm_port.h
+++ b/drivers/net/ethernet/freescale/fman/Peripherals/FM/Port/fm_port.h
@@ -218,8 +218,8 @@ typedef uint32_t fmPcdEngines_t; /**< options as defined below: */
#define OFFLOAD_SW_PATCH_IPv4_LABEL 0x300
#else
#define OFFLOAD_SW_PATCH_IPv4_SIZE 0x046
-#define OFFLOAD_SW_PATCH_IPv4_LABEL 0x1E0
-#define OFFLOAD_CAPWAP_SW_PATCH_LABEL 0x39b
+#define OFFLOAD_SW_PATCH_IPv4_LABEL 0x1D0
+#define OFFLOAD_CAPWAP_SW_PATCH_LABEL 0x38d
#endif /* (DPAA_VERSION == 10) */
/* Will be used for:
* 1. identify fragments