qcacld-3.0: Fill proper seg0 and seg1 values
In the API lim_extract_ap_capability the driver depends on the value of seg0 and seg1 values from the AP and blindly fills that and sends that as part of vdev start params. There can be some APs which do not fill the seg0 and seg1 APs correctly and blindly depending upon those values can lead to wrong seg0 and seg1 thus leading to FW assert. Fix is to fill the seg0 value as centre channel of 80Mhz and seg1 as 0 in case of 80Mhz BW. Since these are unique values and dependent on channel number (primary) driver can fill that directly rather than depending on the AP for them. Change-Id: I46f2a81b443e1d0d62eb039878add15310595c8c CRs-Fixed: 2664405
此提交包含在:
@@ -398,6 +398,9 @@ void lim_extract_ap_capability(struct mac_context *mac_ctx, uint8_t *p_ie,
|
|||||||
else if (center_freq_diff > 16)
|
else if (center_freq_diff > 16)
|
||||||
ap_bcon_ch_width =
|
ap_bcon_ch_width =
|
||||||
WNI_CFG_VHT_CHANNEL_WIDTH_80_PLUS_80MHZ;
|
WNI_CFG_VHT_CHANNEL_WIDTH_80_PLUS_80MHZ;
|
||||||
|
else
|
||||||
|
ap_bcon_ch_width =
|
||||||
|
WNI_CFG_VHT_CHANNEL_WIDTH_80MHZ;
|
||||||
}
|
}
|
||||||
|
|
||||||
fw_vht_ch_wd = wma_get_vht_ch_width();
|
fw_vht_ch_wd = wma_get_vht_ch_width();
|
||||||
@@ -466,17 +469,14 @@ void lim_extract_ap_capability(struct mac_context *mac_ctx, uint8_t *p_ie,
|
|||||||
*/
|
*/
|
||||||
vht_ch_wd = WNI_CFG_VHT_CHANNEL_WIDTH_80MHZ;
|
vht_ch_wd = WNI_CFG_VHT_CHANNEL_WIDTH_80MHZ;
|
||||||
session->ch_center_freq_seg1 = 0;
|
session->ch_center_freq_seg1 = 0;
|
||||||
|
session->ch_center_freq_seg0 =
|
||||||
|
lim_get_80Mhz_center_channel(channel);
|
||||||
}
|
}
|
||||||
} else if (vht_ch_wd == WNI_CFG_VHT_CHANNEL_WIDTH_80MHZ) {
|
} else if (vht_ch_wd == WNI_CFG_VHT_CHANNEL_WIDTH_80MHZ) {
|
||||||
/* DUT or AP supports only 80MHz */
|
/* DUT or AP supports only 80MHz */
|
||||||
if (ap_bcon_ch_width ==
|
session->ch_center_freq_seg0 =
|
||||||
WNI_CFG_VHT_CHANNEL_WIDTH_160MHZ &&
|
lim_get_80Mhz_center_channel(channel);
|
||||||
!new_ch_width_dfn)
|
session->ch_center_freq_seg1 = 0;
|
||||||
/* AP is in 160MHz mode */
|
|
||||||
session->ch_center_freq_seg0 =
|
|
||||||
lim_get_80Mhz_center_channel(channel);
|
|
||||||
else
|
|
||||||
session->ch_center_freq_seg1 = 0;
|
|
||||||
}
|
}
|
||||||
session->ch_width = vht_ch_wd + 1;
|
session->ch_width = vht_ch_wd + 1;
|
||||||
}
|
}
|
||||||
|
新增問題並參考
封鎖使用者