wlan: Add support for updating multicast transmit rate.
Add support for updating multicast rate.
CRs-fixed: 549461
Change-Id: If7342207d6e828f078268d8b51f57fbcdcd94a7c
diff --git a/CORE/MAC/inc/sirApi.h b/CORE/MAC/inc/sirApi.h
index 3f79202..245833a 100644
--- a/CORE/MAC/inc/sirApi.h
+++ b/CORE/MAC/inc/sirApi.h
@@ -4483,6 +4483,48 @@
tANI_U32 ucPatternIdBitmap;
} tSirDelPeriodicTxPtrn, *tpSirDelPeriodicTxPtrn;
+typedef struct sSirRateUpdateInd
+{
+ /* 0 implies RA, positive value implies fixed rate, -1 implies ignore this
+ * param.
+ */
+ tANI_S32 ucastDataRate;
+
+ /* TX flag to differentiate between HT20, HT40 etc */
+ tTxrateinfoflags ucastDataRateTxFlag;
+
+ /* BSSID - Optional. 00-00-00-00-00-00 implies apply to all BCAST STAs */
+ tSirMacAddr bssid;
+
+ /*
+ * 0 implies MCAST RA, positive value implies fixed rate,
+ * -1 implies ignore this param
+ */
+ tANI_S32 reliableMcastDataRate;//unit Mbpsx10
+
+ /* TX flag to differentiate between HT20, HT40 etc */
+ tTxrateinfoflags reliableMcastDataRateTxFlag;
+
+ /*
+ * MCAST(or BCAST) fixed data rate in 2.4 GHz, unit Mbpsx10,
+ * 0 implies ignore
+ */
+ tANI_U32 mcastDataRate24GHz;
+
+ /* TX flag to differentiate between HT20, HT40 etc */
+ tTxrateinfoflags mcastDataRate24GHzTxFlag;
+
+ /*
+ * MCAST(or BCAST) fixed data rate in 5 GHz,
+ * unit Mbpsx10, 0 implies ignore
+ */
+ tANI_U32 mcastDataRate5GHz;
+
+ /* TX flag to differentiate between HT20, HT40 etc */
+ tTxrateinfoflags mcastDataRate5GHzTxFlag;
+
+} tSirRateUpdateInd, *tpSirRateUpdateInd;
+
#ifdef FEATURE_WLAN_BATCH_SCAN
// Set batch scan resposne from FW
typedef struct
diff --git a/CORE/MAC/src/include/sirParams.h b/CORE/MAC/src/include/sirParams.h
index 23ca294..f533fd7 100644
--- a/CORE/MAC/src/include/sirParams.h
+++ b/CORE/MAC/src/include/sirParams.h
@@ -611,6 +611,7 @@
#define SIR_HAL_TRIGGER_BATCH_SCAN_RESULT_IND (SIR_HAL_ITC_MSG_TYPES_BEGIN + 213)
#endif
+#define SIR_HAL_RATE_UPDATE_IND (SIR_HAL_ITC_MSG_TYPES_BEGIN + 217)
#define SIR_HAL_MSG_TYPES_END (SIR_HAL_ITC_MSG_TYPES_BEGIN + 0xFF)
// CFG message types
diff --git a/CORE/SME/inc/sme_Api.h b/CORE/SME/inc/sme_Api.h
index 24d2eb7..f98cc3c 100644
--- a/CORE/SME/inc/sme_Api.h
+++ b/CORE/SME/inc/sme_Api.h
@@ -3027,6 +3027,15 @@
void sme_enable_disable_split_scan (tHalHandle hHal, tANI_U8 nNumStaChan,
tANI_U8 nNumP2PChan);
+/* ---------------------------------------------------------------------------
+ \fn sme_SendRateUpdateInd
+ \brief API to Update rate
+ \param hHal - The handle returned by macOpen
+ \param rateUpdateParams - Pointer to rate update params
+ \return eHalStatus
+ ---------------------------------------------------------------------------*/
+eHalStatus sme_SendRateUpdateInd(tHalHandle hHal, tSirRateUpdateInd *rateUpdateParams);
+
/*
* sme API to trigger fast BSS roam to a given BSSID independent of RSSI
* triggers
diff --git a/CORE/SME/src/sme_common/sme_Api.c b/CORE/SME/src/sme_common/sme_Api.c
index ed37bef..a058c65 100644
--- a/CORE/SME/src/sme_common/sme_Api.c
+++ b/CORE/SME/src/sme_common/sme_Api.c
@@ -9382,6 +9382,41 @@
}
/* ---------------------------------------------------------------------------
+ \fn sme_SendRateUpdateInd
+ \brief API to Update rate
+ \param hHal - The handle returned by macOpen
+ \param rateUpdateParams - Pointer to rate update params
+ \return eHalStatus
+ ---------------------------------------------------------------------------*/
+eHalStatus sme_SendRateUpdateInd(tHalHandle hHal, tSirRateUpdateInd *rateUpdateParams)
+{
+ tpAniSirGlobal pMac = PMAC_STRUCT(hHal);
+ eHalStatus status;
+ vos_msg_t msg;
+
+ if (eHAL_STATUS_SUCCESS == (status = sme_AcquireGlobalLock(&pMac->sme)))
+ {
+ msg.type = WDA_RATE_UPDATE_IND;
+ msg.bodyptr = rateUpdateParams;
+
+ if (!VOS_IS_STATUS_SUCCESS(vos_mq_post_message(VOS_MODULE_ID_WDA, &msg)))
+ {
+ VOS_TRACE( VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR,"%s: Not able "
+ "to post WDA_SET_RMC_RATE_IND to WDA!",
+ __func__);
+
+ sme_ReleaseGlobalLock(&pMac->sme);
+ return eHAL_STATUS_FAILURE;
+ }
+
+ sme_ReleaseGlobalLock(&pMac->sme);
+ return eHAL_STATUS_SUCCESS;
+ }
+
+ return status;
+}
+
+/* ---------------------------------------------------------------------------
\fn sme_TriggerBatchScanResultInd
\brief API to trigger batch scan result indications from FW
\param hHal - The handle returned by macOpen.
diff --git a/CORE/WDA/inc/wlan_qct_wda.h b/CORE/WDA/inc/wlan_qct_wda.h
index dde480e..5224d9c 100644
--- a/CORE/WDA/inc/wlan_qct_wda.h
+++ b/CORE/WDA/inc/wlan_qct_wda.h
@@ -1112,6 +1112,8 @@
#define WDA_STOP_BATCH_SCAN_IND SIR_HAL_STOP_BATCH_SCAN_IND
#define WDA_TRIGGER_BATCH_SCAN_RESULT_IND SIR_HAL_TRIGGER_BATCH_SCAN_RESULT_IND
#endif
+#define WDA_RATE_UPDATE_IND SIR_HAL_RATE_UPDATE_IND
+
tSirRetStatus wdaPostCtrlMsg(tpAniSirGlobal pMac, tSirMsgQ *pMsg);
diff --git a/CORE/WDA/src/wlan_qct_wda.c b/CORE/WDA/src/wlan_qct_wda.c
index ab1354b..14fec05 100644
--- a/CORE/WDA/src/wlan_qct_wda.c
+++ b/CORE/WDA/src/wlan_qct_wda.c
@@ -10811,6 +10811,55 @@
#endif
/*
+ * FUNCTION: WDA_ProcessRateUpdateInd
+ *
+ */
+VOS_STATUS WDA_ProcessRateUpdateInd(tWDA_CbContext *pWDA,
+ tSirRateUpdateInd *pRateUpdateParams)
+{
+ WDI_Status wdiStatus;
+ WDI_RateUpdateIndParams rateUpdateParams;
+
+ vos_mem_copy(rateUpdateParams.bssid,
+ pRateUpdateParams->bssid, sizeof(tSirMacAddr));
+
+ rateUpdateParams.ucastDataRateTxFlag =
+ pRateUpdateParams->ucastDataRateTxFlag;
+ rateUpdateParams.reliableMcastDataRateTxFlag =
+ pRateUpdateParams->reliableMcastDataRateTxFlag;
+ rateUpdateParams.mcastDataRate24GHzTxFlag =
+ pRateUpdateParams->mcastDataRate24GHzTxFlag;
+ rateUpdateParams.mcastDataRate5GHzTxFlag =
+ pRateUpdateParams->mcastDataRate5GHzTxFlag;
+
+ rateUpdateParams.ucastDataRate = pRateUpdateParams->ucastDataRate;
+ rateUpdateParams.reliableMcastDataRate =
+ pRateUpdateParams->reliableMcastDataRate;
+ rateUpdateParams.mcastDataRate24GHz = pRateUpdateParams->mcastDataRate24GHz;
+ rateUpdateParams.mcastDataRate5GHz = pRateUpdateParams->mcastDataRate5GHz;
+
+ rateUpdateParams.wdiReqStatusCB = WDA_WdiIndicationCallback;
+ rateUpdateParams.pUserData = pWDA;
+
+ wdiStatus = WDI_RateUpdateInd(&rateUpdateParams);
+
+ if (WDI_STATUS_PENDING == wdiStatus)
+ {
+ VOS_TRACE(VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_INFO,
+ "Pending received for %s:%d", __func__, __LINE__ );
+ }
+ else if (WDI_STATUS_SUCCESS_SYNC != wdiStatus)
+ {
+ VOS_TRACE(VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ERROR,
+ "Failure in %s:%d", __func__, __LINE__ );
+ }
+
+ vos_mem_free(pRateUpdateParams);
+
+ return CONVERT_WDI2VOS_STATUS(wdiStatus);
+}
+
+/*
* -------------------------------------------------------------------------
* DATA interface with WDI for Mgmt Frames
* -------------------------------------------------------------------------
@@ -11838,6 +11887,11 @@
(tSirSetBatchScanReq *)pMsg->bodyptr);
break;
}
+ case WDA_RATE_UPDATE_IND:
+ {
+ WDA_ProcessRateUpdateInd(pWDA, (tSirRateUpdateInd *)pMsg->bodyptr);
+ break;
+ }
case WDA_TRIGGER_BATCH_SCAN_RESULT_IND:
{
WDA_ProcessTriggerBatchScanResultInd(pWDA,
diff --git a/CORE/WDI/CP/inc/wlan_qct_wdi.h b/CORE/WDI/CP/inc/wlan_qct_wdi.h
index 12ba8f9..3d34bf4 100644
--- a/CORE/WDI/CP/inc/wlan_qct_wdi.h
+++ b/CORE/WDI/CP/inc/wlan_qct_wdi.h
@@ -732,6 +732,80 @@
}WDI_IbssPeerInactivityIndType;
/*---------------------------------------------------------------------------
+ WDI_TxRateFlags
+-----------------------------------------------------------------------------*/
+typedef enum
+{
+ WDI_TX_RATE_LEGACY = 0x1, /* Legacy rates */
+ WDI_TX_RATE_HT20 = 0x2, /* HT20 rates */
+ WDI_TX_RATE_HT40 = 0x4, /* HT40 rates */
+ WDI_TX_RATE_SGI = 0x8, /* Rate with Short guard interval */
+ WDI_TX_RATE_LGI = 0x10, /* Rate with Long guard interval */
+ WDI_TX_RATE_VHT20 = 0x20, /* VHT 20 rates */
+ WDI_TX_RATE_VHT40 = 0x40, /* VHT 20 rates */
+ WDI_TX_RATE_VHT80 = 0x80, /* VHT 20 rates */
+ WDI_TX_RATE_VIRT = 0x100, /* Virtual Rate */
+} WDI_TxRateFlags;
+
+/*---------------------------------------------------------------------------
+ WDI_RateUpdateIndParams
+-----------------------------------------------------------------------------*/
+typedef struct
+{
+ /* 0 implies RA, positive value implies fixed rate, -1 implies ignore this
+ * param ucastDataRate can be used to control RA behavior of unicast data to
+ */
+ wpt_int32 ucastDataRate;
+
+ /* TX flag to differentiate between HT20, HT40 etc */
+ WDI_TxRateFlags ucastDataRateTxFlag;
+
+ /* BSSID - Optional. 00-00-00-00-00-00 implies apply to all BCAST STAs */
+ wpt_macAddr bssid;
+
+ /*
+ * 0 implies MCAST RA, positive value implies fixed rate,
+ * -1 implies ignore this param
+ */
+ wpt_int32 reliableMcastDataRate; //unit Mbpsx10
+
+ /* TX flag to differentiate between HT20, HT40 etc */
+ WDI_TxRateFlags reliableMcastDataRateTxFlag;
+
+ /*
+ * MCAST(or BCAST) fixed data rate in 2.4 GHz, unit Mbpsx10,
+ * 0 implies ignore
+ */
+ wpt_uint32 mcastDataRate24GHz;
+
+ /* TX flag to differentiate between HT20, HT40 etc */
+ WDI_TxRateFlags mcastDataRate24GHzTxFlag;
+
+ /*
+ * MCAST(or BCAST) fixed data rate in 5 GHz,
+ * unit Mbpsx10, 0 implies ignore
+ */
+ wpt_uint32 mcastDataRate5GHz;
+
+ /* TX flag to differentiate between HT20, HT40 etc */
+ WDI_TxRateFlags mcastDataRate5GHzTxFlag;
+
+ /*
+ * Request status callback offered by UMAC - it is called if the current
+ * req has returned PENDING as status; it delivers the status of sending
+ * the message over the BUS
+ */
+ WDI_ReqStatusCb wdiReqStatusCB;
+
+ /*
+ * The user data passed in by UMAC, it will be sent back when the above
+ * function pointer will be called
+ */
+ void *pUserData;
+
+} WDI_RateUpdateIndParams;
+
+/*---------------------------------------------------------------------------
WDI_LowLevelIndType
Inidcation type and information about the indication being carried
over
@@ -9838,6 +9912,26 @@
WDI_DHCPInd *wdiDHCPInd
);
+/**
+ @brief WDI_RateUpdateInd will be called when the upper MAC
+ requests the device to update rates.
+
+ In state BUSY this request will be queued. Request won't
+ be allowed in any other state.
+
+
+ @param wdiRateUpdateIndParams
+
+
+ @see WDI_Start
+ @return Result of the function call
+*/
+WDI_Status
+WDI_RateUpdateInd
+(
+ WDI_RateUpdateIndParams *wdiRateUpdateIndParams
+);
+
#ifdef WLAN_FEATURE_GTK_OFFLOAD
/**
@brief WDI_GTKOffloadReq will be called when the upper MAC
diff --git a/CORE/WDI/CP/inc/wlan_qct_wdi_i.h b/CORE/WDI/CP/inc/wlan_qct_wdi_i.h
index 5b3ff5b..2b9d06a 100644
--- a/CORE/WDI/CP/inc/wlan_qct_wdi_i.h
+++ b/CORE/WDI/CP/inc/wlan_qct_wdi_i.h
@@ -480,6 +480,9 @@
/* Send a delete periodic Tx pattern indicationto HAL */
WDI_DEL_PERIODIC_TX_PATTERN_IND,
+ /* Send Rate Update Indication */
+ WDI_RATE_UPDATE_IND,
+
/*Keep adding the indications to the max request
such that we keep them sepparate */
@@ -5523,6 +5526,22 @@
);
#endif /* FEATURE_WLAN_LPHB */
+/**
+ @brief Process Rate Update Indication and post it to HAL
+
+ @param pWDICtx: pointer to the WLAN DAL context
+ pEventData: pointer to the event information structure
+
+ @see
+ @return Result of the function call
+*/
+WDI_Status
+WDI_ProcessRateUpdateInd
+(
+ WDI_ControlBlockType* pWDICtx,
+ WDI_EventInfoType* pEventData
+);
+
#ifdef FEATURE_WLAN_BATCH_SCAN
/**
@brief WDI_ProcessSetBatchScanRsp -
diff --git a/CORE/WDI/CP/src/wlan_qct_wdi.c b/CORE/WDI/CP/src/wlan_qct_wdi.c
index 04a4ff9..bbe4b13 100644
--- a/CORE/WDI/CP/src/wlan_qct_wdi.c
+++ b/CORE/WDI/CP/src/wlan_qct_wdi.c
@@ -422,6 +422,7 @@
NULL,
NULL,
#endif /* FEATURE_WLAN_BATCH_SCAN */
+ WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
};
@@ -22676,6 +22677,8 @@
case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
#endif
+ case WDI_RATE_UPDATE_IND:
+ return WLAN_HAL_RATE_UPDATE_IND;
default:
return WLAN_HAL_MSG_MAX;
@@ -28398,8 +28401,147 @@
} /*WDI_ProcessIbssPeerInactivityInd*/
-#ifdef FEATURE_WLAN_BATCH_SCAN
+/**
+*@brief WDI_RateUpdateInd will be called when the upper MAC
+ requests the device to set rates.
+
+ @param wdiRateUpdateIndParams:
+
+
+ @see
+ @return Result of the function call
+*/
+WDI_Status
+WDI_RateUpdateInd
+(
+ WDI_RateUpdateIndParams *wdiRateUpdateIndParams
+)
+{
+ 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_RATE_UPDATE_IND;
+ wdiEventData.pEventData = wdiRateUpdateIndParams;
+ wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
+ wdiEventData.pCBfnc = NULL;
+ wdiEventData.pUserData = NULL;
+
+ return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
+
+}/* WDI_RateUpdateInd */
+
+/**
+ @brief Process Rate Update Indication and post it to HAL
+
+ @param pWDICtx: pointer to the WLAN DAL context
+ pEventData: pointer to the event information structure
+
+ @see
+ @return Result of the function call
+*/
+WDI_Status
+WDI_ProcessRateUpdateInd
+(
+ WDI_ControlBlockType* pWDICtx,
+ WDI_EventInfoType* pEventData
+)
+{
+ wpt_uint8* pSendBuffer = NULL;
+ wpt_uint16 usDataOffset = 0;
+ wpt_uint16 usSendSize = 0;
+ WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
+ tHalRateUpdateInd *pRateUpdateInd;
+ WDI_Status wdiStatus;
+
+ /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+
+ 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;
+ }
+ pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
+ /*-----------------------------------------------------------------------
+ Get message buffer
+ -----------------------------------------------------------------------*/
+
+ if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
+ WDI_RATE_UPDATE_IND,
+ sizeof(tHalRateUpdateParams),
+ &pSendBuffer, &usDataOffset, &usSendSize))||
+ ( usSendSize < (usDataOffset +
+ sizeof(tHalRateUpdateParams) )))
+ {
+ WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
+ "Unable to get send buffer in Rate Update Indication %p ",
+ pEventData);
+ WDI_ASSERT(0);
+ return WDI_STATUS_E_FAILURE;
+ }
+
+ pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
+
+ /* Copy the bssid */
+ wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
+ pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
+
+ /* Copy the tx flags */
+ pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
+ pwdiRateUpdateInd->ucastDataRateTxFlag;
+ pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
+ pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
+ pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
+ pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
+ pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
+ pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
+
+ /* Copy the tx rates */
+ pRateUpdateInd->halRateUpdateParams.ucastDataRate =
+ pwdiRateUpdateInd->ucastDataRate;
+ pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
+ pwdiRateUpdateInd->reliableMcastDataRate;
+ pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
+ pwdiRateUpdateInd->mcastDataRate24GHz;
+ pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
+ pwdiRateUpdateInd->mcastDataRate5GHz;
+
+ /*-------------------------------------------------------------------------
+ Send Rate Update Indication to HAL
+ -------------------------------------------------------------------------*/
+ pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
+ pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
+
+ wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
+
+ return (wdiStatus != WDI_STATUS_SUCCESS) ?
+ wdiStatus : WDI_STATUS_SUCCESS_SYNC;
+
+} /* WDI_ProcessRateUpdateInd */
+
+#ifdef FEATURE_WLAN_BATCH_SCAN
/**
@brief Process stop batch indication from WDA
diff --git a/riva/inc/wlan_hal_msg.h b/riva/inc/wlan_hal_msg.h
index 64fe762..4973286 100644
--- a/riva/inc/wlan_hal_msg.h
+++ b/riva/inc/wlan_hal_msg.h
@@ -425,6 +425,8 @@
WLAN_HAL_GET_IBSS_PEER_INFO_REQ = 227,
WLAN_HAL_GET_IBSS_PEER_INFO_RSP = 228,
+ WLAN_HAL_RATE_UPDATE_IND = 229,
+
WLAN_HAL_MSG_MAX = WLAN_HAL_MSG_TYPE_MAX_ENUM_SIZE
}tHalHostMsgType;
@@ -2559,8 +2561,13 @@
eHAL_TX_RATE_HT20 = 0x2, /* HT20 rates */
eHAL_TX_RATE_HT40 = 0x4, /* HT40 rates */
eHAL_TX_RATE_SGI = 0x8, /* Rate with Short guard interval */
- eHAL_TX_RATE_LGI = 0x10 /* Rate with Long guard interval */
-} tTxrateinfoflags;
+ eHAL_TX_RATE_LGI = 0x10, /* Rate with Long guard interval */
+ eHAL_TX_RATE_VHT20 = 0x20, /* VHT 20 rates */
+ eHAL_TX_RATE_VHT40 = 0x40, /* VHT 20 rates */
+ eHAL_TX_RATE_VHT80 = 0x80, /* VHT 20 rates */
+ eHAL_TX_RATE_VIRT = 0x100, /* Virtual Rate */
+ eHAL_TX_RATE_MAX = WLAN_HAL_MAX_ENUM_SIZE
+} tTxrateinfoflags, tTxRateInfoFlags;
typedef PACKED_PRE struct PACKED_POST
@@ -6851,6 +6858,47 @@
} tWlanIpForwardTableUpdateInd;
/*---------------------------------------------------------------------------
+ WLAN_HAL_RATE_UPDATE_IND
+ *-------------------------------------------------------------------------*/
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ /* 0 implies UCAST RA, positive value implies fixed rate, -1 implies ignore this param */
+ tANI_S32 ucastDataRate; //unit Mbpsx10
+
+ /* TX flag to differentiate between HT20, HT40 etc */
+ tTxRateInfoFlags ucastDataRateTxFlag;
+
+ /* BSSID - Optional. 00-00-00-00-00-00 implies apply to all BCAST STAs */
+ tSirMacAddr bssid;
+
+ /* 0 implies MCAST RA, positive value implies fixed rate, -1 implies ignore */
+ tANI_S32 reliableMcastDataRate; //unit Mbpsx10
+
+ /* TX flag to differentiate between HT20, HT40 etc */
+ tTxRateInfoFlags reliableMcastDataRateTxFlag;
+
+ /* Default (non-reliable) MCAST(or BCAST) fixed rate in 2.4 GHz, 0 implies ignore */
+ tANI_U32 mcastDataRate24GHz; //unit Mbpsx10
+
+ /* TX flag to differentiate between HT20, HT40 etc */
+ tTxRateInfoFlags mcastDataRate24GHzTxFlag;
+
+ /* Default (non-reliable) MCAST(or BCAST) fixed rate in 5 GHz, 0 implies ignore */
+ tANI_U32 mcastDataRate5GHz; //unit Mbpsx10
+
+ /* TX flag to differentiate between HT20, HT40 etc */
+ tTxRateInfoFlags mcastDataRate5GHzTxFlag;
+
+} tHalRateUpdateParams, *tpHalRateUpdateParams;
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tHalMsgHeader header;
+ tHalRateUpdateParams halRateUpdateParams;
+} tHalRateUpdateInd, * tpHalRateUpdateInd;
+
+/*---------------------------------------------------------------------------
*-------------------------------------------------------------------------*/
#if defined(__ANI_COMPILER_PRAGMA_PACK_STACK)