wlan: Update Tx counters using correct TDLS station Id.

Setup of BA session on TDLS link. BA session is setup only if there is
any tx activity on a link and this is obtained by looking at the Tx
counter mainatined in TL.

Change-Id: I04a1e5ba14ea7c914d701bdfd09a3c7232490293
CR-Fixed: 431762
diff --git a/CORE/TL/src/wlan_qct_tl.c b/CORE/TL/src/wlan_qct_tl.c
index 010fff1..fb28efb 100644
--- a/CORE/TL/src/wlan_qct_tl.c
+++ b/CORE/TL/src/wlan_qct_tl.c
@@ -2112,9 +2112,15 @@
   if (( 0 == pMetaInfo->ucDisableFrmXtl ) &&
       ( 0 != pTLCb->atlSTAClients[ucStaId].wSTADesc.ucSwFrameTXXlation ))
   {
+#ifdef FEATURE_WLAN_TDLS
+    vosStatus =  WLANTL_Translate8023To80211Header( vosDataBuff, &vosStatus,
+                                                    pTLCb, &ucStaId,
+                                                    pMetaInfo->ucUP, &ucWDSEnabled, &extraHeadSpace);
+#else
     vosStatus = WLANTL_Translate8023To80211Header(vosDataBuff, &vosStatus,
                                                   pTLCb, ucStaId,
                                                   pMetaInfo->ucUP, &ucWDSEnabled, &extraHeadSpace);
+#endif
 
     if ( VOS_STATUS_SUCCESS != vosStatus )
     {
@@ -5999,10 +6005,15 @@
       ( 0 != pTLCb->atlSTAClients[ucSTAId].wSTADesc.ucSwFrameTXXlation) )
 #endif //#ifdef FEATURE_WLAN_WAPI
   {
+#ifdef FEATURE_WLAN_TDLS
+    vosStatus =  WLANTL_Translate8023To80211Header( vosDataBuff, &vosStatus,
+                                                    pTLCb, &ucSTAId,
+                                                    tlMetaInfo.ucUP, &ucWDSEnabled, &extraHeadSpace);
+#else
     vosStatus =  WLANTL_Translate8023To80211Header( vosDataBuff, &vosStatus,
                                                     pTLCb, ucSTAId,
                                                     tlMetaInfo.ucUP, &ucWDSEnabled, &extraHeadSpace);
-
+#endif
     if ( VOS_STATUS_SUCCESS != vosStatus )
     {
       TLLOGE(VOS_TRACE( VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_ERROR,
@@ -6386,9 +6397,15 @@
        gUcIsWai = tlMetaInfo.ucIsWai,
 #endif
 
+#ifdef FEATURE_WLAN_TDLS
+       vosStatus =  WLANTL_Translate8023To80211Header( vosDataBuff, &vosStatus,
+                                                    pTLCb, &ucSTAId,
+                                                    tlMetaInfo.ucUP, &ucWDSEnabled, &extraHeadSpace);
+#else
        vosStatus = WLANTL_Translate8023To80211Header( vosDataBuff, &vosStatus,
                                                    pTLCb, ucSTAId,
                                                    tlMetaInfo.ucUP, &ucWDSEnabled, &extraHeadSpace);
+#endif
        if ( VOS_STATUS_SUCCESS != vosStatus )
        {
           TLLOGE(VOS_TRACE( VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_ERROR,
@@ -6462,10 +6479,14 @@
   }
 #endif
 
+#ifndef FEATURE_WLAN_TDLS
   /*-----------------------------------------------------------------------
     Update tx counter for BA session query for tx side
     -----------------------------------------------------------------------*/
   pStaClient->auTxCount[ucTid]++;
+#else
+  pTLCb->atlSTAClients[ucSTAId].auTxCount[ucTid]++;
+#endif
 
   /* This code is to send traffic with lower priority AC when we does not 
      get admitted to send it. Today HAL does not downgrade AC so this code 
@@ -8116,6 +8137,19 @@
   SIDE EFFECTS
 
 ============================================================================*/
+#ifdef FEATURE_WLAN_TDLS
+VOS_STATUS
+WLANTL_Translate8023To80211Header
+(
+  vos_pkt_t*      vosDataBuff,
+  VOS_STATUS*     pvosStatus,
+  WLANTL_CbType*  pTLCb,
+  v_U8_t          *pucStaId,
+  v_U8_t          ucUP,
+  v_U8_t          *ucWDSEnabled,
+  v_U8_t          *extraHeadSpace
+)
+#else
 VOS_STATUS
 WLANTL_Translate8023To80211Header
 (
@@ -8127,6 +8161,7 @@
   v_U8_t          *ucWDSEnabled,
   v_U8_t          *extraHeadSpace
 )
+#endif
 {
   WLANTL_8023HeaderType  w8023Header;
   WLANTL_80211HeaderType *pw80211Header; // Allocate an aligned BD and then fill it. 
@@ -8137,6 +8172,9 @@
 #ifdef WLAN_SOFTAP_FEATURE
   v_U8_t                 ucQoSOffset = WLAN80211_MANDATORY_HEADER_SIZE;
 #endif
+#ifdef FEATURE_WLAN_TDLS
+  v_U8_t                 ucStaId;
+#endif
 
   *ucWDSEnabled = 0; // default WDS off.
   vosStatus = vos_pkt_pop_head( vosDataBuff, &w8023Header,
@@ -8150,23 +8188,31 @@
   }
 
 #ifdef FEATURE_WLAN_TDLS
-    if( WLAN_STA_INFRA == pTLCb->atlSTAClients[ucStaId].wSTADesc.wSTAType )
-    {
-      v_U8_t ucIndex = 0;
-      for ( ucIndex = 0; ucIndex < WLAN_MAX_STA_COUNT ; ucIndex++)
-      {
-        if( ucIndex != ucStaId && pTLCb->atlSTAClients[ucIndex].ucExists &&
-            vos_mem_compare( (void*)pTLCb->atlSTAClients[ucIndex].wSTADesc.vSTAMACAddress.bytes,
-              (void*)w8023Header.vDA, 6) )
-        {
-          TLLOGE(VOS_TRACE( VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_INFO_LOW,
-                "WLAN TL: Got a TDLS station. Using that index"));
-          ucStaId = ucIndex;
-          break;
-        }
-      }
+  if( NULL == pucStaId )
+  {
+     TLLOGE(VOS_TRACE( VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_ERROR,
+     "WLAN TL: Invalid pointer for StaId"));
+     return VOS_STATUS_E_INVAL;
+  }
+  ucStaId = *pucStaId;
 
+  if( WLAN_STA_INFRA == pTLCb->atlSTAClients[ucStaId].wSTADesc.wSTAType )
+  {
+    v_U8_t ucIndex = 0;
+    for ( ucIndex = 0; ucIndex < WLAN_MAX_STA_COUNT ; ucIndex++)
+    {
+      if( ucIndex != ucStaId && pTLCb->atlSTAClients[ucIndex].ucExists &&
+          vos_mem_compare( (void*)pTLCb->atlSTAClients[ucIndex].wSTADesc.vSTAMACAddress.bytes,
+            (void*)w8023Header.vDA, 6) )
+      {
+        TLLOGE(VOS_TRACE( VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_INFO_LOW,
+              "WLAN TL: Got a TDLS station. Using that index"));
+        ucStaId = ucIndex;
+        *pucStaId = ucStaId;
+        break;
+      }
     }
+  }
 #endif
 
 
diff --git a/CORE/TL/src/wlan_qct_tli.h b/CORE/TL/src/wlan_qct_tli.h
index a9fbf98..078748e 100644
--- a/CORE/TL/src/wlan_qct_tli.h
+++ b/CORE/TL/src/wlan_qct_tli.h
@@ -1262,7 +1262,11 @@
 
    IN
     pTLCb:            TL control block
+#ifdef FEATURE_WLAN_TDLS
+    *pucStaId         Returns the staId used in case of TDLS
+#else
     ucStaId:          station ID
+#endif
 
    IN/OUT
     vosDataBuff:      vos data buffer, will contain the new header on output
@@ -1276,6 +1280,19 @@
   SIDE EFFECTS
 
 ============================================================================*/
+#ifdef FEATURE_WLAN_TDLS
+VOS_STATUS
+WLANTL_Translate8023To80211Header
+(
+  vos_pkt_t*      vosDataBuff,
+  VOS_STATUS*     pvosStatus,
+  WLANTL_CbType*  pTLCb,
+  v_U8_t          *pucStaId,
+  v_U8_t          ucUP,
+  v_U8_t          *ucWDSEnabled,
+  v_U8_t          *extraHeadSpace
+);
+#else
 VOS_STATUS
 WLANTL_Translate8023To80211Header
 (
@@ -1287,7 +1304,7 @@
   v_U8_t          *ucWDSEnabled,
   v_U8_t          *extraHeadSpace
 );
-
+#endif
 /*==========================================================================
   FUNCTION    WLANTL_Translate80211To8023Header