summaryrefslogtreecommitdiff
path: root/drivers/net
diff options
context:
space:
mode:
authorMandy Lavi <mandy.lavi@freescale.com>2013-07-16 08:03:57 (GMT)
committerJ. German Rivera <Jose.G.Rivera@freescale.com>2013-08-12 21:38:38 (GMT)
commitc1efd40363ac2bb4737ae9a22d047eda8510bfe8 (patch)
tree27c706c7a496a02987d606a072d79754083844ee /drivers/net
parent17b2f42e8fee7ad98cc8f7ed7e50aa5b76a3acab (diff)
downloadlinux-fsl-qoriq-c1efd40363ac2bb4737ae9a22d047eda8510bfe8.tar.xz
fmd: handle erratum A006981
Changes open dma allocation to workaround erratum A006981 Also verify that it applies only to B4-rev1 while rev2 should have this erratum fixed Signed-off-by: Mandy Lavi <mandy.lavi@freescale.com> Change-Id: Icc0552269da9ad80763e8ad1394d6ad67ee143a8 Reviewed-on: http://git.am.freescale.net:8181/3428 Tested-by: Review Code-CDREVIEW <CDREVIEW@freescale.com> Reviewed-by: Fleming Andrew-AFLEMING <AFLEMING@freescale.com>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/ethernet/freescale/fman/Peripherals/FM/Port/fm_port.c11
-rw-r--r--drivers/net/ethernet/freescale/fman/Peripherals/FM/fm.c4
-rw-r--r--drivers/net/ethernet/freescale/fman/inc/integrations/T4240/dpaa_integration_ext.h1
3 files changed, 16 insertions, 0 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 6b92941..b2dbcac 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
@@ -2444,6 +2444,17 @@ t_Handle FM_PORT_Config(t_FmPortParams *p_FmPortParams)
}
}
+#ifdef FM_HEAVY_TRAFFIC_SEQUENCER_HANG_ERRATA_FMAN_A006981
+ if ((p_FmPort->fmRevInfo.majorRev == 6) &&
+ (p_FmPort->fmRevInfo.minorRev == 0) &&
+ ((p_FmPort->portType == e_FM_PORT_TYPE_OH_OFFLINE_PARSING) ||
+ (p_FmPort->portType == e_FM_PORT_TYPE_TX)))
+ {
+ p_FmPort->openDmas.num = 16;
+ p_FmPort->openDmas.extra = 0;
+ }
+#endif /* FM_HEAVY_TRAFFIC_SEQUENCER_HANG_ERRATA_FMAN_A006981 */
+
if (p_FmPort->portType == e_FM_PORT_TYPE_OH_HOST_COMMAND)
p_FmPort->p_FmPortDriverParam->syncReq = DEFAULT_PORT_syncReqForHc;
else
diff --git a/drivers/net/ethernet/freescale/fman/Peripherals/FM/fm.c b/drivers/net/ethernet/freescale/fman/Peripherals/FM/fm.c
index 2fdc4c8..a44bdab 100644
--- a/drivers/net/ethernet/freescale/fman/Peripherals/FM/fm.c
+++ b/drivers/net/ethernet/freescale/fman/Peripherals/FM/fm.c
@@ -3313,6 +3313,10 @@ t_Error FmSetNumOfOpenDmas(t_Handle h_Fm,
p_Fm->p_FmStateStruct->fmId));
#else
if ((p_Fm->p_FmStateStruct->revInfo.majorRev >= 6) &&
+#ifdef FM_HEAVY_TRAFFIC_SEQUENCER_HANG_ERRATA_FMAN_A006981
+ !((p_Fm->p_FmStateStruct->revInfo.majorRev == 6) &&
+ (p_Fm->p_FmStateStruct->revInfo.minorRev == 0)) &&
+#endif /* FM_HEAVY_TRAFFIC_SEQUENCER_HANG_ERRATA_FMAN_A006981 */
(p_Fm->p_FmStateStruct->accumulatedNumOfOpenDmas - oldVal + numOfOpenDmas > DMA_THRESH_MAX_COMMQ + 1))
RETURN_ERROR(MAJOR, E_NOT_AVAILABLE,
("Requested numOfOpenDmas for fm%d exceeds DMA Command queue (%d)",
diff --git a/drivers/net/ethernet/freescale/fman/inc/integrations/T4240/dpaa_integration_ext.h b/drivers/net/ethernet/freescale/fman/inc/integrations/T4240/dpaa_integration_ext.h
index 64349ea..b6780b9 100644
--- a/drivers/net/ethernet/freescale/fman/inc/integrations/T4240/dpaa_integration_ext.h
+++ b/drivers/net/ethernet/freescale/fman/inc/integrations/T4240/dpaa_integration_ext.h
@@ -264,6 +264,7 @@ typedef enum
#define FM_WRONG_RESET_VALUES_ERRATA_FMAN_A005127
#define FM_RX_FIFO_CORRUPT_ERRATA_10GMAC_A006320
#define FM_OP_NO_VSP_NO_RELEASE_ERRATA_FMAN_A006675
+#define FM_HEAVY_TRAFFIC_SEQUENCER_HANG_ERRATA_FMAN_A006981
#define FM_BCB_ERRATA_BMI_SW001
#define FM_LEN_CHECK_ERRATA_FMAN_SW002