chan_count = supported_chan_mib.data[i*2 + 1];
if (chan_start == 1) { /* for 2.4GHz */
supported_channels[supp_chan_length].start_chan_num = 1;
+ if (!(sdev->device_config.host_state & FAPI_HOSTSTATE_CELLULAR_ACTIVE) &&
+ chan_count > 11 && sdev->device_config.disable_ch12_ch13)
+ chan_count = 11;
supported_channels[supp_chan_length].channel_count = chan_count;
supported_channels[supp_chan_length].increment = 1;
supported_channels[supp_chan_length].band = NL80211_BAND_2GHZ;
return -ENOMEM;
}
+void slsi_disable_ch12_13(struct slsi_dev *sdev)
+{
+ struct wiphy *wiphy = sdev->wiphy;
+ struct ieee80211_channel *chan;
+
+ if (wiphy->bands[0]) {
+ chan = &wiphy->bands[0]->channels[11];
+ chan->flags |= IEEE80211_CHAN_DISABLED;
+ chan = &wiphy->bands[0]->channels[12];
+ chan->flags |= IEEE80211_CHAN_DISABLED;
+ }
+}
+
int slsi_set_fcc_channel(struct net_device *dev, char *cmd, int cmd_len)
{
struct netdev_vif *ndev_vif = netdev_priv(dev);
slsi_reset_channel_flags(sdev);
wiphy_apply_custom_regulatory(sdev->wiphy, sdev->device_config.domain_info.regdomain);
slsi_update_supported_channels_regd_flags(sdev);
+ if (flight_mode_ena && sdev->device_config.disable_ch12_ch13)
+ slsi_disable_ch12_13(sdev);
}
}
}
{ SLSI_PSID_UNIFI_MAX_CLIENT, {0, 0} },
#endif
#ifdef CONFIG_SCSC_WLAN_ENABLE_MAC_RANDOMISATION
- { SLSI_PSID_UNIFI_MAC_ADDRESS_RANDOMISATION_ACTIVATED, {0, 0} }
+ { SLSI_PSID_UNIFI_MAC_ADDRESS_RANDOMISATION_ACTIVATED, {0, 0} },
#endif
+ { SLSI_PSID_UNIFI_DEFAULT_COUNTRY_WITHOUT_CH12_CH13, {0, 0} }
};/*Check the mibrsp.dataLength when a new mib is added*/
/* 40 MHz bandwidth is not supported in 2.4 GHz in AP/GO Mode Currently.
if (r != SLSI_MIB_STATUS_SUCCESS)
return -ENOMEM;
- mibrsp.dataLength = 164;
+ mibrsp.dataLength = 174;
mibrsp.data = kmalloc(mibrsp.dataLength, GFP_KERNEL);
if (!mibrsp.data) {
kfree(mibreq.data);
else
SLSI_WARN(sdev, "Error reading Mac Randomization Support\n");
#endif
+ if (values[++mib_index].type != SLSI_MIB_TYPE_NONE) /* Disable ch12/ch13 */
+ sdev->device_config.disable_ch12_ch13 = values[mib_index].u.boolValue;
+ else
+ SLSI_WARN(sdev, "Error reading default country without ch12/13 mib\n");
+
kfree(values);
}
kfree(mibrsp.data);