wlan: Cache deleted station's information in case of SAP

qcacld-3.0 to prima propagation

During disconnection process, cache disconnecting STA information
so that the same information is updated to upper-layer on receiving
GET_STATION vendor command, after disconnection.

Change-Id: I2e5a0be42d81b86e6f4490de1bdf9d7e0797506d
CRs-Fixed: 2159220
diff --git a/CORE/MAC/src/pe/lim/limProcessAssocReqFrame.c b/CORE/MAC/src/pe/lim/limProcessAssocReqFrame.c
index e1b7978..7b6666c 100644
--- a/CORE/MAC/src/pe/lim/limProcessAssocReqFrame.c
+++ b/CORE/MAC/src/pe/lim/limProcessAssocReqFrame.c
@@ -1663,6 +1663,52 @@
         pMlmAssocInd->beaconPtr = psessionEntry->beacon;
         pMlmAssocInd->beaconLength = psessionEntry->bcnLen;
 
+        pMlmAssocInd->chan_info.chan_id = psessionEntry->currentOperChannel;
+
+        if (psessionEntry->limRFBand == SIR_BAND_2_4_GHZ) {
+            if (psessionEntry->vhtCapability && pAssocReq->VHTCaps.present) {
+                pMlmAssocInd->chan_info.info = MODE_11AC_VHT20_2G;
+                pMlmAssocInd->VHTCaps = pAssocReq->VHTCaps;
+            } else if (psessionEntry->htCapability &&
+                                                 pAssocReq->HTCaps.present) {
+                pMlmAssocInd->chan_info.info = MODE_11NG_HT20;
+                pMlmAssocInd->HTCaps = pAssocReq->HTCaps;
+            } else if (pStaDs->supportedRates.llaRates[0]) {
+                pMlmAssocInd->chan_info.info = MODE_11G;
+            } else {
+                pMlmAssocInd->chan_info.info = MODE_11B;
+            }
+        } else {
+            if (psessionEntry->vhtCapability && pAssocReq->VHTCaps.present) {
+                if ((psessionEntry->vhtTxChannelWidthSet ==
+                                                eHT_CHANNEL_WIDTH_80MHZ) &&
+                                 pAssocReq->HTCaps.supportedChannelWidthSet) {
+                    pMlmAssocInd->chan_info.info = MODE_11AC_VHT80;
+                } else if ((psessionEntry->vhtTxChannelWidthSet ==
+                                                eHT_CHANNEL_WIDTH_40MHZ) &&
+                                  pAssocReq->HTCaps.supportedChannelWidthSet) {
+                    pMlmAssocInd->chan_info.info = MODE_11AC_VHT40;
+                } else
+                    pMlmAssocInd->chan_info.info = MODE_11AC_VHT20;
+                    pMlmAssocInd->VHTCaps = pAssocReq->VHTCaps;
+            } else if (psessionEntry->htCapability &&
+                                pAssocReq->HTCaps.present) {
+                if ((psessionEntry->vhtTxChannelWidthSet ==
+                                                eHT_CHANNEL_WIDTH_40MHZ) &&
+                                  pAssocReq->HTCaps.supportedChannelWidthSet) {
+                    pMlmAssocInd->chan_info.info = MODE_11NA_HT40;
+                } else
+                    pMlmAssocInd->chan_info.info = MODE_11NA_HT20;
+                pMlmAssocInd->HTCaps = pAssocReq->HTCaps;
+            } else
+                pMlmAssocInd->chan_info.info = MODE_11A;
+        }
+
+        pMlmAssocInd->ch_width = eHT_CHANNEL_WIDTH_20MHZ;
+        if (pStaDs->mlmStaContext.htCapability)
+            pMlmAssocInd->ch_width = pStaDs->htSupportedChannelWidthSet ?
+                            eHT_CHANNEL_WIDTH_40MHZ : eHT_CHANNEL_WIDTH_20MHZ;
+
         pMlmAssocInd->rate_flags =
             limGetMaxRateFlags(pStaDs, psessionEntry);