diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl3945-base.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl3945-base.c | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c index 44f983b6d39b..8acda640df25 100644 --- a/drivers/net/wireless/iwlwifi/iwl3945-base.c +++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c | |||
@@ -6870,7 +6870,7 @@ static void iwl_bg_scan_completed(struct work_struct *work) | |||
6870 | * | 6870 | * |
6871 | *****************************************************************************/ | 6871 | *****************************************************************************/ |
6872 | 6872 | ||
6873 | static int iwl_mac_open(struct ieee80211_hw *hw) | 6873 | static int iwl_mac_start(struct ieee80211_hw *hw) |
6874 | { | 6874 | { |
6875 | struct iwl_priv *priv = hw->priv; | 6875 | struct iwl_priv *priv = hw->priv; |
6876 | 6876 | ||
@@ -6889,7 +6889,7 @@ static int iwl_mac_open(struct ieee80211_hw *hw) | |||
6889 | return 0; | 6889 | return 0; |
6890 | } | 6890 | } |
6891 | 6891 | ||
6892 | static int iwl_mac_stop(struct ieee80211_hw *hw) | 6892 | static void iwl_mac_stop(struct ieee80211_hw *hw) |
6893 | { | 6893 | { |
6894 | struct iwl_priv *priv = hw->priv; | 6894 | struct iwl_priv *priv = hw->priv; |
6895 | 6895 | ||
@@ -6898,8 +6898,6 @@ static int iwl_mac_stop(struct ieee80211_hw *hw) | |||
6898 | /*netif_stop_queue(dev); */ | 6898 | /*netif_stop_queue(dev); */ |
6899 | flush_workqueue(priv->workqueue); | 6899 | flush_workqueue(priv->workqueue); |
6900 | IWL_DEBUG_MAC80211("leave\n"); | 6900 | IWL_DEBUG_MAC80211("leave\n"); |
6901 | |||
6902 | return 0; | ||
6903 | } | 6901 | } |
6904 | 6902 | ||
6905 | static int iwl_mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb, | 6903 | static int iwl_mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb, |
@@ -7115,6 +7113,8 @@ static int iwl_mac_config_interface(struct ieee80211_hw *hw, int if_id, | |||
7115 | if (conf == NULL) | 7113 | if (conf == NULL) |
7116 | return -EIO; | 7114 | return -EIO; |
7117 | 7115 | ||
7116 | /* XXX: this MUST use conf->mac_addr */ | ||
7117 | |||
7118 | if ((priv->iw_mode == IEEE80211_IF_TYPE_AP) && | 7118 | if ((priv->iw_mode == IEEE80211_IF_TYPE_AP) && |
7119 | (!conf->beacon || !conf->ssid_len)) { | 7119 | (!conf->beacon || !conf->ssid_len)) { |
7120 | IWL_DEBUG_MAC80211 | 7120 | IWL_DEBUG_MAC80211 |
@@ -7129,8 +7129,13 @@ static int iwl_mac_config_interface(struct ieee80211_hw *hw, int if_id, | |||
7129 | IWL_DEBUG_MAC80211("bssid: %s\n", | 7129 | IWL_DEBUG_MAC80211("bssid: %s\n", |
7130 | print_mac(mac, conf->bssid)); | 7130 | print_mac(mac, conf->bssid)); |
7131 | 7131 | ||
7132 | /* | ||
7133 | * very dubious code was here; the probe filtering flag is never set: | ||
7134 | * | ||
7132 | if (unlikely(test_bit(STATUS_SCANNING, &priv->status)) && | 7135 | if (unlikely(test_bit(STATUS_SCANNING, &priv->status)) && |
7133 | !(priv->hw->flags & IEEE80211_HW_NO_PROBE_FILTERING)) { | 7136 | !(priv->hw->flags & IEEE80211_HW_NO_PROBE_FILTERING)) { |
7137 | */ | ||
7138 | if (unlikely(test_bit(STATUS_SCANNING, &priv->status))) { | ||
7134 | IWL_DEBUG_MAC80211("leave - scanning\n"); | 7139 | IWL_DEBUG_MAC80211("leave - scanning\n"); |
7135 | mutex_unlock(&priv->mutex); | 7140 | mutex_unlock(&priv->mutex); |
7136 | return 0; | 7141 | return 0; |
@@ -7205,6 +7210,18 @@ static int iwl_mac_config_interface(struct ieee80211_hw *hw, int if_id, | |||
7205 | return 0; | 7210 | return 0; |
7206 | } | 7211 | } |
7207 | 7212 | ||
7213 | static void iwl_configure_filter(struct ieee80211_hw *hw, | ||
7214 | unsigned int changed_flags, | ||
7215 | unsigned int *total_flags, | ||
7216 | int mc_count, struct dev_addr_list *mc_list) | ||
7217 | { | ||
7218 | /* | ||
7219 | * XXX: dummy | ||
7220 | * see also iwl_connection_init_rx_config | ||
7221 | */ | ||
7222 | *total_flags = 0; | ||
7223 | } | ||
7224 | |||
7208 | static void iwl_mac_remove_interface(struct ieee80211_hw *hw, | 7225 | static void iwl_mac_remove_interface(struct ieee80211_hw *hw, |
7209 | struct ieee80211_if_init_conf *conf) | 7226 | struct ieee80211_if_init_conf *conf) |
7210 | { | 7227 | { |
@@ -8265,12 +8282,13 @@ static struct attribute_group iwl_attribute_group = { | |||
8265 | 8282 | ||
8266 | static struct ieee80211_ops iwl_hw_ops = { | 8283 | static struct ieee80211_ops iwl_hw_ops = { |
8267 | .tx = iwl_mac_tx, | 8284 | .tx = iwl_mac_tx, |
8268 | .open = iwl_mac_open, | 8285 | .start = iwl_mac_start, |
8269 | .stop = iwl_mac_stop, | 8286 | .stop = iwl_mac_stop, |
8270 | .add_interface = iwl_mac_add_interface, | 8287 | .add_interface = iwl_mac_add_interface, |
8271 | .remove_interface = iwl_mac_remove_interface, | 8288 | .remove_interface = iwl_mac_remove_interface, |
8272 | .config = iwl_mac_config, | 8289 | .config = iwl_mac_config, |
8273 | .config_interface = iwl_mac_config_interface, | 8290 | .config_interface = iwl_mac_config_interface, |
8291 | .configure_filter = iwl_configure_filter, | ||
8274 | .set_key = iwl_mac_set_key, | 8292 | .set_key = iwl_mac_set_key, |
8275 | .get_stats = iwl_mac_get_stats, | 8293 | .get_stats = iwl_mac_get_stats, |
8276 | .get_tx_stats = iwl_mac_get_tx_stats, | 8294 | .get_tx_stats = iwl_mac_get_tx_stats, |