iwlwifi: mvm: support HE context cmd API change
Support API change to pass all mbssid parameters to the firmware. Signed-off-by: Sara Sharon <sara.sharon@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>hifive-unleashed-5.2
parent
c30aef01ba
commit
d14ae796f8
|
@ -541,6 +541,66 @@ enum iwl_he_htc_flags {
|
|||
#define IWL_HE_HTC_LINK_ADAP_UNSOLICITED (2 << IWL_HE_HTC_LINK_ADAP_POS)
|
||||
#define IWL_HE_HTC_LINK_ADAP_BOTH (3 << IWL_HE_HTC_LINK_ADAP_POS)
|
||||
|
||||
/**
|
||||
* struct iwl_he_sta_context_cmd_v1 - configure FW to work with HE AP
|
||||
* @sta_id: STA id
|
||||
* @tid_limit: max num of TIDs in TX HE-SU multi-TID agg
|
||||
* 0 - bad value, 1 - multi-tid not supported, 2..8 - tid limit
|
||||
* @reserved1: reserved byte for future use
|
||||
* @reserved2: reserved byte for future use
|
||||
* @flags: see %iwl_11ax_sta_ctxt_flags
|
||||
* @ref_bssid_addr: reference BSSID used by the AP
|
||||
* @reserved0: reserved 2 bytes for aligning the ref_bssid_addr field to 8 bytes
|
||||
* @htc_flags: which features are supported in HTC
|
||||
* @frag_flags: frag support in A-MSDU
|
||||
* @frag_level: frag support level
|
||||
* @frag_max_num: max num of "open" MSDUs in the receiver (in power of 2)
|
||||
* @frag_min_size: min frag size (except last frag)
|
||||
* @pkt_ext: optional, exists according to PPE-present bit in the HE-PHY capa
|
||||
* @bss_color: 11ax AP ID that is used in the HE SIG-A to mark inter BSS frame
|
||||
* @htc_trig_based_pkt_ext: default PE in 4us units
|
||||
* @frame_time_rts_th: HE duration RTS threshold, in units of 32us
|
||||
* @rand_alloc_ecwmin: random CWmin = 2**ECWmin-1
|
||||
* @rand_alloc_ecwmax: random CWmax = 2**ECWmax-1
|
||||
* @reserved3: reserved byte for future use
|
||||
* @trig_based_txf: MU EDCA Parameter set for the trigger based traffic queues
|
||||
*/
|
||||
struct iwl_he_sta_context_cmd_v1 {
|
||||
u8 sta_id;
|
||||
u8 tid_limit;
|
||||
u8 reserved1;
|
||||
u8 reserved2;
|
||||
__le32 flags;
|
||||
|
||||
/* The below fields are set via Multiple BSSID IE */
|
||||
u8 ref_bssid_addr[6];
|
||||
__le16 reserved0;
|
||||
|
||||
/* The below fields are set via HE-capabilities IE */
|
||||
__le32 htc_flags;
|
||||
|
||||
u8 frag_flags;
|
||||
u8 frag_level;
|
||||
u8 frag_max_num;
|
||||
u8 frag_min_size;
|
||||
|
||||
/* The below fields are set via PPE thresholds element */
|
||||
struct iwl_he_pkt_ext pkt_ext;
|
||||
|
||||
/* The below fields are set via HE-Operation IE */
|
||||
u8 bss_color;
|
||||
u8 htc_trig_based_pkt_ext;
|
||||
__le16 frame_time_rts_th;
|
||||
|
||||
/* Random access parameter set (i.e. RAPS) */
|
||||
u8 rand_alloc_ecwmin;
|
||||
u8 rand_alloc_ecwmax;
|
||||
__le16 reserved3;
|
||||
|
||||
/* The below fields are set via MU EDCA parameter set element */
|
||||
struct iwl_he_backoff_conf trig_based_txf[AC_NUM];
|
||||
} __packed; /* STA_CONTEXT_DOT11AX_API_S_VER_1 */
|
||||
|
||||
/**
|
||||
* struct iwl_he_sta_context_cmd - configure FW to work with HE AP
|
||||
* @sta_id: STA id
|
||||
|
@ -564,6 +624,14 @@ enum iwl_he_htc_flags {
|
|||
* @rand_alloc_ecwmax: random CWmax = 2**ECWmax-1
|
||||
* @reserved3: reserved byte for future use
|
||||
* @trig_based_txf: MU EDCA Parameter set for the trigger based traffic queues
|
||||
* @max_bssid_indicator: indicator of the max bssid supported on the associated
|
||||
* bss
|
||||
* @bssid_index: index of the associated VAP
|
||||
* @ema_ap: AP supports enhanced Multi BSSID advertisement
|
||||
* @profile_periodicity: number of Beacon periods that are needed to receive the
|
||||
* complete VAPs info
|
||||
* @bssid_count: actual number of VAPs in the MultiBSS Set
|
||||
* @reserved4: alignment
|
||||
*/
|
||||
struct iwl_he_sta_context_cmd {
|
||||
u8 sta_id;
|
||||
|
@ -599,7 +667,14 @@ struct iwl_he_sta_context_cmd {
|
|||
|
||||
/* The below fields are set via MU EDCA parameter set element */
|
||||
struct iwl_he_backoff_conf trig_based_txf[AC_NUM];
|
||||
} __packed; /* STA_CONTEXT_DOT11AX_API_S */
|
||||
|
||||
u8 max_bssid_indicator;
|
||||
u8 bssid_index;
|
||||
u8 ema_ap;
|
||||
u8 profile_periodicity;
|
||||
u8 bssid_count;
|
||||
u8 reserved4[3];
|
||||
} __packed; /* STA_CONTEXT_DOT11AX_API_S_VER_2 */
|
||||
|
||||
/**
|
||||
* struct iwl_he_monitor_cmd - configure air sniffer for HE
|
||||
|
|
|
@ -279,6 +279,8 @@ typedef unsigned int __bitwise iwl_ucode_tlv_api_t;
|
|||
* @IWL_UCODE_TLV_API_SCAN_OFFLOAD_CHANS: This ucode supports v2 of
|
||||
* SCAN_OFFLOAD_PROFILE_MATCH_RESULTS_S and v3 of
|
||||
* SCAN_OFFLOAD_PROFILES_QUERY_RSP_S.
|
||||
* @IWL_UCODE_TLV_API_MBSSID_HE: This ucode supports v2 of
|
||||
* STA_CONTEXT_DOT11AX_API_S
|
||||
*
|
||||
* @NUM_IWL_UCODE_TLV_API: number of bits used
|
||||
*/
|
||||
|
@ -308,6 +310,7 @@ enum iwl_ucode_tlv_api {
|
|||
IWL_UCODE_TLV_API_REGULATORY_NVM_INFO = (__force iwl_ucode_tlv_api_t)48,
|
||||
IWL_UCODE_TLV_API_FTM_NEW_RANGE_REQ = (__force iwl_ucode_tlv_api_t)49,
|
||||
IWL_UCODE_TLV_API_SCAN_OFFLOAD_CHANS = (__force iwl_ucode_tlv_api_t)50,
|
||||
IWL_UCODE_TLV_API_MBSSID_HE = (__force iwl_ucode_tlv_api_t)52,
|
||||
|
||||
NUM_IWL_UCODE_TLV_API
|
||||
#ifdef __CHECKER__
|
||||
|
|
|
@ -2212,6 +2212,10 @@ static void iwl_mvm_cfg_he_sta(struct iwl_mvm *mvm,
|
|||
.frame_time_rts_th =
|
||||
cpu_to_le16(vif->bss_conf.frame_time_rts_th),
|
||||
};
|
||||
int size = fw_has_api(&mvm->fw->ucode_capa,
|
||||
IWL_UCODE_TLV_API_MBSSID_HE) ?
|
||||
sizeof(sta_ctxt_cmd) :
|
||||
sizeof(struct iwl_he_sta_context_cmd_v1);
|
||||
struct ieee80211_sta *sta;
|
||||
u32 flags;
|
||||
int i;
|
||||
|
@ -2399,13 +2403,19 @@ static void iwl_mvm_cfg_he_sta(struct iwl_mvm *mvm,
|
|||
flags |= STA_CTXT_HE_REF_BSSID_VALID;
|
||||
ether_addr_copy(sta_ctxt_cmd.ref_bssid_addr,
|
||||
vif->bss_conf.transmitter_bssid);
|
||||
sta_ctxt_cmd.max_bssid_indicator =
|
||||
vif->bss_conf.bssid_indicator;
|
||||
sta_ctxt_cmd.bssid_index = vif->bss_conf.bssid_index;
|
||||
sta_ctxt_cmd.ema_ap = vif->bss_conf.ema_ap;
|
||||
sta_ctxt_cmd.profile_periodicity =
|
||||
vif->bss_conf.profile_periodicity;
|
||||
}
|
||||
|
||||
sta_ctxt_cmd.flags = cpu_to_le32(flags);
|
||||
|
||||
if (iwl_mvm_send_cmd_pdu(mvm, iwl_cmd_id(STA_HE_CTXT_CMD,
|
||||
DATA_PATH_GROUP, 0),
|
||||
0, sizeof(sta_ctxt_cmd), &sta_ctxt_cmd))
|
||||
0, size, &sta_ctxt_cmd))
|
||||
IWL_ERR(mvm, "Failed to config FW to work HE!\n");
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue