wlan: Cleanup ft session when driver receives disconnect from userspace

When FT roaming is in progress to an AP and the supplicant tries
to disconnect and connect to the same AP. In this condition, the
driver lim state is eLIM_SME_WT_REASSOC_STATE as it is trying to
roam. In disconnect path, we return from
__limProcessSmeDisassocReq without sending disconnect if lim
state is eLIM_SME_WT_REASSOC_STATE. The ft session cleanup is
also not done. So when immediately the supplicant tries to
connect to the new AP, it send the add self sta request to
firmware and as the bss entry is already created, firmware
asserts.

Clean up ft session in __limProcessSmeDisassocReq if the lim
state is eLIM_SME_WT_REASSOC_STATE and fallthrough in
__limProcessSmeDisassocReq to proceed with the normal disconnect
path. Then perform connect.

Change-Id: I249d3283af4aac8af79d24e0bc55337a19c5bf3a
CRs-Fixed: 2358068
diff --git a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
index 93199b1..f4b599c 100644
--- a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
@@ -2643,6 +2643,16 @@
         case eLIM_BT_AMP_STA_ROLE:
             switch (psessionEntry->limSmeState)
             {
+		/* cleanup FT session and proceed with disconnect
+		 * if received disconnect from supplicant when roaming
+		 * and lim state is eLIM_SME_WT_REASSOC_STATE. As the
+		 * FT session would have already created but is not cleaned.
+		 * This will prevent sending duplicate add bss request,
+		 * if we try to disconnect and connect to the same AP
+		 */
+		case eLIM_SME_WT_REASSOC_STATE:
+			limFTCleanup(pMac);
+			/* Fall through */
                 case eLIM_SME_ASSOCIATED_STATE:
                 case eLIM_SME_LINK_EST_STATE:
                     limLog(pMac, LOG1, FL("Rcvd SME_DISASSOC_REQ while in "