summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/freescale
diff options
context:
space:
mode:
authorCamelia Groza <camelia.groza@freescale.com>2015-04-27 07:43:39 (GMT)
committerMadalin-Cristian Bucur <madalin.bucur@freescale.com>2015-04-27 13:56:16 (GMT)
commitd4dce299e2a6278f5d237e5bf17be232820db138 (patch)
treeb3724b6324f992468b4c7d1a83612aced02b4cea /drivers/net/ethernet/freescale
parentea0f80c1398c91a6ca549edf2b826a40eed1f893 (diff)
downloadlinux-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')
-rw-r--r--drivers/net/ethernet/freescale/fman/Peripherals/FM/MACSEC/fm_macsec_master.c9
-rw-r--r--drivers/net/ethernet/freescale/fman/Peripherals/FM/MACSEC/fm_macsec_master.h5
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