aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-core.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-core.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-core.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c
index 4beddade7423..1921307a23b8 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.c
+++ b/drivers/net/wireless/iwlwifi/iwl-core.c
@@ -1872,6 +1872,16 @@ int iwl_mac_add_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
1872 if (err) 1872 if (err)
1873 goto out_err; 1873 goto out_err;
1874 1874
1875 if (priv->cfg->advanced_bt_coexist &&
1876 vif->type == NL80211_IFTYPE_ADHOC) {
1877 /*
1878 * pretend to have high BT traffic as long as we
1879 * are operating in IBSS mode, as this will cause
1880 * the rate scaling etc. to behave as intended.
1881 */
1882 priv->bt_traffic_load = IWL_BT_COEX_TRAFFIC_LOAD_HIGH;
1883 }
1884
1875 goto out; 1885 goto out;
1876 1886
1877 out_err: 1887 out_err:
@@ -1909,6 +1919,17 @@ void iwl_mac_remove_interface(struct ieee80211_hw *hw,
1909 } 1919 }
1910 memset(priv->bssid, 0, ETH_ALEN); 1920 memset(priv->bssid, 0, ETH_ALEN);
1911 } 1921 }
1922
1923 /*
1924 * When removing the IBSS interface, overwrite the
1925 * BT traffic load with the stored one from the last
1926 * notification, if any. If this is a device that
1927 * doesn't implement this, this has no effect since
1928 * both values are the same and zero.
1929 */
1930 if (vif->type == NL80211_IFTYPE_ADHOC)
1931 priv->bt_traffic_load = priv->notif_bt_traffic_load;
1932
1912 mutex_unlock(&priv->mutex); 1933 mutex_unlock(&priv->mutex);
1913 1934
1914 if (scan_completed) 1935 if (scan_completed)