Merge tag 'for-linville-20130318' of git://github.com/kvalo/ath6kl
authorJohn W. Linville <linville@tuxdriver.com>
Mon, 18 Mar 2013 20:34:55 +0000 (16:34 -0400)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 18 Mar 2013 20:34:55 +0000 (16:34 -0400)
1  2 
drivers/net/wireless/ath/ath6kl/Kconfig
drivers/net/wireless/ath/ath6kl/cfg80211.c

@@@ -18,6 -18,7 +18,6 @@@ config ATH6KL_US
        depends on ATH6KL
        depends on USB
        depends on CFG80211
 -      depends on EXPERIMENTAL
        ---help---
          This module adds support for wireless adapters based on
          Atheros AR6004 chipset running over USB. This is still under
@@@ -30,6 -31,15 +30,15 @@@ config ATH6KL_DEBU
        ---help---
          Enables debug support
  
+ config ATH6KL_TRACING
+       bool "Atheros ath6kl tracing support"
+       depends on ATH6KL
+       depends on EVENT_TRACING
+       ---help---
+         Select this to ath6kl use tracing infrastructure.
+         If unsure, say Y to make it easier to debug problems.
  config ATH6KL_REGDOMAIN
        bool "Atheros ath6kl regdomain support"
        depends on ATH6KL
@@@ -402,7 -402,7 +402,7 @@@ static bool ath6kl_is_valid_iftype(stru
        if (type == NL80211_IFTYPE_STATION ||
            type == NL80211_IFTYPE_AP || type == NL80211_IFTYPE_ADHOC) {
                for (i = 0; i < ar->vif_max; i++) {
-                       if ((ar->avail_idx_map >> i) & BIT(0)) {
+                       if ((ar->avail_idx_map) & BIT(i)) {
                                *if_idx = i;
                                return true;
                        }
        if (type == NL80211_IFTYPE_P2P_CLIENT ||
            type == NL80211_IFTYPE_P2P_GO) {
                for (i = ar->max_norm_iface; i < ar->vif_max; i++) {
-                       if ((ar->avail_idx_map >> i) & BIT(0)) {
+                       if ((ar->avail_idx_map) & BIT(i)) {
                                *if_idx = i;
                                return true;
                        }
@@@ -1535,7 -1535,9 +1535,9 @@@ static int ath6kl_cfg80211_del_iface(st
  
        ath6kl_cfg80211_vif_stop(vif, test_bit(WMI_READY, &ar->flag));
  
+       rtnl_lock();
        ath6kl_cfg80211_vif_cleanup(vif);
+       rtnl_unlock();
  
        return 0;
  }
@@@ -2990,15 -2992,13 +2992,15 @@@ static int ath6kl_change_station(struc
  {
        struct ath6kl *ar = ath6kl_priv(dev);
        struct ath6kl_vif *vif = netdev_priv(dev);
 +      int err;
  
        if (vif->nw_type != AP_NETWORK)
                return -EOPNOTSUPP;
  
 -      /* Use this only for authorizing/unauthorizing a station */
 -      if (!(params->sta_flags_mask & BIT(NL80211_STA_FLAG_AUTHORIZED)))
 -              return -EOPNOTSUPP;
 +      err = cfg80211_check_station_change(wiphy, params,
 +                                          CFG80211_STA_AP_MLME_CLIENT);
 +      if (err)
 +              return err;
  
        if (params->sta_flags_set & BIT(NL80211_STA_FLAG_AUTHORIZED))
                return ath6kl_wmi_ap_set_mlme(ar->wmi, vif->fw_vif_idx,
@@@ -3661,7 -3661,6 +3663,6 @@@ struct wireless_dev *ath6kl_interface_a
        vif->sme_state = SME_DISCONNECTED;
        set_bit(WLAN_ENABLED, &vif->flags);
        ar->wlan_pwr_state = WLAN_POWER_STATE_ON;
-       set_bit(NETDEV_REGISTERED, &vif->flags);
  
        if (type == NL80211_IFTYPE_ADHOC)
                ar->ibss_if_active = true;