|
@@ -6782,6 +6782,8 @@ int wlan_hdd_set_mon_chan(struct hdd_adapter *adapter, uint32_t chan,
|
|
|
struct qdf_mac_addr bssid;
|
|
|
struct csr_roam_profile roam_profile;
|
|
|
struct ch_params ch_params;
|
|
|
+ enum phy_ch_width max_fw_bw;
|
|
|
+ enum phy_ch_width ch_width;
|
|
|
|
|
|
if (hdd_get_conparam() != QDF_GLOBAL_MONITOR_MODE) {
|
|
|
hdd_err("Not supported, device is not in monitor mode");
|
|
@@ -6794,6 +6796,21 @@ int wlan_hdd_set_mon_chan(struct hdd_adapter *adapter, uint32_t chan,
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
|
|
|
+ /* Verify the BW before accepting this request */
|
|
|
+ ch_width = bandwidth;
|
|
|
+
|
|
|
+ max_fw_bw = sme_get_vht_ch_width();
|
|
|
+
|
|
|
+ hdd_debug("max fw BW %d ch width %d", max_fw_bw, ch_width);
|
|
|
+ if ((ch_width == CH_WIDTH_160MHZ &&
|
|
|
+ max_fw_bw <= WNI_CFG_VHT_CHANNEL_WIDTH_80MHZ) ||
|
|
|
+ (ch_width == CH_WIDTH_80P80MHZ &&
|
|
|
+ max_fw_bw <= WNI_CFG_VHT_CHANNEL_WIDTH_160MHZ)) {
|
|
|
+ hdd_err("FW does not support this BW %d max BW supported %d",
|
|
|
+ ch_width, max_fw_bw);
|
|
|
+ return -EINVAL;
|
|
|
+ }
|
|
|
+
|
|
|
if (WLAN_REG_IS_24GHZ_CH(chan)) {
|
|
|
if (bandwidth == CH_WIDTH_80MHZ) {
|
|
|
hdd_err("BW80 not possible in 2.4GHz band");
|