wlan: IOCTL support to set RTS-CTS in HT/VHT.
Adds IOCTL support to set RTS-CTS in HT/VHT dynamically.
CRs-Fixed: 836683
Change-Id: I78d6b751dbe23ec1ea1a4c2f33c676457355413e
diff --git a/CORE/WDI/CP/src/wlan_qct_wdi.c b/CORE/WDI/CP/src/wlan_qct_wdi.c
index 484bde7..404c69c 100644
--- a/CORE/WDI/CP/src/wlan_qct_wdi.c
+++ b/CORE/WDI/CP/src/wlan_qct_wdi.c
@@ -508,6 +508,7 @@
#else
NULL,
#endif
+ WDI_ProcessSetRtsCtsHtvhtInd, /* WDI_SET_RTS_CTS_HTVHT_IND */
};
@@ -1168,6 +1169,7 @@
CASE_RETURN_STRING( WDI_MGMT_LOGGING_INIT_REQ);
CASE_RETURN_STRING( WDI_GET_FRAME_LOG_REQ);
CASE_RETURN_STRING( WDI_NAN_REQUEST );
+ CASE_RETURN_STRING( WDI_SET_RTS_CTS_HTVHT_IND );
default:
return "Unknown WDI MessageId";
}
@@ -24132,6 +24134,8 @@
return WLAN_HAL_GET_FRAME_LOG_REQ;
case WDI_NAN_REQUEST:
return WLAN_HAL_NAN_REQ;
+ case WDI_SET_RTS_CTS_HTVHT_IND:
+ return WLAN_HAL_SET_RTS_CTS_HTVHT_IND;
default:
return WLAN_HAL_MSG_MAX;
@@ -34532,3 +34536,94 @@
return WDI_STATUS_SUCCESS;
}/*WDI_ProcessNanEvent*/
+WDI_Status
+WDI_ProcessSetRtsCtsHtvhtInd
+(
+ WDI_ControlBlockType* pWDICtx,
+ WDI_EventInfoType* pEventData
+)
+{
+ wpt_uint8* pSendBuffer = NULL;
+ wpt_uint16 usDataOffset = 0;
+ wpt_uint16 usSendSize = 0;
+ wpt_uint32 *rtsCtsVal;
+ tHalRtsCtsHtvhtIndParams *rtsCtsHtvhtIndParams;
+ WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
+
+
+ /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+
+ WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
+ "%s", __func__);
+
+ /*-------------------------------------------------------------------------
+ Sanity check
+ -------------------------------------------------------------------------*/
+ if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
+ {
+ WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
+ "%s: Invalid parameters", __func__);
+ WDI_ASSERT(0);
+ return WDI_STATUS_E_FAILURE;
+ }
+ rtsCtsVal = (wpt_uint32*)pEventData->pEventData;
+ /*-----------------------------------------------------------------------
+ Get message buffer
+ -----------------------------------------------------------------------*/
+
+ if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
+ WDI_SET_RTS_CTS_HTVHT_IND,
+ sizeof(tHalRtsCtsHtvhtIndParams),
+ &pSendBuffer, &usDataOffset, &usSendSize))||
+ ( usSendSize < (usDataOffset + sizeof(tHalRtsCtsHtvhtIndParams) )))
+ {
+ WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
+ "Unable to get send buffer in RTS CTS ind %p ",
+ pEventData);
+ WDI_ASSERT(0);
+ return WDI_STATUS_E_FAILURE;
+ }
+ rtsCtsHtvhtIndParams =
+ (tHalRtsCtsHtvhtIndParams*)(pSendBuffer + usDataOffset);
+ rtsCtsHtvhtIndParams->rtsCtsValue = *rtsCtsVal;
+
+ pWDICtx->pReqStatusUserData = NULL;
+ pWDICtx->pfncRspCB = NULL;
+ /*-------------------------------------------------------------------------
+ Send SET_RTS_CTS_HTVHT Indication to HAL
+ -------------------------------------------------------------------------*/
+ wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
+ return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
+}
+
+WDI_Status
+WDI_SetRtsCtsHTVhtInd
+(
+ wpt_uint32 rtsCtsVal
+)
+{
+ WDI_EventInfoType wdiEventData;
+ /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+
+ /*------------------------------------------------------------------------
+ Sanity Check
+ ------------------------------------------------------------------------*/
+ if ( eWLAN_PAL_FALSE == gWDIInitialized )
+ {
+ WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
+ "WDI API call before module is initialized - Fail request");
+ return WDI_STATUS_E_NOT_ALLOWED;
+ }
+
+ /*------------------------------------------------------------------------
+ Fill in Event data and post to the Main FSM
+ ------------------------------------------------------------------------*/
+ wdiEventData.wdiRequest = WDI_SET_RTS_CTS_HTVHT_IND;
+ wdiEventData.pEventData = (void *) &rtsCtsVal;
+ wdiEventData.uEventDataSize = sizeof(wpt_uint32);
+ wdiEventData.pCBfnc = NULL;
+ wdiEventData.pUserData = NULL;
+
+ return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
+
+}/* WDI_SetRtsCtsHTVhtInd */