| Index: chromeos/compat-wireless/drivers/net/wireless/iwlwifi/iwl3945-base.c
|
| diff --git a/chromeos/compat-wireless/drivers/net/wireless/iwlwifi/iwl3945-base.c b/chromeos/compat-wireless/drivers/net/wireless/iwlwifi/iwl3945-base.c
|
| index 70c4b8fba0ee89093c56c056e7152b927da5a37c..d31661c1ce778259996b5428f9cff95b87f1a3db 100644
|
| --- a/chromeos/compat-wireless/drivers/net/wireless/iwlwifi/iwl3945-base.c
|
| +++ b/chromeos/compat-wireless/drivers/net/wireless/iwlwifi/iwl3945-base.c
|
| @@ -3018,7 +3018,7 @@ void iwl3945_request_scan(struct iwl_priv *priv, struct ieee80211_vif *vif)
|
| clear_bit(STATUS_SCANNING, &priv->status);
|
|
|
| /* inform mac80211 scan aborted */
|
| - queue_work(priv->workqueue, &priv->scan_completed);
|
| + queue_work(priv->workqueue, &priv->abort_scan);
|
| }
|
|
|
| static void iwl3945_bg_restart(struct work_struct *data)
|
| @@ -3391,6 +3391,55 @@ static int iwl3945_mac_sta_add(struct ieee80211_hw *hw,
|
|
|
| return 0;
|
| }
|
| +
|
| +static void iwl3945_configure_filter(struct ieee80211_hw *hw,
|
| + unsigned int changed_flags,
|
| + unsigned int *total_flags,
|
| + u64 multicast)
|
| +{
|
| + struct iwl_priv *priv = hw->priv;
|
| + __le32 filter_or = 0, filter_nand = 0;
|
| +
|
| +#define CHK(test, flag) do { \
|
| + if (*total_flags & (test)) \
|
| + filter_or |= (flag); \
|
| + else \
|
| + filter_nand |= (flag); \
|
| + } while (0)
|
| +
|
| + IWL_DEBUG_MAC80211(priv, "Enter: changed: 0x%x, total: 0x%x\n",
|
| + changed_flags, *total_flags);
|
| +
|
| + CHK(FIF_OTHER_BSS | FIF_PROMISC_IN_BSS, RXON_FILTER_PROMISC_MSK);
|
| + CHK(FIF_CONTROL, RXON_FILTER_CTL2HOST_MSK);
|
| + CHK(FIF_BCN_PRBRESP_PROMISC, RXON_FILTER_BCON_AWARE_MSK);
|
| +
|
| +#undef CHK
|
| +
|
| + mutex_lock(&priv->mutex);
|
| +
|
| + priv->staging_rxon.filter_flags &= ~filter_nand;
|
| + priv->staging_rxon.filter_flags |= filter_or;
|
| +
|
| + /*
|
| + * Committing directly here breaks for some reason,
|
| + * but we'll eventually commit the filter flags
|
| + * change anyway.
|
| + */
|
| +
|
| + mutex_unlock(&priv->mutex);
|
| +
|
| + /*
|
| + * Receiving all multicast frames is always enabled by the
|
| + * default flags setup in iwl_connection_init_rx_config()
|
| + * since we currently do not support programming multicast
|
| + * filters into the device.
|
| + */
|
| + *total_flags &= FIF_OTHER_BSS | FIF_ALLMULTI | FIF_PROMISC_IN_BSS |
|
| + FIF_BCN_PRBRESP_PROMISC | FIF_CONTROL;
|
| +}
|
| +
|
| +
|
| /*****************************************************************************
|
| *
|
| * sysfs attributes
|
| @@ -3796,7 +3845,7 @@ static struct ieee80211_ops iwl3945_hw_ops = {
|
| .add_interface = iwl_mac_add_interface,
|
| .remove_interface = iwl_mac_remove_interface,
|
| .config = iwl_mac_config,
|
| - .configure_filter = iwl_configure_filter,
|
| + .configure_filter = iwl3945_configure_filter,
|
| .set_key = iwl3945_mac_set_key,
|
| .conf_tx = iwl_mac_conf_tx,
|
| .reset_tsf = iwl_mac_reset_tsf,
|
|
|