aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-core.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2010-08-23 10:57:00 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-08-25 14:33:22 -0400
commit59079949faed96cc2756d5a59c185b304f1bc840 (patch)
tree2f9815c8e09ca02627adb8e4673344c2d247adf7 /drivers/net/wireless/iwlwifi/iwl-core.c
parenta11741383ba6eef707b8330f0d3c1da6a7478ee3 (diff)
iwlagn: disable gen2b BT coexistence in IBSS
IBSS doesn't allow for coexistence, so it should be disabled. Additionally, disable reacting to the BT profile notification when in IBSS mode, it likely won't be sent by the device to start with though. Also, in IBSS mode, BT coexistence isn't as fully-featured and we must use a single antenna only. So instead of peppering the code with new checks, simply pretend we are in high BT traffic load, which has the needed effect of disabling antenna B use. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
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)