wlan: Implement three states(values) for ini paramter toggleArpBDRates

Implement three states(values) for ini parameter toggleArpBDRates. So
that when it is set to 0 then disable feature, when set to 1 enable
toggling of ARP packets rates (1/6Mbps) and send using TID3 and
when set to 2 send on WQ5 along  with toggling of ARP packets and
send using TID3

Change-Id: I6ef45af02ae6c2f64bf9e00d619c4a94a4f26aac
CRs-Fixed: 906480
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h
index d76f68f..03c17b9 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg.h
@@ -2497,7 +2497,7 @@
 
 #define CFG_TOGGLE_ARP_BDRATES_NAME       "gToggleArpBDRates"
 #define CFG_TOGGLE_ARP_BDRATES_MIN         0
-#define CFG_TOGGLE_ARP_BDRATES_MAX         1
+#define CFG_TOGGLE_ARP_BDRATES_MAX         2
 #define CFG_TOGGLE_ARP_BDRATES_DEFAULT     0
 
 /*
diff --git a/CORE/MAC/inc/wniCfg.h b/CORE/MAC/inc/wniCfg.h
index a96f333..f1d4f2a 100644
--- a/CORE/MAC/inc/wniCfg.h
+++ b/CORE/MAC/inc/wniCfg.h
@@ -1868,7 +1868,7 @@
 #define WNI_CFG_ENABLE_RTSCTS_HTVHT_DEF 0x0000
 
 #define WNI_CFG_TOGGLE_ARP_BDRATES_MIN 0
-#define WNI_CFG_TOGGLE_ARP_BDRATES_MAX 1
+#define WNI_CFG_TOGGLE_ARP_BDRATES_MAX 2
 #define WNI_CFG_TOGGLE_ARP_BDRATES_DEF 0
 
 #define WNI_CFG_BTC_STATIC_OPP_WLAN_IDLE_WLAN_LEN_MIN 0
diff --git a/CORE/TL/src/wlan_qct_tl.c b/CORE/TL/src/wlan_qct_tl.c
index eaa874d..d0ae3f2 100644
--- a/CORE/TL/src/wlan_qct_tl.c
+++ b/CORE/TL/src/wlan_qct_tl.c
@@ -238,6 +238,10 @@
 /* Maximum value of SNR that can be calculated by the HW */
 #define WLANTL_MAX_HW_SNR 35
 
+#define DISABLE_ARP_TOGGLE 0
+#define ENABLE_ARP_TOGGLE  1
+#define SEND_ARP_ON_WQ5    2
+
 /*----------------------------------------------------------------------------
  * Type Declarations
  * -------------------------------------------------------------------------*/
@@ -1241,7 +1245,8 @@
   {
     wlan_cfgGetInt(pMac, WNI_CFG_TOGGLE_ARP_BDRATES, &istoggleArpEnb);
   }
-  pClientSTA->arpRate = (v_U8_t)istoggleArpEnb;
+  pClientSTA->arpRate = istoggleArpEnb ? ENABLE_ARP_TOGGLE : DISABLE_ARP_TOGGLE;
+  pClientSTA->arpOnWQ5 = istoggleArpEnb == SEND_ARP_ON_WQ5;
 
   TLLOG2(VOS_TRACE( VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_INFO_HIGH,
    "WLAN TL:Registering STA Client ID: %d with UC %d and BC %d toggleArp :%hhu",
@@ -8066,7 +8071,10 @@
 #endif /* FEATURE_WLAN_TDLS */
   if( tlMetaInfo.ucIsArp )
   {
-    ucTxFlag |= HAL_USE_FW_IN_TX_PATH;
+    if (pStaClient->arpOnWQ5)
+    {
+        ucTxFlag |= HAL_USE_FW_IN_TX_PATH;
+    }
     if (pStaClient->arpRate == 0)
     {
         ucTxFlag |= HAL_USE_BD_RATE_1_MASK;
diff --git a/CORE/TL/src/wlan_qct_tli.h b/CORE/TL/src/wlan_qct_tli.h
index b9f3744..ac0247d 100644
--- a/CORE/TL/src/wlan_qct_tli.h
+++ b/CORE/TL/src/wlan_qct_tli.h
@@ -698,6 +698,7 @@
 #endif
   /* BD Rate for transmitting ARP packets */
   v_U8_t arpRate;
+  v_BOOL_t arpOnWQ5;
 }WLANTL_STAClientType;
 
 /*---------------------------------------------------------------------------