mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-09 13:49:24 -04:00
qcacld-3.0: Featurize RMC
Featurize RMC and disable for Genoa Change-Id: I66b17622c89dd5736f152c4cd9506ce2706b4604 CRs-Fixed: 2304269
This commit is contained in:
parent
39967f0e36
commit
ee1735c905
9 changed files with 234 additions and 199 deletions
1
Kbuild
1
Kbuild
|
|
@ -1941,6 +1941,7 @@ cppflags-$(CONFIG_FEATURE_STATS_EXT) += -DWLAN_FEATURE_STATS_EXT
|
|||
cppflags-$(CONFIG_QCACLD_FEATURE_NAN) += -DWLAN_FEATURE_NAN
|
||||
cppflags-$(CONFIG_QCA_IBSS_SUPPORT) += -DQCA_IBSS_SUPPORT
|
||||
cppflags-$(CONFIG_WLAN_SYSFS) += -DWLAN_SYSFS
|
||||
cppflags-$(CONFIG_FEATURE_WLAN_RMC) += -DFEATURE_WLAN_RMC
|
||||
|
||||
#Enable OL debug and wmi unified functions
|
||||
cppflags-$(CONFIG_ATH_PERF_PWR_OFFLOAD) += -DATH_PERF_PWR_OFFLOAD
|
||||
|
|
|
|||
|
|
@ -414,6 +414,7 @@ CONFIG_FEATURE_AP_MCC_CH_AVOIDANCE := y
|
|||
else
|
||||
CONFIG_QCOM_ESE := y
|
||||
CONFIG_QCA_IBSS_SUPPORT := y
|
||||
CONFIG_FEATURE_WLAN_RMC := y
|
||||
CONFIG_WLAN_OPEN_P2P_INTERFACE := y
|
||||
CONFIG_WLAN_ENABLE_SOCIAL_CHANNELS_5G_ONLY := y
|
||||
endif
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ CONFIG_FEATURE_STATS_EXT := n
|
|||
CONFIG_QCA_IBSS_SUPPORT := y
|
||||
|
||||
#required features
|
||||
CONFIG_FEATURE_WLAN_RMC := n
|
||||
CONFIG_QCACLD_WLAN_LFR2 := y
|
||||
CONFIG_QCACLD_WLAN_LFR3 := n
|
||||
CONFIG_QCOM_TDLS := y
|
||||
|
|
|
|||
|
|
@ -238,150 +238,6 @@ static int hdd_get_tsm_stats(struct hdd_adapter *adapter,
|
|||
}
|
||||
#endif /*FEATURE_WLAN_ESE */
|
||||
|
||||
/* Function header is left blank intentionally */
|
||||
static int hdd_parse_setrmcenable_command(uint8_t *pValue,
|
||||
uint8_t *pRmcEnable)
|
||||
{
|
||||
uint8_t *inPtr = pValue;
|
||||
int tempInt;
|
||||
int v = 0;
|
||||
char buf[32];
|
||||
*pRmcEnable = 0;
|
||||
|
||||
inPtr = strnchr(pValue, strlen(pValue), SPACE_ASCII_VALUE);
|
||||
|
||||
if (NULL == inPtr)
|
||||
return 0;
|
||||
else if (SPACE_ASCII_VALUE != *inPtr)
|
||||
return 0;
|
||||
|
||||
while ((SPACE_ASCII_VALUE == *inPtr) && ('\0' != *inPtr))
|
||||
inPtr++;
|
||||
|
||||
if ('\0' == *inPtr)
|
||||
return 0;
|
||||
|
||||
v = sscanf(inPtr, "%31s ", buf);
|
||||
if (1 != v)
|
||||
return -EINVAL;
|
||||
|
||||
v = kstrtos32(buf, 10, &tempInt);
|
||||
if (v < 0)
|
||||
return -EINVAL;
|
||||
|
||||
*pRmcEnable = tempInt;
|
||||
|
||||
hdd_debug("ucRmcEnable: %d", *pRmcEnable);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Function header is left blank intentionally */
|
||||
static int hdd_parse_setrmcactionperiod_command(uint8_t *pValue,
|
||||
uint32_t *pActionPeriod)
|
||||
{
|
||||
uint8_t *inPtr = pValue;
|
||||
int tempInt;
|
||||
int v = 0;
|
||||
char buf[32];
|
||||
*pActionPeriod = 0;
|
||||
|
||||
inPtr = strnchr(pValue, strlen(pValue), SPACE_ASCII_VALUE);
|
||||
|
||||
if (NULL == inPtr)
|
||||
return -EINVAL;
|
||||
else if (SPACE_ASCII_VALUE != *inPtr)
|
||||
return -EINVAL;
|
||||
|
||||
while ((SPACE_ASCII_VALUE == *inPtr) && ('\0' != *inPtr))
|
||||
inPtr++;
|
||||
|
||||
if ('\0' == *inPtr)
|
||||
return 0;
|
||||
|
||||
v = sscanf(inPtr, "%31s ", buf);
|
||||
if (1 != v)
|
||||
return -EINVAL;
|
||||
|
||||
v = kstrtos32(buf, 10, &tempInt);
|
||||
if (v < 0)
|
||||
return -EINVAL;
|
||||
|
||||
if ((tempInt < WNI_CFG_RMC_ACTION_PERIOD_FREQUENCY_STAMIN) ||
|
||||
(tempInt > WNI_CFG_RMC_ACTION_PERIOD_FREQUENCY_STAMAX))
|
||||
return -EINVAL;
|
||||
|
||||
*pActionPeriod = tempInt;
|
||||
|
||||
hdd_debug("uActionPeriod: %d", *pActionPeriod);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Function header is left blank intentionally */
|
||||
static int hdd_parse_setrmcrate_command(uint8_t *pValue,
|
||||
uint32_t *pRate,
|
||||
enum tx_rate_info *pTxFlags)
|
||||
{
|
||||
uint8_t *inPtr = pValue;
|
||||
int tempInt;
|
||||
int v = 0;
|
||||
char buf[32];
|
||||
*pRate = 0;
|
||||
*pTxFlags = 0;
|
||||
|
||||
inPtr = strnchr(pValue, strlen(pValue), SPACE_ASCII_VALUE);
|
||||
|
||||
if (NULL == inPtr)
|
||||
return -EINVAL;
|
||||
else if (SPACE_ASCII_VALUE != *inPtr)
|
||||
return -EINVAL;
|
||||
|
||||
while ((SPACE_ASCII_VALUE == *inPtr) && ('\0' != *inPtr))
|
||||
inPtr++;
|
||||
|
||||
if ('\0' == *inPtr)
|
||||
return 0;
|
||||
|
||||
v = sscanf(inPtr, "%31s ", buf);
|
||||
if (1 != v)
|
||||
return -EINVAL;
|
||||
|
||||
v = kstrtos32(buf, 10, &tempInt);
|
||||
if (v < 0)
|
||||
return -EINVAL;
|
||||
|
||||
switch (tempInt) {
|
||||
default:
|
||||
hdd_warn("Unsupported rate: %d", tempInt);
|
||||
return -EINVAL;
|
||||
case 0:
|
||||
case 6:
|
||||
case 9:
|
||||
case 12:
|
||||
case 18:
|
||||
case 24:
|
||||
case 36:
|
||||
case 48:
|
||||
case 54:
|
||||
*pTxFlags = TX_RATE_LEGACY;
|
||||
*pRate = tempInt * 10;
|
||||
break;
|
||||
case 65:
|
||||
*pTxFlags = TX_RATE_HT20;
|
||||
*pRate = tempInt * 10;
|
||||
break;
|
||||
case 72:
|
||||
*pTxFlags = TX_RATE_HT20 | TX_RATE_SGI;
|
||||
*pRate = 722;
|
||||
break;
|
||||
}
|
||||
|
||||
hdd_debug("Rate: %d", *pRate);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* hdd_get_ibss_peer_info_cb() - IBSS peer Info request callback
|
||||
* @UserData: Adapter private data
|
||||
|
|
@ -5012,6 +4868,151 @@ exit:
|
|||
return ret;
|
||||
}
|
||||
|
||||
#ifdef FEATURE_WLAN_RMC
|
||||
/* Function header is left blank intentionally */
|
||||
static int hdd_parse_setrmcenable_command(uint8_t *pValue,
|
||||
uint8_t *pRmcEnable)
|
||||
{
|
||||
uint8_t *inPtr = pValue;
|
||||
int tempInt;
|
||||
int v = 0;
|
||||
char buf[32];
|
||||
*pRmcEnable = 0;
|
||||
|
||||
inPtr = strnchr(pValue, strlen(pValue), SPACE_ASCII_VALUE);
|
||||
|
||||
if (NULL == inPtr)
|
||||
return 0;
|
||||
else if (SPACE_ASCII_VALUE != *inPtr)
|
||||
return 0;
|
||||
|
||||
while ((SPACE_ASCII_VALUE == *inPtr) && ('\0' != *inPtr))
|
||||
inPtr++;
|
||||
|
||||
if ('\0' == *inPtr)
|
||||
return 0;
|
||||
|
||||
v = sscanf(inPtr, "%31s ", buf);
|
||||
if (1 != v)
|
||||
return -EINVAL;
|
||||
|
||||
v = kstrtos32(buf, 10, &tempInt);
|
||||
if (v < 0)
|
||||
return -EINVAL;
|
||||
|
||||
*pRmcEnable = tempInt;
|
||||
|
||||
hdd_debug("ucRmcEnable: %d", *pRmcEnable);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Function header is left blank intentionally */
|
||||
static int hdd_parse_setrmcactionperiod_command(uint8_t *pValue,
|
||||
uint32_t *pActionPeriod)
|
||||
{
|
||||
uint8_t *inPtr = pValue;
|
||||
int tempInt;
|
||||
int v = 0;
|
||||
char buf[32];
|
||||
*pActionPeriod = 0;
|
||||
|
||||
inPtr = strnchr(pValue, strlen(pValue), SPACE_ASCII_VALUE);
|
||||
|
||||
if (NULL == inPtr)
|
||||
return -EINVAL;
|
||||
else if (SPACE_ASCII_VALUE != *inPtr)
|
||||
return -EINVAL;
|
||||
|
||||
while ((SPACE_ASCII_VALUE == *inPtr) && ('\0' != *inPtr))
|
||||
inPtr++;
|
||||
|
||||
if ('\0' == *inPtr)
|
||||
return 0;
|
||||
|
||||
v = sscanf(inPtr, "%31s ", buf);
|
||||
if (1 != v)
|
||||
return -EINVAL;
|
||||
|
||||
v = kstrtos32(buf, 10, &tempInt);
|
||||
if (v < 0)
|
||||
return -EINVAL;
|
||||
|
||||
if ((tempInt < WNI_CFG_RMC_ACTION_PERIOD_FREQUENCY_STAMIN) ||
|
||||
(tempInt > WNI_CFG_RMC_ACTION_PERIOD_FREQUENCY_STAMAX))
|
||||
return -EINVAL;
|
||||
|
||||
*pActionPeriod = tempInt;
|
||||
|
||||
hdd_debug("uActionPeriod: %d", *pActionPeriod);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Function header is left blank intentionally */
|
||||
static int hdd_parse_setrmcrate_command(uint8_t *pValue,
|
||||
uint32_t *pRate,
|
||||
enum tx_rate_info *pTxFlags)
|
||||
{
|
||||
uint8_t *inPtr = pValue;
|
||||
int tempInt;
|
||||
int v = 0;
|
||||
char buf[32];
|
||||
*pRate = 0;
|
||||
*pTxFlags = 0;
|
||||
|
||||
inPtr = strnchr(pValue, strlen(pValue), SPACE_ASCII_VALUE);
|
||||
|
||||
if (NULL == inPtr)
|
||||
return -EINVAL;
|
||||
else if (SPACE_ASCII_VALUE != *inPtr)
|
||||
return -EINVAL;
|
||||
|
||||
while ((SPACE_ASCII_VALUE == *inPtr) && ('\0' != *inPtr))
|
||||
inPtr++;
|
||||
|
||||
if ('\0' == *inPtr)
|
||||
return 0;
|
||||
|
||||
v = sscanf(inPtr, "%31s ", buf);
|
||||
if (1 != v)
|
||||
return -EINVAL;
|
||||
|
||||
v = kstrtos32(buf, 10, &tempInt);
|
||||
if (v < 0)
|
||||
return -EINVAL;
|
||||
|
||||
switch (tempInt) {
|
||||
default:
|
||||
hdd_warn("Unsupported rate: %d", tempInt);
|
||||
return -EINVAL;
|
||||
case 0:
|
||||
case 6:
|
||||
case 9:
|
||||
case 12:
|
||||
case 18:
|
||||
case 24:
|
||||
case 36:
|
||||
case 48:
|
||||
case 54:
|
||||
*pTxFlags = TX_RATE_LEGACY;
|
||||
*pRate = tempInt * 10;
|
||||
break;
|
||||
case 65:
|
||||
*pTxFlags = TX_RATE_HT20;
|
||||
*pRate = tempInt * 10;
|
||||
break;
|
||||
case 72:
|
||||
*pTxFlags = TX_RATE_HT20 | TX_RATE_SGI;
|
||||
*pRate = 722;
|
||||
break;
|
||||
}
|
||||
|
||||
hdd_debug("Rate: %d", *pRate);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int drv_cmd_set_rmc_enable(struct hdd_adapter *adapter,
|
||||
struct hdd_context *hdd_ctx,
|
||||
uint8_t *command,
|
||||
|
|
@ -5118,6 +5119,60 @@ exit:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int drv_cmd_set_rmc_tx_rate(struct hdd_adapter *adapter,
|
||||
struct hdd_context *hdd_ctx,
|
||||
uint8_t *command,
|
||||
uint8_t command_len,
|
||||
struct hdd_priv_data *priv_data)
|
||||
{
|
||||
int ret = 0;
|
||||
uint8_t *value = command;
|
||||
uint32_t uRate = 0;
|
||||
enum tx_rate_info txFlags = 0;
|
||||
tSirRateUpdateInd rateUpdateParams = {0};
|
||||
int status;
|
||||
struct hdd_config *pConfig = hdd_ctx->config;
|
||||
|
||||
if ((QDF_IBSS_MODE != adapter->device_mode) &&
|
||||
(QDF_SAP_MODE != adapter->device_mode)) {
|
||||
hdd_err("Received SETRMCTXRATE cmd in invalid mode %s(%d)",
|
||||
hdd_device_mode_to_string(adapter->device_mode),
|
||||
adapter->device_mode);
|
||||
hdd_err("SETRMCTXRATE cmd is allowed only in IBSS/SOFTAP mode");
|
||||
ret = -EINVAL;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
status = hdd_parse_setrmcrate_command(value, &uRate, &txFlags);
|
||||
if (status) {
|
||||
hdd_err("Invalid SETRMCTXRATE command");
|
||||
ret = -EINVAL;
|
||||
goto exit;
|
||||
}
|
||||
hdd_debug("uRate %d", uRate);
|
||||
/* -1 implies ignore this param */
|
||||
rateUpdateParams.ucastDataRate = -1;
|
||||
|
||||
/*
|
||||
* Fill the user specifieed RMC rate param
|
||||
* and the derived tx flags.
|
||||
*/
|
||||
rateUpdateParams.nss = (pConfig->enable2x2 == 0) ? 0 : 1;
|
||||
rateUpdateParams.reliableMcastDataRate = uRate;
|
||||
rateUpdateParams.reliableMcastDataRateTxFlag = txFlags;
|
||||
rateUpdateParams.dev_mode = adapter->device_mode;
|
||||
rateUpdateParams.bcastDataRate = -1;
|
||||
memcpy(rateUpdateParams.bssid.bytes,
|
||||
adapter->mac_addr.bytes,
|
||||
sizeof(rateUpdateParams.bssid));
|
||||
status = sme_send_rate_update_ind(hdd_ctx->mac_handle,
|
||||
&rateUpdateParams);
|
||||
|
||||
exit:
|
||||
return ret;
|
||||
}
|
||||
#endif /* FEATURE_WLAN_RMC */
|
||||
|
||||
static int drv_cmd_get_ibss_peer_info_all(struct hdd_adapter *adapter,
|
||||
struct hdd_context *hdd_ctx,
|
||||
uint8_t *command,
|
||||
|
|
@ -5331,59 +5386,6 @@ exit:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int drv_cmd_set_rmc_tx_rate(struct hdd_adapter *adapter,
|
||||
struct hdd_context *hdd_ctx,
|
||||
uint8_t *command,
|
||||
uint8_t command_len,
|
||||
struct hdd_priv_data *priv_data)
|
||||
{
|
||||
int ret = 0;
|
||||
uint8_t *value = command;
|
||||
uint32_t uRate = 0;
|
||||
enum tx_rate_info txFlags = 0;
|
||||
tSirRateUpdateInd rateUpdateParams = {0};
|
||||
int status;
|
||||
struct hdd_config *pConfig = hdd_ctx->config;
|
||||
|
||||
if ((QDF_IBSS_MODE != adapter->device_mode) &&
|
||||
(QDF_SAP_MODE != adapter->device_mode)) {
|
||||
hdd_err("Received SETRMCTXRATE cmd in invalid mode %s(%d)",
|
||||
hdd_device_mode_to_string(adapter->device_mode),
|
||||
adapter->device_mode);
|
||||
hdd_err("SETRMCTXRATE cmd is allowed only in IBSS/SOFTAP mode");
|
||||
ret = -EINVAL;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
status = hdd_parse_setrmcrate_command(value, &uRate, &txFlags);
|
||||
if (status) {
|
||||
hdd_err("Invalid SETRMCTXRATE command");
|
||||
ret = -EINVAL;
|
||||
goto exit;
|
||||
}
|
||||
hdd_debug("uRate %d", uRate);
|
||||
/* -1 implies ignore this param */
|
||||
rateUpdateParams.ucastDataRate = -1;
|
||||
|
||||
/*
|
||||
* Fill the user specifieed RMC rate param
|
||||
* and the derived tx flags.
|
||||
*/
|
||||
rateUpdateParams.nss = (pConfig->enable2x2 == 0) ? 0 : 1;
|
||||
rateUpdateParams.reliableMcastDataRate = uRate;
|
||||
rateUpdateParams.reliableMcastDataRateTxFlag = txFlags;
|
||||
rateUpdateParams.dev_mode = adapter->device_mode;
|
||||
rateUpdateParams.bcastDataRate = -1;
|
||||
memcpy(rateUpdateParams.bssid.bytes,
|
||||
adapter->mac_addr.bytes,
|
||||
sizeof(rateUpdateParams.bssid));
|
||||
status = sme_send_rate_update_ind(hdd_ctx->mac_handle,
|
||||
&rateUpdateParams);
|
||||
|
||||
exit:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int drv_cmd_set_ibss_tx_fail_event(struct hdd_adapter *adapter,
|
||||
struct hdd_context *hdd_ctx,
|
||||
uint8_t *command,
|
||||
|
|
@ -7353,11 +7355,13 @@ static const struct hdd_drv_cmd hdd_drv_cmds[] = {
|
|||
{"SETDWELLTIME", drv_cmd_set_dwell_time, true},
|
||||
{"MIRACAST", drv_cmd_miracast, true},
|
||||
{"SETIBSSBEACONOUIDATA", drv_cmd_set_ibss_beacon_oui_data, true},
|
||||
#ifdef FEATURE_WLAN_RMC
|
||||
{"SETRMCENABLE", drv_cmd_set_rmc_enable, true},
|
||||
{"SETRMCACTIONPERIOD", drv_cmd_set_rmc_action_period, true},
|
||||
{"SETRMCTXRATE", drv_cmd_set_rmc_tx_rate, true},
|
||||
#endif
|
||||
{"GETIBSSPEERINFOALL", drv_cmd_get_ibss_peer_info_all, false},
|
||||
{"GETIBSSPEERINFO", drv_cmd_get_ibss_peer_info, true},
|
||||
{"SETRMCTXRATE", drv_cmd_set_rmc_tx_rate, true},
|
||||
{"SETIBSSTXFAILEVENT", drv_cmd_set_ibss_tx_fail_event, true},
|
||||
#ifdef FEATURE_WLAN_ESE
|
||||
{"SETCCXROAMSCANCHANNELS", drv_cmd_set_ccx_roam_scan_channels, true},
|
||||
|
|
|
|||
|
|
@ -527,9 +527,11 @@ uint8_t *mac_trace_get_wma_msg_string(uint16_t wma_msg)
|
|||
CASE_RETURN_STRING(WMA_IBSS_CESIUM_ENABLE_IND);
|
||||
CASE_RETURN_STRING(WMA_GET_IBSS_PEER_INFO_REQ);
|
||||
CASE_RETURN_STRING(WMA_TX_FAIL_MONITOR_IND);
|
||||
#ifdef FEATURE_WLAN_RMC
|
||||
CASE_RETURN_STRING(WMA_RMC_ENABLE_IND);
|
||||
CASE_RETURN_STRING(WMA_RMC_DISABLE_IND);
|
||||
CASE_RETURN_STRING(WMA_RMC_ACTION_PERIOD_IND);
|
||||
#endif
|
||||
CASE_RETURN_STRING(WMA_INIT_THERMAL_INFO_CMD);
|
||||
CASE_RETURN_STRING(WMA_SET_THERMAL_LEVEL);
|
||||
CASE_RETURN_STRING(WMA_SET_SAP_INTRABSS_DIS);
|
||||
|
|
|
|||
|
|
@ -806,9 +806,11 @@ QDF_STATUS sme_roam_del_pmkid_from_cache(tHalHandle hHal, uint8_t sessionId,
|
|||
tPmkidCacheInfo *pmksa, bool flush_cache);
|
||||
void sme_get_command_q_status(tHalHandle hHal);
|
||||
|
||||
#ifdef FEATURE_WLAN_RMC
|
||||
QDF_STATUS sme_enable_rmc(tHalHandle hHal, uint32_t sessionId);
|
||||
QDF_STATUS sme_disable_rmc(tHalHandle hHal, uint32_t sessionId);
|
||||
QDF_STATUS sme_send_rmc_action_period(tHalHandle hHal, uint32_t sessionId);
|
||||
#endif
|
||||
QDF_STATUS sme_request_ibss_peer_info(tHalHandle hHal, void *pUserData,
|
||||
pIbssPeerInfoCb peerInfoCbk, bool allPeerInfoReqd, uint8_t staIdx);
|
||||
QDF_STATUS sme_send_cesium_enable_ind(tHalHandle hHal, uint32_t sessionId);
|
||||
|
|
|
|||
|
|
@ -8475,6 +8475,7 @@ sme_del_periodic_tx_ptrn(tHalHandle hal,
|
|||
return status;
|
||||
}
|
||||
|
||||
#ifdef FEATURE_WLAN_RMC
|
||||
/*
|
||||
* sme_enable_rmc() - enables RMC
|
||||
* @hHal : Pointer to global HAL handle
|
||||
|
|
@ -8572,6 +8573,7 @@ QDF_STATUS sme_send_rmc_action_period(tHalHandle hHal, uint32_t sessionId)
|
|||
|
||||
return status;
|
||||
}
|
||||
#endif /* FEATURE_WLAN_RMC */
|
||||
|
||||
/*
|
||||
* sme_request_ibss_peer_info() - request ibss peer info
|
||||
|
|
@ -9839,7 +9841,7 @@ QDF_STATUS sme_send_rate_update_ind(tHalHandle hHal,
|
|||
if (!QDF_IS_STATUS_SUCCESS
|
||||
(scheduler_post_msg(QDF_MODULE_ID_WMA, &msg))) {
|
||||
QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_ERROR,
|
||||
"%s: Not able to post WMA_SET_RMC_RATE_IND to WMA!",
|
||||
"%s: Not able to post WMA_RATE_UPDATE_IND to WMA!",
|
||||
__func__);
|
||||
|
||||
sme_release_global_lock(&pMac->sme);
|
||||
|
|
|
|||
|
|
@ -980,11 +980,31 @@ QDF_STATUS wma_process_get_peer_info_req
|
|||
QDF_STATUS wma_process_tx_fail_monitor_ind
|
||||
(tp_wma_handle wma, tAniTXFailMonitorInd *pReq);
|
||||
|
||||
#ifdef FEATURE_WLAN_RMC
|
||||
QDF_STATUS wma_process_rmc_enable_ind(tp_wma_handle wma);
|
||||
|
||||
QDF_STATUS wma_process_rmc_disable_ind(tp_wma_handle wma);
|
||||
|
||||
QDF_STATUS wma_process_rmc_action_period_ind(tp_wma_handle wma);
|
||||
#else
|
||||
static inline
|
||||
QDF_STATUS wma_process_rmc_enable_ind(tp_wma_handle wma)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline
|
||||
QDF_STATUS wma_process_rmc_disable_ind(tp_wma_handle wma)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline
|
||||
QDF_STATUS wma_process_rmc_action_period_ind(tp_wma_handle wma)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
|
||||
QDF_STATUS wma_process_add_periodic_tx_ptrn_ind(WMA_HANDLE handle,
|
||||
tSirAddPeriodicTxPtrn *
|
||||
|
|
|
|||
|
|
@ -3439,6 +3439,7 @@ QDF_STATUS wma_process_tx_fail_monitor_ind(tp_wma_handle wma,
|
|||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
#ifdef FEATURE_WLAN_RMC
|
||||
/**
|
||||
* wma_process_rmc_enable_ind() - enables RMC functionality in target
|
||||
* @wma: wma handle
|
||||
|
|
@ -3608,6 +3609,7 @@ QDF_STATUS wma_process_rmc_action_period_ind(tp_wma_handle wma)
|
|||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif /* FEATURE_WLAN_RMC */
|
||||
|
||||
/**
|
||||
* wma_process_add_periodic_tx_ptrn_ind - add periodic tx ptrn
|
||||
|
|
|
|||
Loading…
Reference in a new issue