diff options
author | Johannes Berg <johannes.berg@intel.com> | 2010-08-23 10:57:00 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-08-25 14:33:22 -0400 |
commit | 59079949faed96cc2756d5a59c185b304f1bc840 (patch) | |
tree | 2f9815c8e09ca02627adb8e4673344c2d247adf7 /drivers/net/wireless/iwlwifi/iwl-core.c | |
parent | a11741383ba6eef707b8330f0d3c1da6a7478ee3 (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.c | 21 |
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) |