Patch RC13.1 from Marvell.
- Fix Adtran interop issue.
- Randomize equalization delay to try to fix ALU issue.
Change-Id: I6e608e4b720c6179cd793169c5ca4a6332c21095
diff --git a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuAlloc.c b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuAlloc.c
old mode 100755
new mode 100644
index 07b9ca5..d95b910
--- a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuAlloc.c
+++ b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuAlloc.c
@@ -721,7 +721,6 @@
"DEBUG: (%s:%d) release All T-Conts buffers, tpm_deactive_tcont\n", __FILE_DESC__, __LINE__);
#endif /* MV_GPON_DEBUG_PRINT */
- //printk("TCONT flush, FreeAllBuffers\n");
status = onuGponWqTcontFlush(tcontNum);
if (status != MV_OK)
{
diff --git a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuApi.c b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuApi.c
old mode 100755
new mode 100644
index 2a99b3b..61f2c6d
--- a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuApi.c
+++ b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuApi.c
@@ -177,13 +177,6 @@
return rcode;
}
- /*rcode = onuGponSrvcRangingRandomInit();
- if (rcode != MV_OK)
- {
- mvPonPrint(PON_PRINT_ERROR, PON_API_MODULE,
- "ERROR: (%s:%d) onuGponRangingRandomInit", __FILE_DESC__, __LINE__);
- return rcode;
- }*/
if (disabled == MV_TRUE)
{
@@ -588,10 +581,6 @@
"ERROR: (%s:%d) onuGponApiGemConfig", __FILE_DESC__, __LINE__);
break;
}
- if (onuGponDbGemPortAesGet(portId) == MV_TRUE) {
- /*update HW as well*/
- mvOnuGponMacAesPortIdSet(portId,MV_TRUE);
- }
}
else{
rcode = onuGponApiGemPortIdClear(portId);
@@ -601,10 +590,6 @@
"ERROR: (%s:%d) onuGponApiGemConfig", __FILE_DESC__, __LINE__);
break;
}
- if (onuGponDbGemPortAesGet(portId) == MV_TRUE) {
- /*remove HW configuration but keep SW encryption indication*/
- mvOnuGponMacAesPortIdSet(portId,MV_FALSE);
- }
}
}
@@ -765,6 +750,11 @@
}
onuGponDbGemPortValidSet(gemPortid, MV_TRUE);
+ if (onuGponDbGemPortAesGet(gemPortid) == MV_TRUE) {
+ /*update HW as well*/
+ mvOnuGponMacAesPortIdSet(gemPortid, MV_TRUE);
+ }
+
#ifdef MV_GPON_STATIC_GEM_PORT
if (staticGemPortConfigFlag == 0)
{
@@ -809,6 +799,11 @@
}
onuGponDbGemPortValidSet(gemPortid, MV_FALSE);
+ if (onuGponDbGemPortAesGet(gemPortid) == MV_TRUE) {
+ /*remove HW configuration but keep SW encryption indication*/
+ mvOnuGponMacAesPortIdSet(gemPortid, MV_FALSE);
+ }
+
return(rcode);
}
diff --git a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuInit.c b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuInit.c
old mode 100755
new mode 100644
index b8cf3b7..d14c59d
--- a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuInit.c
+++ b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuInit.c
@@ -328,6 +328,10 @@
for S/N Request answer delay */
onuGponDbSerialNumGet(sn);
snForRandomSeed = (MV_U32)(randomRange[1] & 0xFF) + (MV_U32)((randomRange[0] & 0xFF) << 8);
+ printk("snForRandomSeed = %d\n",snForRandomSeed);
+ /* delay start up for the random time */
+ mvOsDelay((snForRandomSeed & 0xFF));
+
rcode = mvOnuGponMacSerialNumberSet(snForRandomSeed);
if (rcode != MV_OK)
{
diff --git a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuMngr.h b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuMngr.h
old mode 100755
new mode 100644
diff --git a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuMngrStateMachine.c b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuMngrStateMachine.c
old mode 100755
new mode 100644
index 3661623..eb2f47c
--- a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuMngrStateMachine.c
+++ b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuMngrStateMachine.c
@@ -307,7 +307,7 @@
{
mvPonPrint(PON_PRINT_ERROR, PON_SM_MODULE,
"ERROR: (%s:%d) onuGponPonMngClearOnuBuffers\n", __FILE_DESC__, __LINE__);
- return;
+ return(rcode);
}
rcode = onuGponPonMngClearOnuId();
@@ -615,6 +615,7 @@
get_random_bytes((void*)randomRange, sizeof(randomRange));
randomVal = (((randomRange[0] >> randomLeft) & 0xDF) ^ ((randomRange[1] >> randomRight) & 0xDF));
+
}
/*******************************************************************************
@@ -782,7 +783,11 @@
finalDelay = M_ONU_GPON_RANG_MSG_FINAL_DELAY(preAssignDelayTemp);
equalizationDelay = M_ONU_GPON_RANG_MSG_EQUAL_DELAY(preAssignDelayTemp);
+ /*onuGponPonMngRandomDelayGen4SN_Equ();*/
+
equalizationDelay += randomVal * 32;
+ printk("onuGponPonMngOverheadMsg: equalizationDelay = 0x%x\n", equalizationDelay);
+
rcode = mvOnuGponMacRxEqualizationDelaySet(equalizationDelay);
if (rcode != MV_OK)
@@ -804,7 +809,7 @@
__FILE_DESC__, __LINE__, finalDelay);
return;
}
-
+#if 0
rcode = onuGponPonMngrUpdateState((MV_U32)ONU_GPON_03_SERIAL_NUM);
if (rcode != MV_OK)
{
@@ -812,7 +817,7 @@
"ERROR: (%s:%d) onuGponPonMngrUpdateState(3)\n", __FILE_DESC__, __LINE__);
return;
}
-
+#endif
/* update database */
onuGponDbEqualizationDelaySet(preAssignDelay);
@@ -837,13 +842,15 @@
/* Before changing state check SN_Mask VALUE and serialNumberMaskDefaultStateFlag mode.
** Add Support for HW and SW state machine */
- //rcode = onuGponPonMngrUpdateState((MV_U32)ONU_GPON_03_SERIAL_NUM);
- //if (rcode != MV_OK)
- //{
- // mvPonPrint(PON_PRINT_ERROR, PON_SM_MODULE,
- // "ERROR: (%s:%d) onuGponPonMngrUpdateState(3)\n", __FILE_DESC__, __LINE__);
- // return;
- //}
+#if 1
+ rcode = onuGponPonMngrUpdateState((MV_U32)ONU_GPON_03_SERIAL_NUM);
+ if (rcode != MV_OK)
+ {
+ mvPonPrint(PON_PRINT_ERROR, PON_SM_MODULE,
+ "ERROR: (%s:%d) onuGponPonMngrUpdateState(3)\n", __FILE_DESC__, __LINE__);
+ return;
+ }
+#endif
#ifdef MV_GPON_PERFORMANCE_CHECK
asicOntGlbRegReadNoCheck(mvAsicReg_GPON_GEN_MICRO_SEC_CNT,
diff --git a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuPm.c b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuPm.c
old mode 100755
new mode 100644
index 4c78db0..24b8f87
--- a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuPm.c
+++ b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuPm.c
@@ -208,7 +208,7 @@
S_RxBip8Pm inBip8Pm;
unsigned long flags;
- onuGponPonMngRandomDelayGen4SN_Equ();
+ onuGponPonMngRandomDelayGen4SN_Equ();
onuGponPmCountersAdd();
onuGponPmRxBip8PmGet(&inBip8Pm);
spin_lock_irqsave(&onuPonIrqLock, flags);
diff --git a/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuSrvc.c b/arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/core/gpon/gponOnuSrvc.c
old mode 100755
new mode 100644