diff options
author | Mandy Lavi <mandy.lavi@freescale.com> | 2015-04-20 15:11:54 (GMT) |
---|---|---|
committer | Honghua Yin <Hong-Hua.Yin@freescale.com> | 2015-05-05 07:47:00 (GMT) |
commit | 0cb4aae0f23b254cae192217e08dfdb881efed18 (patch) | |
tree | 5f92790e95fd8bea4dfb7036ca0129936983ad68 /drivers/net/ethernet/freescale/fman/Peripherals/FM/Port | |
parent | b830f3930a95eacd391a1e7ea5730abfe5d3c110 (diff) | |
download | linux-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.c | 13 | ||||
-rw-r--r-- | drivers/net/ethernet/freescale/fman/Peripherals/FM/Port/fm_port.h | 4 |
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 |