Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit be22d319 authored by Sravan Goud's avatar Sravan Goud Committed by Gerrit - the friendly Code Review server
Browse files

wlan: Reset logp in progress after reinit success

During SSR after hdd reint there is a delay in setting
the logp in progress falg to false. In this delay if
any rx interrupt comes, in isr interrupt is diabled
and not enabled back which leads to permanent data stall.
So reset logp in progress after reinit is successful.

Change-Id: I099af5792c07b147f771cc89dce2b1d890900da9
CRs-Fixed: 2597529
parent 555f6c31
Loading
Loading
Loading
Loading
+9 −1
Original line number Original line Diff line number Diff line
@@ -3214,8 +3214,16 @@ static void dxeRXISR
      return;         
      return;         
   }
   }


   wpalReadRegister(WLANDXE_INT_SRC_RAW_ADDRESS,
   status = wpalReadRegister(WLANDXE_INT_SRC_RAW_ADDRESS,
                                  &intSrc);
                                  &intSrc);
   if(eWLAN_PAL_STATUS_SUCCESS != status)
   {
      status = wpalEnableInterrupt(DXE_INTERRUPT_RX_READY);
      if(eWLAN_PAL_STATUS_SUCCESS != status)
          HDXE_MSG(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_ERROR,
                   "dxeISR enable rx ready interrupt fail");
      return;
   }
   /* Note: intSrc which holds the INT_SRC_RAW_ADDRESS reg value
   /* Note: intSrc which holds the INT_SRC_RAW_ADDRESS reg value
      While debugging crash dump convert to power of 2 for channel type */
      While debugging crash dump convert to power of 2 for channel type */
   DXTRACE(dxeTrace(intSrc, TRACE_RXINT_STATE, TRACE_WLANDXE_VAR_DISABLE));
   DXTRACE(dxeTrace(intSrc, TRACE_RXINT_STATE, TRACE_WLANDXE_VAR_DISABLE));
+3 −0
Original line number Original line Diff line number Diff line
@@ -2865,6 +2865,9 @@ VOS_STATUS hdd_wlan_re_init(void)
   return -EPERM;
   return -EPERM;


success:
success:
   pHddCtx->isLogpInProgress = FALSE;
   vos_set_logp_in_progress(VOS_MODULE_ID_VOSS, FALSE);

   hdd_wlan_ssr_reinit_event();
   hdd_wlan_ssr_reinit_event();
   /* Trigger replay of BTC events */
   /* Trigger replay of BTC events */
   send_btc_nlink_msg(WLAN_MODULE_DOWN_IND, 0);
   send_btc_nlink_msg(WLAN_MODULE_DOWN_IND, 0);
+0 −2
Original line number Original line Diff line number Diff line
@@ -971,8 +971,6 @@ VosWDThread
        else
        else
        {
        {
          pWdContext->isFatalError = false;
          pWdContext->isFatalError = false;
          pHddCtx->isLogpInProgress = FALSE;
          vos_set_logp_in_progress(VOS_MODULE_ID_VOSS, FALSE);
        }
        }
        atomic_set(&pHddCtx->isRestartInProgress, 0);
        atomic_set(&pHddCtx->isRestartInProgress, 0);
        pWdContext->resetInProgress = false;
        pWdContext->resetInProgress = false;