qcacld-3.0: Add support to send Manual BA mode on each vdev

FW has BA Auto mode as default configuration and expects
Host to update if it is Manual trigger mode. Currently, Host
sends Manual mode trigger on assoc vdev as the partner vdev
is not yet created while setting this value. Modify the
logic to support to set Manual mode on each vdev post the
vdev start.

Change-Id: I3f1e806d2a1e9a28f3f380a0c087da494a7af27e
CRs-Fixed: 3401604
Bu işleme şunda yer alıyor:
Gururaj Pandurangi
2023-03-19 21:48:52 -07:00
işlemeyi yapan: Rahul Choudhary
ebeveyn 6c4913dc46
işleme 0a7681d655
5 değiştirilmiş dosya ile 40 ekleme ve 7 silme

Dosyayı Görüntüle

@@ -12334,6 +12334,7 @@ __wlan_hdd_cfg80211_set_wifi_test_config(struct wiphy *wiphy,
struct set_wfatest_params wfa_param = {0};
struct hdd_station_ctx *hdd_sta_ctx =
WLAN_HDD_GET_STATION_CTX_PTR(adapter->deflink);
uint8_t op_mode;
hdd_enter_dev(dev);
@@ -12425,13 +12426,14 @@ __wlan_hdd_cfg80211_set_wifi_test_config(struct wiphy *wiphy,
hdd_debug("BA operating mode is set to Manual");
}
ret_val = wma_cli_set_command(adapter->deflink->vdev_id,
wmi_vdev_param_set_ba_mode,
set_val, VDEV_CMD);
if (ret_val) {
hdd_err("Set BA operating mode failed");
goto send_err;
}
op_mode = wlan_get_opmode_from_vdev_id(
hdd_ctx->pdev,
adapter->deflink->vdev_id);
if (op_mode == QDF_STA_MODE)
sme_set_ba_opmode(mac_handle,
adapter->deflink->vdev_id,
set_val);
if (!cfg_val) {
ret_val = wma_cli_set_command(
adapter->deflink->vdev_id,

Dosyayı Görüntüle

@@ -777,6 +777,7 @@ struct mac_context {
#ifdef WLAN_FEATURE_CAL_FAILURE_TRIGGER
void (*cal_failure_event_cb)(uint8_t cal_type, uint8_t reason);
#endif
bool ba_mode;
};
#ifdef FEATURE_WLAN_TDLS

Dosyayı Görüntüle

@@ -3034,6 +3034,17 @@ int sme_set_auto_rate_ldpc(mac_handle_t mac_handle, uint8_t session_id,
int sme_set_auto_rate_he_ltf(mac_handle_t mac_handle, uint8_t session_id,
uint8_t cfg_val);
/**
* sme_set_ba_opmode() - sets the BA op mode
* @mac_handle: Opaque handle to the global MAC context
* @session_id: SME session id
* @cfg_val: BA mode
*
* Return: None
*/
void sme_set_ba_opmode(mac_handle_t mac_handle, uint8_t session_id,
bool cfg_val);
#ifdef WLAN_FEATURE_11BE
/**
* sme_update_tgt_eht_cap() - sets the EHT caps to pmac

Dosyayı Görüntüle

@@ -10488,6 +10488,15 @@ int sme_update_tx_bfee_nsts(mac_handle_t mac_handle, uint8_t session_id,
return sme_update_he_tx_bfee_nsts(mac_handle, session_id, nsts_set_val);
}
void sme_set_ba_opmode(mac_handle_t mac_handle, uint8_t session_id,
bool ba_opmode)
{
struct mac_context *mac_ctx = MAC_CONTEXT(mac_handle);
mac_ctx->ba_mode = ba_opmode;
sme_debug("BA mode %d", mac_ctx->ba_mode);
}
#ifdef WLAN_FEATURE_11BE
void sme_update_tgt_eht_cap(mac_handle_t mac_handle,
struct wma_tgt_cfg *cfg,

Dosyayı Görüntüle

@@ -1347,6 +1347,16 @@ QDF_STATUS wma_vdev_start_resp_handler(struct vdev_mlme_obj *vdev_mlme,
iface->mac_id, rsp);
}
if (iface->type == WMI_VDEV_TYPE_STA &&
rsp->resp_type == WMI_VDEV_START_RESP_EVENT) {
wma_debug("BA mode: %d", mac_ctx->ba_mode);
if (wma_cli_set_command(rsp->vdev_id,
wmi_vdev_param_set_ba_mode,
mac_ctx->ba_mode, VDEV_CMD))
wma_err("Set BA opmode failed for vdev: %d",
rsp->vdev_id);
}
#ifdef FEATURE_AP_MCC_CH_AVOIDANCE
if (rsp->status == QDF_STATUS_SUCCESS
&& mac_ctx->sap.sap_channel_avoidance)