[VOL-4899] Avoid ONUs being set to unreachable after multiple unsuccessful OMCI communication attempts
Change-Id: I234fba69dfe13d014dae73168315a5733b16a7c8
diff --git a/VERSION b/VERSION
index 437459c..e70b452 100755
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.5.0
+2.6.0
diff --git a/internal/pkg/common/defines.go b/internal/pkg/common/defines.go
index 545892f..f359795 100755
--- a/internal/pkg/common/defines.go
+++ b/internal/pkg/common/defines.go
@@ -361,15 +361,9 @@
OnuOmciCommunicationFailureConfig = "ONU_OMCI_COMMUNICATION_FAILURE_CONFIG"
OnuOmciCommunicationFailureConfigDesc = "OMCI communication during ONU configuration failed"
- OnuOmciCommunicationAbortConfig = "ONU_OMCI_COMMUNICATION_ABORT_CONFIG"
- OnuOmciCommunicationAbortConfigDesc = "OMCI communication during ONU configuration aborted - max failures reached: stopping device"
-
OnuOmciCommunicationFailureSwUpgrade = "ONU_OMCI_COMMUNICATION_FAILURE_SW_UPGRADE"
OnuOmciCommunicationFailureSwUpgradeDesc = "OMCI communication during ONU SW upgrade failed"
- OnuOmciCommunicationAbortSwUpgrade = "ONU_OMCI_COMMUNICATION_ABORT_SW_UPGRADE"
- OnuOmciCommunicationAbortSwUpgradeDesc = "OMCI communication during ONU SW upgrade aborted - max failures reached: stopping device"
-
OnuConfigFailureMissingTcont = "ONU_CONFIG_FAILURE_MISSING_TCONT"
OnuConfigFailureMissingTcontDesc = "ONU config failed - no further TCONT resources available at ONU"
diff --git a/internal/pkg/common/interfaces.go b/internal/pkg/common/interfaces.go
index ceec3ef..3268564 100755
--- a/internal/pkg/common/interfaces.go
+++ b/internal/pkg/common/interfaces.go
@@ -124,8 +124,6 @@
CreatePortInCore(context.Context, *voltha.Port) error
PerOnuFlowHandlerRoutine(uniID uint8)
-
- UpdateInterface(context.Context) error
}
// IonuDeviceEntry interface to onuDeviceEntry
diff --git a/internal/pkg/common/omci_cc.go b/internal/pkg/common/omci_cc.go
index 551f389..8726eb3 100755
--- a/internal/pkg/common/omci_cc.go
+++ b/internal/pkg/common/omci_cc.go
@@ -73,8 +73,6 @@
// CDefaultRetries - TODO: add comment
const CDefaultRetries = 2
-const cMaxConsecutiveOmciTimeouts = 3
-
// ### OMCI related definitions - end
//CallbackPairEntry to be used for OMCI send/receive correlation
@@ -134,19 +132,15 @@
UploadSequNo uint16
UploadNoOfCmds uint16
- mutexSendQueuedRequests sync.Mutex
- mutexLowPrioTxQueue sync.Mutex
- lowPrioTxQueue *list.List
- mutexHighPrioTxQueue sync.Mutex
- highPrioTxQueue *list.List
- mutexRxSchedMap sync.Mutex
- rxSchedulerMap map[uint16]CallbackPairEntry
- mutexMonReq sync.RWMutex
- monitoredRequests map[uint16]OmciTransferStructure
- mutexConsecutiveOmciTimeouts sync.RWMutex
- consecutiveOmciTimeouts uint8
- mutexOmciAbortInProgress sync.RWMutex
- omciAbortInProgress bool
+ mutexSendQueuedRequests sync.Mutex
+ mutexLowPrioTxQueue sync.Mutex
+ lowPrioTxQueue *list.List
+ mutexHighPrioTxQueue sync.Mutex
+ highPrioTxQueue *list.List
+ mutexRxSchedMap sync.Mutex
+ rxSchedulerMap map[uint16]CallbackPairEntry
+ mutexMonReq sync.RWMutex
+ monitoredRequests map[uint16]OmciTransferStructure
}
var responsesWithMibDataSync = []omci.MessageType{
@@ -186,8 +180,6 @@
omciCC.highPrioTxQueue = list.New()
omciCC.rxSchedulerMap = make(map[uint16]CallbackPairEntry)
omciCC.monitoredRequests = make(map[uint16]OmciTransferStructure)
- omciCC.consecutiveOmciTimeouts = 0
- omciCC.omciAbortInProgress = false
return &omciCC
}
@@ -424,11 +416,6 @@
rxCallbackEntry, ok := oo.rxSchedulerMap[omciMsg.TransactionID]
if ok && rxCallbackEntry.CbFunction != nil {
- // valid OMCI Response Message received - reset counter of consecutive OMCI timeouts
- oo.mutexConsecutiveOmciTimeouts.Lock()
- oo.consecutiveOmciTimeouts = 0
- oo.mutexConsecutiveOmciTimeouts.Unlock()
-
if rxCallbackEntry.FramePrint {
oo.printRxMessage(ctx, rxMsg)
}
@@ -4480,31 +4467,6 @@
log.Fields{"tid": tid, "retries": retryCounter, "device-id": oo.deviceID})
oo.pOnuDeviceEntry.SendOnuDeviceEvent(ctx, OnuOmciCommunicationFailureSwUpgrade, OnuOmciCommunicationFailureSwUpgradeDesc)
oo.incrementTxTimesouts()
- oo.mutexConsecutiveOmciTimeouts.Lock()
- if oo.consecutiveOmciTimeouts < cMaxConsecutiveOmciTimeouts {
- oo.consecutiveOmciTimeouts++
- oo.mutexConsecutiveOmciTimeouts.Unlock()
- } else {
- oo.consecutiveOmciTimeouts = 0
- oo.mutexConsecutiveOmciTimeouts.Unlock()
- oo.mutexOmciAbortInProgress.Lock()
- if !oo.omciAbortInProgress {
- oo.omciAbortInProgress = true
- oo.mutexOmciAbortInProgress.Unlock()
- logger.Errorw(ctx, "reqMon: communication aborted - no of max consecutive timeouts reached - stopping device and send ONU device event!",
- log.Fields{"tid": tid, "device-id": oo.deviceID})
- oo.pOnuDeviceEntry.SendOnuDeviceEvent(ctx, OnuOmciCommunicationAbortSwUpgrade, OnuOmciCommunicationAbortSwUpgradeDesc)
- // stop all running FSM processing
- _ = oo.pBaseDeviceHandler.UpdateInterface(ctx)
- oo.mutexOmciAbortInProgress.Lock()
- oo.omciAbortInProgress = false
- oo.mutexOmciAbortInProgress.Unlock()
- } else {
- oo.mutexOmciAbortInProgress.Unlock()
- logger.Infow(ctx, "reqMon: communication aborted - corresponding processing already running",
- log.Fields{"tid": tid, "device-id": oo.deviceID})
- }
- }
break loop
} else {
logger.Infow(ctx, "reqMon: timeout waiting for response - retry",
@@ -5008,31 +4970,6 @@
log.Fields{"tid": tid, "retries": retryCounter, "device-id": oo.deviceID})
oo.pOnuDeviceEntry.SendOnuDeviceEvent(ctx, OnuOmciCommunicationFailureConfig, OnuOmciCommunicationFailureConfigDesc)
oo.incrementTxTimesouts()
- oo.mutexConsecutiveOmciTimeouts.Lock()
- if oo.consecutiveOmciTimeouts < cMaxConsecutiveOmciTimeouts {
- oo.consecutiveOmciTimeouts++
- oo.mutexConsecutiveOmciTimeouts.Unlock()
- } else {
- oo.consecutiveOmciTimeouts = 0
- oo.mutexConsecutiveOmciTimeouts.Unlock()
- oo.mutexOmciAbortInProgress.Lock()
- if !oo.omciAbortInProgress {
- oo.omciAbortInProgress = true
- oo.mutexOmciAbortInProgress.Unlock()
- logger.Errorw(ctx, "reqMon: communication aborted - no of max consecutive timeouts reached - stopping device and send ONU device event!",
- log.Fields{"tid": tid, "device-id": oo.deviceID})
- oo.pOnuDeviceEntry.SendOnuDeviceEvent(ctx, OnuOmciCommunicationAbortConfig, OnuOmciCommunicationAbortConfigDesc)
- // stop all running FSM processing
- _ = oo.pBaseDeviceHandler.UpdateInterface(ctx)
- oo.mutexOmciAbortInProgress.Lock()
- oo.omciAbortInProgress = false
- oo.mutexOmciAbortInProgress.Unlock()
- } else {
- oo.mutexOmciAbortInProgress.Unlock()
- logger.Infow(ctx, "reqMon: communication aborted - corresponding processing already running",
- log.Fields{"tid": tid, "device-id": oo.deviceID})
- }
- }
break loop
} else {
logger.Infow(ctx, "reqMon: timeout waiting for response - retry",