qcacmn: Populate DFS_CFREQ2 and BW-NSS mapping
Make the following TLV WMI layer changes related to 160/80+80 MHz functionality: - While forming the VDEV start/restart command, if the request from the upper layer indicates the dfs_set_cfreq2 flag, then enable the WMI_CHAN_FLAG_DFS_CFREQ2 channel flag. This is needed in order to enable radar event reporting for the secondary 80 MHz segment. Make this change only in the WIN specific implementation of copy_channel_info(). If required for MCL, to be handled separately. - Move the 'peer_bw_rxnss_override' member in 'struct peer_assoc_params' to outside the '#ifndef CONFIG_MCL' section so that it is available both on MCL and WIN. Since in MCL code peer_assoc_params is initialized to all zeros and peer_bw_rxnss_override is not set anywhere later, this should have no side effects. - While forming the PEER assoc completion command, populate the peer_bw_rxnss_override field as per the corresponding parameter sent by the upper layer. This is required for providing override values of Rx NSS for bandwidths higher than 80 MHz. Testing: - Tested on QCA8074 that the WMI_CHAN_FLAG_DFS_CFREQ2 channel flag is being set in the VDEV start command if the secondary 80 MHz lies on DFS channels (tried VHT160 and VHT80_80) - Tested on QCA8074 AP and STA that the peer_bw_rxnss_override value is being set in the PEER assoc completion command to indicate Rx NSS value 2, when NSS value 4 is used for <=80 MHz (tried VHT160 and VHT80_80). Also tested ping. Change-Id: Ic45d80567eeed3707f76e513f772ce4da71d6ee0 CRs-Fixed: 2022037
Bu işleme şunda yer alıyor:
işlemeyi yapan:
Sandeep Puligilla
ebeveyn
2ec8d473b6
işleme
0b952ea565
@@ -286,6 +286,9 @@ static inline void copy_channel_info(
|
||||
cmd->disable_hw_ack = req->disable_hw_ack;
|
||||
}
|
||||
|
||||
if (req->channel.dfs_set_cfreq2)
|
||||
WMI_SET_CHANNEL_FLAG(chan, WMI_CHAN_FLAG_DFS_CFREQ2);
|
||||
|
||||
/* FIXME: Find out min, max and regulatory power levels */
|
||||
WMI_SET_CHANNEL_REG_POWER(chan, req->channel.maxregpower);
|
||||
WMI_SET_CHANNEL_MAX_TX_POWER(chan, req->channel.maxpower);
|
||||
@@ -1917,6 +1920,11 @@ static QDF_STATUS send_peer_assoc_cmd_tlv(wmi_unified_t wmi_handle,
|
||||
WMITLV_GET_STRUCT_TLVLEN(wmi_vht_rate_set));
|
||||
|
||||
cmd->peer_nss = param->peer_nss;
|
||||
|
||||
/* Update bandwidth-NSS mapping */
|
||||
cmd->peer_bw_rxnss_override = 0;
|
||||
cmd->peer_bw_rxnss_override |= param->peer_bw_rxnss_override;
|
||||
|
||||
mcs = (wmi_vht_rate_set *) buf_ptr;
|
||||
if (param->vht_capable) {
|
||||
mcs->rx_max_rate = param->rx_max_rate;
|
||||
@@ -1951,7 +1959,8 @@ static QDF_STATUS send_peer_assoc_cmd_tlv(wmi_unified_t wmi_handle,
|
||||
"nss %d phymode %d peer_mpdu_density %d "
|
||||
"cmd->peer_vht_caps %x "
|
||||
"HE cap_info %x ops %x "
|
||||
"HE phy %x %x %x ", __func__,
|
||||
"HE phy %x %x %x "
|
||||
"peer_bw_rxnss_override %x", __func__,
|
||||
cmd->vdev_id, cmd->peer_associd, cmd->peer_flags,
|
||||
cmd->peer_rate_caps, cmd->peer_caps,
|
||||
cmd->peer_listen_intval, cmd->peer_ht_caps,
|
||||
@@ -1959,7 +1968,8 @@ static QDF_STATUS send_peer_assoc_cmd_tlv(wmi_unified_t wmi_handle,
|
||||
cmd->peer_mpdu_density,
|
||||
cmd->peer_vht_caps, cmd->peer_he_cap_info,
|
||||
cmd->peer_he_ops, cmd->peer_he_cap_phy[0],
|
||||
cmd->peer_he_cap_phy[1], cmd->peer_he_cap_phy[2]);
|
||||
cmd->peer_he_cap_phy[1], cmd->peer_he_cap_phy[2],
|
||||
cmd->peer_bw_rxnss_override);
|
||||
|
||||
ret = wmi_unified_cmd_send(wmi_handle, buf, len,
|
||||
WMI_PEER_ASSOC_CMDID);
|
||||
|
Yeni konuda referans
Bir kullanıcı engelle