qcacld-3.0: Enable Flex. TWT based on TWT Req/Resp Capability
Enable Flexible TWT when TWT feature is enable and either of the TWT Requestor or Responder capability is enable. Change-Id: I2f2b1c311d9aba6e09d309e83f37098175b80767 CRs-Fixed: 3422493
Este cometimento está contido em:

cometido por
Rahul Choudhary

ascendente
125eb5841d
cometimento
1ac61ce509
@@ -847,7 +847,7 @@ QDF_STATUS mlme_update_tgt_he_caps_in_cfg(struct wlan_objmgr_psoc *psoc,
|
||||
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
||||
tDot11fIEhe_cap *he_cap = &wma_cfg->he_cap;
|
||||
struct wlan_mlme_psoc_ext_obj *mlme_obj = mlme_get_psoc_ext_obj(psoc);
|
||||
uint8_t value;
|
||||
uint8_t value, twt_req, twt_resp;
|
||||
uint16_t tx_mcs_map = 0;
|
||||
uint16_t rx_mcs_map = 0;
|
||||
uint8_t nss;
|
||||
@@ -858,9 +858,13 @@ QDF_STATUS mlme_update_tgt_he_caps_in_cfg(struct wlan_objmgr_psoc *psoc,
|
||||
mlme_obj->cfg.he_caps.dot11_he_cap.present = 1;
|
||||
mlme_obj->cfg.he_caps.dot11_he_cap.htc_he = he_cap->htc_he;
|
||||
|
||||
value = QDF_MIN(he_cap->twt_request,
|
||||
mlme_obj->cfg.he_caps.dot11_he_cap.twt_request);
|
||||
mlme_obj->cfg.he_caps.dot11_he_cap.twt_request = value;
|
||||
twt_req = QDF_MIN(he_cap->twt_request,
|
||||
mlme_obj->cfg.he_caps.dot11_he_cap.twt_request);
|
||||
mlme_obj->cfg.he_caps.dot11_he_cap.twt_request = twt_req;
|
||||
|
||||
twt_resp = QDF_MIN(he_cap->twt_responder,
|
||||
mlme_obj->cfg.he_caps.dot11_he_cap.twt_responder);
|
||||
mlme_obj->cfg.he_caps.dot11_he_cap.twt_responder = twt_resp;
|
||||
|
||||
value = QDF_MIN(he_cap->fragmentation,
|
||||
mlme_obj->cfg.he_caps.he_dynamic_fragmentation);
|
||||
@@ -897,8 +901,16 @@ QDF_STATUS mlme_update_tgt_he_caps_in_cfg(struct wlan_objmgr_psoc *psoc,
|
||||
mlme_obj->cfg.he_caps.dot11_he_cap.broadcast_twt);
|
||||
mlme_obj->cfg.he_caps.dot11_he_cap.broadcast_twt = value;
|
||||
|
||||
mlme_obj->cfg.he_caps.dot11_he_cap.flex_twt_sched =
|
||||
he_cap->flex_twt_sched;
|
||||
/*
|
||||
* As per 802.11ax spec, Flexible TWT capability can be set
|
||||
* independent of TWT Requestor/Responder capability.
|
||||
* But currently we don't have any such usecase and firmware
|
||||
* does not support it. Hence enabling Flexible TWT only when
|
||||
* either or both of the TWT Requestor/Responder capability
|
||||
* is set/enabled.
|
||||
*/
|
||||
value = QDF_MIN(he_cap->flex_twt_sched, (twt_req || twt_resp));
|
||||
mlme_obj->cfg.he_caps.dot11_he_cap.flex_twt_sched = value;
|
||||
|
||||
mlme_obj->cfg.he_caps.dot11_he_cap.ba_32bit_bitmap =
|
||||
he_cap->ba_32bit_bitmap;
|
||||
|
@@ -71,6 +71,7 @@
|
||||
#include <lim_assoc_utils.h>
|
||||
#include "wlan_mlme_ucfg_api.h"
|
||||
#include "nan_ucfg_api.h"
|
||||
#include "wlan_twt_ucfg_ext_cfg.h"
|
||||
#ifdef WLAN_FEATURE_11BE
|
||||
#include "wma_eht.h"
|
||||
#endif
|
||||
@@ -7957,7 +7958,7 @@ QDF_STATUS lim_send_he_caps_ie(struct mac_context *mac_ctx,
|
||||
HE_CAP_80P80_MCS_MAP_LEN;
|
||||
uint8_t num_ppe_th = 0;
|
||||
bool nan_beamforming_supported;
|
||||
bool disable_nan_tx_bf = false;
|
||||
bool disable_nan_tx_bf = false, value = false;
|
||||
|
||||
/* Sending only minimal info(no PPET) to FW now, update if required */
|
||||
qdf_mem_zero(he_caps, he_cap_total_len);
|
||||
@@ -8001,6 +8002,24 @@ QDF_STATUS lim_send_he_caps_ie(struct mac_context *mac_ctx,
|
||||
num_ppe_th = lim_set_he_caps_ppet(mac_ctx, he_caps,
|
||||
CDS_BAND_5GHZ);
|
||||
|
||||
if ((device_mode == QDF_STA_MODE) ||
|
||||
(device_mode == QDF_P2P_CLIENT_MODE)) {
|
||||
ucfg_twt_cfg_get_requestor(mac_ctx->psoc, &value);
|
||||
if (!value) {
|
||||
he_cap->twt_request = false;
|
||||
he_cap->flex_twt_sched = false;
|
||||
}
|
||||
he_cap->twt_responder = false;
|
||||
} else if ((device_mode == QDF_SAP_MODE) ||
|
||||
(device_mode == QDF_P2P_GO_MODE)) {
|
||||
ucfg_twt_cfg_get_responder(mac_ctx->psoc, &value);
|
||||
if (!value) {
|
||||
he_cap->twt_responder = false;
|
||||
he_cap->flex_twt_sched = false;
|
||||
}
|
||||
he_cap->twt_request = false;
|
||||
}
|
||||
|
||||
status_5g = lim_send_ie(mac_ctx, vdev_id, DOT11F_EID_HE_CAP,
|
||||
CDS_BAND_5GHZ, &he_caps[2],
|
||||
he_caps[1] + 1 + num_ppe_th);
|
||||
|
@@ -1869,9 +1869,14 @@ void csr_update_session_he_cap(struct mac_context *mac_ctx,
|
||||
*/
|
||||
persona = wlan_vdev_mlme_get_opmode(vdev);
|
||||
if (persona == QDF_SAP_MODE || persona == QDF_P2P_GO_MODE) {
|
||||
he_cap->twt_request = 0;
|
||||
he_cap->twt_request = false;
|
||||
if (!he_cap->twt_responder)
|
||||
he_cap->flex_twt_sched = false;
|
||||
|
||||
} else if (persona == QDF_STA_MODE || persona == QDF_P2P_CLIENT_MODE) {
|
||||
he_cap->twt_responder = 0;
|
||||
he_cap->twt_responder = false;
|
||||
if (!he_cap->twt_request)
|
||||
he_cap->flex_twt_sched = false;
|
||||
}
|
||||
|
||||
if (he_cap->ppet_present) {
|
||||
|
Criar uma nova questão referindo esta
Bloquear um utilizador