diff options
author | Camelia Groza <camelia.groza@freescale.com> | 2015-04-27 07:43:39 (GMT) |
---|---|---|
committer | Madalin-Cristian Bucur <madalin.bucur@freescale.com> | 2015-04-27 13:56:16 (GMT) |
commit | d4dce299e2a6278f5d237e5bf17be232820db138 (patch) | |
tree | b3724b6324f992468b4c7d1a83612aced02b4cea /drivers/net/ethernet/freescale/fman/Peripherals/FM | |
parent | ea0f80c1398c91a6ca549edf2b826a40eed1f893 (diff) | |
download | linux-fsl-qoriq-d4dce299e2a6278f5d237e5bf17be232820db138.tar.xz |
fmd: Alter MACsec MFL when the SCI is missing from the SecTAG
Signed-off-by: Camelia Groza <camelia.groza@freescale.com>
Change-Id: I5f8d3dcebad92e14972ef9e48188e7df6642cc0a
Reviewed-on: http://git.am.freescale.net:8181/35473
Reviewed-by: Liron Himi <Liron.Himi@freescale.com>
Reviewed-by: Cristian-Constantin Sovaiala <Cristian.Sovaiala@freescale.com>
Tested-by: Cristian-Constantin Sovaiala <Cristian.Sovaiala@freescale.com>
Reviewed-by: Madalin-Cristian Bucur <madalin.bucur@freescale.com>
Diffstat (limited to 'drivers/net/ethernet/freescale/fman/Peripherals/FM')
-rw-r--r-- | drivers/net/ethernet/freescale/fman/Peripherals/FM/MACSEC/fm_macsec_master.c | 9 | ||||
-rw-r--r-- | drivers/net/ethernet/freescale/fman/Peripherals/FM/MACSEC/fm_macsec_master.h | 5 |
2 files changed, 10 insertions, 4 deletions
diff --git a/drivers/net/ethernet/freescale/fman/Peripherals/FM/MACSEC/fm_macsec_master.c b/drivers/net/ethernet/freescale/fman/Peripherals/FM/MACSEC/fm_macsec_master.c index 7b82fd0..79260c8 100644 --- a/drivers/net/ethernet/freescale/fman/Peripherals/FM/MACSEC/fm_macsec_master.c +++ b/drivers/net/ethernet/freescale/fman/Peripherals/FM/MACSEC/fm_macsec_master.c @@ -151,8 +151,9 @@ static t_Error MacsecInit(t_Handle h_FmMacsec) WRITE_UINT32(p_FmMacsec->p_FmMacsecRegs->cfg, tmpReg); tmpReg = FM_MAC_GetMaxFrameLength(p_FmMacsec->h_FmMac); - /* Ethernet FCS (4 bytes) overhead must be subtracted from MFL*/ - tmpReg -= 4; + /* At least Ethernet FCS (4 bytes) overhead must be subtracted from MFL. + * In addition, the SCI (8 bytes) overhead might be subtracted as well. */ + tmpReg -= p_FmMacsecDriverParam->mflSubtract; WRITE_UINT32(p_FmMacsec->p_FmMacsecRegs->mfl, tmpReg); WRITE_UINT32(p_FmMacsec->p_FmMacsecRegs->tpnet, p_FmMacsecDriverParam->pnExhThr); @@ -320,6 +321,7 @@ static t_Error MacsecConfigSectagWithoutSCI(t_Handle h_FmMacsec) SANITY_CHECK_RETURN_ERROR(p_FmMacsec->p_FmMacsecDriverParam, E_INVALID_HANDLE); p_FmMacsec->p_FmMacsecDriverParam->sectagOverhead -= MACSEC_SCI_SIZE; + p_FmMacsec->p_FmMacsecDriverParam->mflSubtract += MACSEC_SCI_SIZE; return E_OK; } @@ -1012,7 +1014,8 @@ t_Handle FM_MACSEC_MASTER_Config(t_FmMacsecParams *p_FmMacsecParam) p_FmMacsec->p_FmMacsecDriverParam->reservedSc0 = DEFAULT_sc0ReservedForPTP; p_FmMacsec->p_FmMacsecDriverParam->byPassMode = !DEFAULT_normalMode; p_FmMacsec->p_FmMacsecDriverParam->pnExhThr = DEFAULT_pnExhThr; - p_FmMacsec->p_FmMacsecDriverParam->sectagOverhead = DEFAULT_overhead; + p_FmMacsec->p_FmMacsecDriverParam->sectagOverhead = DEFAULT_sectagOverhead; + p_FmMacsec->p_FmMacsecDriverParam->mflSubtract = DEFAULT_mflSubtract; /* build the FM MACSEC master IPC address */ memset(p_FmMacsec->fmMacsecModuleName, 0, (sizeof(char))*MODULE_NAME_SIZE); FM_MAC_GetId(p_FmMacsec->h_FmMac,&macId); diff --git a/drivers/net/ethernet/freescale/fman/Peripherals/FM/MACSEC/fm_macsec_master.h b/drivers/net/ethernet/freescale/fman/Peripherals/FM/MACSEC/fm_macsec_master.h index 65eadf5..2296a0f 100644 --- a/drivers/net/ethernet/freescale/fman/Peripherals/FM/MACSEC/fm_macsec_master.h +++ b/drivers/net/ethernet/freescale/fman/Peripherals/FM/MACSEC/fm_macsec_master.h @@ -47,6 +47,7 @@ #define MACSEC_ICV_SIZE 16 #define MACSEC_SECTAG_SIZE 16 #define MACSEC_SCI_SIZE 8 +#define MACSEC_FCS_SIZE 4 /**************************************************************************//** @Description Exceptions @@ -137,7 +138,8 @@ #define DEFAULT_sc0ReservedForPTP FALSE #define DEFAULT_initNextPn 1 #define DEFAULT_pnExhThr 0xffffffff -#define DEFAULT_overhead (MACSEC_ICV_SIZE + MACSEC_SECTAG_SIZE) +#define DEFAULT_sectagOverhead (MACSEC_ICV_SIZE + MACSEC_SECTAG_SIZE) +#define DEFAULT_mflSubtract MACSEC_FCS_SIZE /**************************************************************************//** @@ -447,6 +449,7 @@ typedef struct bool byPassMode; bool reservedSc0; uint32_t sectagOverhead; + uint32_t mflSubtract; } t_FmMacsecDriverParam; typedef struct |