1. 26 Jul, 2010 10 commits
    • John W. Linville's avatar
      minstrel_ht: remove unnecessary NULL check in minstrel_ht_update_caps · 00fc90c8
      John W. Linville authored
      If sta is NULL, we will have problems long before we get here...
      Reported-by: default avatarDan Carpenter <error27@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      Cc: Felix Fietkau <nbd@openwrt.org>
      00fc90c8
    • John W. Linville's avatar
      iwlwifi: assume vif is NULL for internal scans and non-NULL otherwise · a6e492b9
      John W. Linville authored
      The current practice of checking vif for NULL in one place but not
      another seems to confuse some static checkers, smatch in particular.
      Since vif will only be NULL in the case of internal scans, adjust the
      checks accordingly.
      Reported-by: default avatarDan Carpenter <error27@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      a6e492b9
    • John W. Linville's avatar
      MAINTAINERS: remove entry for wavelan · 6cb8755b
      John W. Linville authored
      The driver is already removed from drivers/staging.  The wireless
      extensions part is not really valid anymore either, since wext got moved
      and refactored, etc.
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      6cb8755b
    • John W. Linville's avatar
    • John W. Linville's avatar
    • John W. Linville's avatar
      MAINTAINERS: mark prism54 obsolete · 1d89cae1
      John W. Linville authored
      The prism54 driver had an entry in feature-removal-schedule.txt and it
      sees very little activity other than API-change "bombing runs".  The
      mac80211-based p54 driver should be used instead.
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      1d89cae1
    • John W. Linville's avatar
      rtl8180: silence "dubious: x | !y" sparse warning · 28eb3e5a
      John W. Linville authored
        CHECK   drivers/net/wireless/rtl818x/rtl8180_rtl8225.c
      drivers/net/wireless/rtl818x/rtl8180_rtl8225.c:53:33: warning: dubious: x | !y
      
      The existing code is clever and works fine, but it's not worth even a
      single line of Sparse warning SPAM...
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      28eb3e5a
    • John W. Linville's avatar
      rtl8180: improve signal reporting for actual rtl8180 hardware · 8b73fb8e
      John W. Linville authored
      Adapted from Realtek-provided driver...
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      Tested-by: default avatarPauli Nieminen <suokkos@gmail.com>
      8b73fb8e
    • John W. Linville's avatar
      wl1251: fix sparse-generated warnings · 1ab36d68
      John W. Linville authored
        CHECK   drivers/net/wireless/wl12xx/wl1251_tx.c
      drivers/net/wireless/wl12xx/wl1251_tx.c:118:32: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/wl12xx/wl1251_tx.c:118:32:    expected unsigned short [unsigned] [usertype] frag_threshold
      drivers/net/wireless/wl12xx/wl1251_tx.c:118:32:    got restricted __le16 [usertype] <noident>
      drivers/net/wireless/wl12xx/wl1251_tx.c:164:24: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/wl12xx/wl1251_tx.c:164:24:    expected unsigned short [unsigned] [usertype] length
      drivers/net/wireless/wl12xx/wl1251_tx.c:164:24:    got restricted __le16 [usertype] <noident>
      drivers/net/wireless/wl12xx/wl1251_tx.c:166:22: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/wl12xx/wl1251_tx.c:166:22:    expected unsigned short [unsigned] [usertype] rate
      drivers/net/wireless/wl12xx/wl1251_tx.c:166:22:    got restricted __le16 [usertype] <noident>
      drivers/net/wireless/wl12xx/wl1251_tx.c:167:29: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/wl12xx/wl1251_tx.c:167:29:    expected unsigned int [unsigned] [usertype] expiry_time
      drivers/net/wireless/wl12xx/wl1251_tx.c:167:29:    got restricted __le32 [usertype] <noident>
      drivers/net/wireless/wl12xx/wl1251_tx.c:200:43: warning: incorrect type in argument 1 (different base types)
      drivers/net/wireless/wl12xx/wl1251_tx.c:200:43:    expected restricted __le16 [usertype] fc
      drivers/net/wireless/wl12xx/wl1251_tx.c:200:43:    got unsigned short [unsigned] [assigned] [usertype] fc
        CHECK   drivers/net/wireless/wl12xx/wl1251_cmd.c
      drivers/net/wireless/wl12xx/wl1251_cmd.c:428:39: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/wl12xx/wl1251_cmd.c:428:39:    expected unsigned int [unsigned] [usertype] rx_config_options
      drivers/net/wireless/wl12xx/wl1251_cmd.c:428:39:    got restricted __le32 [usertype] <noident>
      drivers/net/wireless/wl12xx/wl1251_cmd.c:429:39: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/wl12xx/wl1251_cmd.c:429:39:    expected unsigned int [unsigned] [usertype] rx_filter_options
      drivers/net/wireless/wl12xx/wl1251_cmd.c:429:39:    got restricted __le32 [usertype] <noident>
      drivers/net/wireless/wl12xx/wl1251_cmd.c:435:29: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/wl12xx/wl1251_cmd.c:435:29:    expected unsigned short [unsigned] [usertype] tx_rate
      drivers/net/wireless/wl12xx/wl1251_cmd.c:435:29:    got restricted __le16 [usertype] <noident>
      drivers/net/wireless/wl12xx/wl1251_cmd.c:439:47: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/wl12xx/wl1251_cmd.c:439:47:    expected unsigned int [unsigned] [usertype] min_duration
      drivers/net/wireless/wl12xx/wl1251_cmd.c:439:47:    got restricted __le32 [usertype] <noident>
      drivers/net/wireless/wl12xx/wl1251_cmd.c:441:47: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/wl12xx/wl1251_cmd.c:441:47:    expected unsigned int [unsigned] [usertype] max_duration
      drivers/net/wireless/wl12xx/wl1251_cmd.c:441:47:    got restricted __le32 [usertype] <noident>
        CHECK   drivers/net/wireless/wl12xx/wl1251_boot.c
      drivers/net/wireless/wl12xx/wl1251_boot.c:228:22: warning: symbol 'interrupt' shadows an earlier one
      /home/linville/git/wireless-next-2.6/arch/x86/include/asm/hw_irq.h:132:13: originally declared here
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      1ab36d68
    • John W. Linville's avatar
      iwlagn: use __packed on new structure definitions · da22f795
      John W. Linville authored
      "iwlagn: add statistic notification structure for WiFi/BT devices" added
      several new '__attribute__ ((packed))' lines.  Change them to the
      generic __packed.
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      da22f795
  2. 23 Jul, 2010 10 commits
  3. 21 Jul, 2010 6 commits
    • Johannes Berg's avatar
      mac80211: proper IBSS locking · 7a17a33c
      Johannes Berg authored
      IBSS has never had locking, instead relying on some
      memory barriers etc. That's hard to get right, and
      I think we had it wrong too until the previous patch.
      Since this is not performance sensitive, it doesn't
      make sense to have the maintenance overhead of that,
      so add proper locking.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      7a17a33c
    • Johannes Berg's avatar
      mac80211: fix IBSS lockdep complaint · bc05d19f
      Johannes Berg authored
      Bob reported a lockdep complaint originating in
      the mac80211 IBSS code due to the common work
      struct patch. The reason is that the IBSS and
      station mode code have different locking orders
      for the cfg80211 wdev lock and the work struct
      (where "locking" implies running/canceling).
      
      Fix this by simply not canceling the work in
      the IBSS code, it is not necessary since when
      the REQ_RUN bit is cleared, the work will run
      without effect if it runs. When the interface
      is set down, it is flushed anyway, so there's
      no concern about it running after memory has
      been invalidated either.
      
      This fixes
      https://bugzilla.kernel.org/show_bug.cgi?id=16419
      
      Additionally, looking into this I noticed that
      there's a small window while the IBSS is torn
      down in which the work may be rescheduled and
      the REQ_RUN bit be set again after leave() has
      cleared it when a scan finishes at exactly the
      same time. Avoid that by setting the ssid_len
      to zero before clearing REQ_RUN which signals
      to the scan finish code that this interface is
      not active.
      Reported-by: default avatarBob Copeland <me@bobcopeland.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      bc05d19f
    • Johannes Berg's avatar
      mac80211: refuse shared key auth when WEP is unavailable · 9dca9c49
      Johannes Berg authored
      When WEP is not available, we should reject shared
      key authentication because it could never succeed.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      9dca9c49
    • Maxime Bizon's avatar
      cfg80211: fix race between sysfs and cfg80211 · 5a652052
      Maxime Bizon authored
      device_add() is called before adding the phy to the cfg80211 device
      list.
      
      So if a userspace program uses sysfs uevents to detect new phy
      devices, and queries nl80211 to get phy info, it can get ENODEV even
      though the phy exists in sysfs.
      
      An easy workaround is to hold the cfg80211 mutex until the phy is
      present in sysfs/cfg80211/debugfs.
      Signed-off-by: default avatarMaxime Bizon <mbizon@freebox.fr>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      5a652052
    • Larry Finger's avatar
      b43: silence phy_n sparse warnings · acd82aa8
      Larry Finger authored
      drivers/net/wireless/b43/phy_n.c:512:53: warning: cast truncates bits from constant value (ffff0fff becomes fff)
      drivers/net/wireless/b43/phy_n.c:765:66: warning: cast truncates bits from constant value (ffff7fff becomes 7fff)
      drivers/net/wireless/b43/phy_n.c:1012:38: warning: cast truncates bits from constant value (ffff00ff becomes ff)
      drivers/net/wireless/b43/phy_n.c:1119:38: warning: cast truncates bits from constant value (ffff0fff becomes fff)
      drivers/net/wireless/b43/phy_n.c:2458:56: warning: cast truncates bits from constant value (ffff7fff becomes 7fff)
      drivers/net/wireless/b43/phy_n.c:2933:38: warning: cast truncates bits from constant value (ffff0fff becomes fff)
      drivers/net/wireless/b43/phy_n.c:3294:57: warning: cast truncates bits from constant value (ffff3fff becomes 3fff)
      Signed-off-by: default avatarLarry Finger <Larry.Finger@lwfinger.net>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      acd82aa8
    • John W. Linville's avatar
      b43: silence most sparse warnings · 41950bdf
      John W. Linville authored
        CHECK   drivers/net/wireless/b43/main.c
      drivers/net/wireless/b43/main.c:111:5: warning: symbol 'b43_modparam_pio' was not declared. Should it be static?
        CHECK   drivers/net/wireless/b43/phy_g.c
      drivers/net/wireless/b43/phy_g.c:975:56: warning: cast truncates bits from constant value (ffff7fff becomes 7fff)
        CHECK   drivers/net/wireless/b43/phy_lp.c
      drivers/net/wireless/b43/phy_lp.c:2701:6: warning: symbol 'b43_lpphy_op_switch_analog' was not declared. Should it be static?
      drivers/net/wireless/b43/phy_lp.c:1148:30: warning: cast truncates bits from constant value (ffff1fff becomes 1fff)
      drivers/net/wireless/b43/phy_lp.c:1525:30: warning: cast truncates bits from constant value (ffff1fff becomes 1fff)
      drivers/net/wireless/b43/phy_lp.c:1529:30: warning: cast truncates bits from constant value (ffff1fff becomes 1fff)
        CHECK   drivers/net/wireless/b43/wa.c
      drivers/net/wireless/b43/wa.c:385:60: warning: cast truncates bits from constant value (ffff00ff becomes ff)
      drivers/net/wireless/b43/wa.c:403:55: warning: cast truncates bits from constant value (ffff00ff becomes ff)
      drivers/net/wireless/b43/wa.c:405:55: warning: cast truncates bits from constant value (ffff00ff becomes ff)
      drivers/net/wireless/b43/wa.c:415:71: warning: cast truncates bits from constant value (ffff0fff becomes fff)
      
      AFAICT, none of these amount to real bugs.  But this reduces warning
      spam from sparse w/o significantly affecting readability of the code (IMHO).
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      41950bdf
  4. 20 Jul, 2010 14 commits
    • John W. Linville's avatar
      rtl8180: improve signal reporting for rtl8185 hardware · 8b74964c
      John W. Linville authored
      The existing code seemed to be somewhat based on the datasheet, but
      varied substantially from the vendor-provided driver.  This mirrors the
      handling of the rtl8185 case from that driver, but still neglects the
      specifics for the rtl8180 hardware.  Those details are a bit muddled...
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      8b74964c
    • John W. Linville's avatar
      mwl8k: correct/silence sparse warnings · b603742f
      John W. Linville authored
      drivers/net/wireless/mwl8k.c:1541:21: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/mwl8k.c:1541:21:    expected restricted __le16 [usertype] result
      drivers/net/wireless/mwl8k.c:1541:21:    got int
      drivers/net/wireless/mwl8k.c:1575:42:    expected unsigned short [unsigned] [usertype] cmd
      drivers/net/wireless/mwl8k.c:1575:42:    got restricted __le16 [usertype] code
      drivers/net/wireless/mwl8k.c:1587:50: warning: incorrect type in argument 1 (different base types)
      drivers/net/wireless/mwl8k.c:1587:50:    expected unsigned short [unsigned] [usertype] cmd
      drivers/net/wireless/mwl8k.c:1587:50:    got restricted __le16 [usertype] code
      drivers/net/wireless/mwl8k.c:1592:50: warning: incorrect type in argument 1 (different base types)
      drivers/net/wireless/mwl8k.c:1592:50:    expected unsigned short [unsigned] [usertype] cmd
      drivers/net/wireless/mwl8k.c:1592:50:    got restricted __le16 [usertype] code
      drivers/net/wireless/mwl8k.c:1845:27: warning: incorrect type in argument 1 (different base types)
      drivers/net/wireless/mwl8k.c:1845:27:    expected unsigned int [unsigned] [usertype] <noident>
      drivers/net/wireless/mwl8k.c:1845:27:    got restricted __le32 [usertype] <noident>
      drivers/net/wireless/mwl8k.c:1848:27: warning: incorrect type in argument 1 (different base types)
      drivers/net/wireless/mwl8k.c:1848:27:    expected unsigned int [unsigned] [usertype] <noident>
      drivers/net/wireless/mwl8k.c:1848:27:    got restricted __le32 [usertype] <noident>
      drivers/net/wireless/mwl8k.c:1851:27: warning: incorrect type in argument 1 (different base types)
      drivers/net/wireless/mwl8k.c:1851:27:    expected unsigned int [unsigned] [usertype] <noident>
      drivers/net/wireless/mwl8k.c:1851:27:    got restricted __le32 [usertype] <noident>
      drivers/net/wireless/mwl8k.c:1854:27: warning: incorrect type in argument 1 (different base types)
      drivers/net/wireless/mwl8k.c:1854:27:    expected unsigned int [unsigned] [usertype] <noident>
      drivers/net/wireless/mwl8k.c:1854:27:    got restricted __le32 [usertype] <noident>
      drivers/net/wireless/mwl8k.c:1857:27: warning: incorrect type in argument 1 (different base types)
      drivers/net/wireless/mwl8k.c:1857:27:    expected unsigned int [unsigned] [usertype] <noident>
      drivers/net/wireless/mwl8k.c:1857:27:    got restricted __le32 [usertype] <noident>
      drivers/net/wireless/mwl8k.c:1860:27: warning: incorrect type in argument 1 (different base types)
      drivers/net/wireless/mwl8k.c:1860:27:    expected unsigned int [unsigned] [usertype] <noident>
      drivers/net/wireless/mwl8k.c:1860:27:    got restricted __le32 [usertype] <noident>
      drivers/net/wireless/mwl8k.c:3055:20: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/mwl8k.c:3055:20:    expected restricted __le16 [usertype] ht_caps
      drivers/net/wireless/mwl8k.c:3055:20:    got unsigned short [unsigned] [usertype] cap
      
      At least the last one looks like a real bug...
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      Acked-by: default avatarLennert Buytenhek <buytenh@wantstofly.org>
      b603742f
    • John W. Linville's avatar
      wireless: remove unnecessary reg_same_country_ie_hint · 34782e9e
      John W. Linville authored
      "Might as well remove  reg_same_country_ie_hint() completely since we
      already dealt with suspend/resume through the regulatory hint
      disconnect." -- Luis
      Reported-by: default avatarLuis R. Rodriguez <mcgrof@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      34782e9e
    • John W. Linville's avatar
      rt2x00: correct sparse warning in rt2x00debug.c · 16124541
      John W. Linville authored
        CHECK   drivers/net/wireless/rt2x00/rt2x00debug.c
      drivers/net/wireless/rt2x00/rt2x00debug.c:193:28: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/rt2x00/rt2x00debug.c:193:28:    expected restricted __le32 [usertype] chip_rev
      drivers/net/wireless/rt2x00/rt2x00debug.c:193:28:    got restricted __le16 [usertype] <noident>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      Acked-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
      16124541
    • John W. Linville's avatar
      libipw: correct sparse warnings and mark some variables static · cc40cc56
      John W. Linville authored
        CHECK   drivers/net/wireless/ipw2x00/libipw_module.c
      drivers/net/wireless/ipw2x00/libipw_module.c:65:21: warning: symbol 'libipw_config_ops' was not declared. Should it be static?
      drivers/net/wireless/ipw2x00/libipw_module.c:66:6: warning: symbol 'libipw_wiphy_privid' was not declared. Should it be static?
        CHECK   drivers/net/wireless/ipw2x00/libipw_wx.c
      drivers/net/wireless/ipw2x00/libipw_wx.c:415:17: warning: symbol 'ssid' shadows an earlier one
      drivers/net/wireless/ipw2x00/libipw_wx.c:324:9: originally declared here
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      cc40cc56
    • John W. Linville's avatar
      ipw2100: mark ipw2100_pm_qos_req static · d267be30
      John W. Linville authored
        CHECK   drivers/net/wireless/ipw2x00/ipw2100.c
      drivers/net/wireless/ipw2x00/ipw2100.c:177:28: warning: symbol 'ipw2100_pm_qos_req' was not declared. Should it be static?
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      d267be30
    • John W. Linville's avatar
      ath9k: correct sparse identified endian bug in ath_paprd_calibrate · a3d3da14
      John W. Linville authored
      drivers/net/wireless/ath/ath9k/main.c:282:26: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/ath/ath9k/main.c:282:26:    expected restricted __le16 [usertype] duration_id
      drivers/net/wireless/ath/ath9k/main.c:282:26:    got int
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      a3d3da14
    • John W. Linville's avatar
      wireless: mark cfg80211_is_all_idle as static · 20925fee
      John W. Linville authored
        CHECK   net/wireless/sme.c
      net/wireless/sme.c:38:6: warning: symbol 'cfg80211_is_all_idle' was not declared. Should it be static?
      
      It is not used elsewhere, so mark it static.
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      20925fee
    • John W. Linville's avatar
      wireless: correct sparse warning in generated regdb.c · 2ea6fb6d
      John W. Linville authored
        CHECK   net/wireless/regdb.c
      net/wireless/regdb.c:8:34: warning: symbol 'reg_regdb' was not declared.  Should it be static?
      net/wireless/regdb.c:11:5: warning: symbol 'reg_regdb_size' was not declared. Should it be static?
      
      Simply include the also generated regdb.h.
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      2ea6fb6d
    • John W. Linville's avatar
      wireless: correct sparse warning in wext-compat.c · c28991a0
      John W. Linville authored
        CHECK   net/wireless/wext-compat.c
      net/wireless/wext-compat.c:1434:5: warning: symbol 'cfg80211_wext_siwpmksa' was not declared. Should it be static?
      
      Add declaration in cfg80211.h.  Also add an EXPORT_SYMBOL_GPL, since all
      the peer functions have it.
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      c28991a0
    • John W. Linville's avatar
      wireless: correct sparse warning in lib80211_crypt_tkip.c · 3f6ff6ba
      John W. Linville authored
        CHECK   net/wireless/lib80211_crypt_tkip.c
      net/wireless/lib80211_crypt_tkip.c:581:27: warning: cast to restricted __le16
      
      Caused by dereferencing a "u8 *" and passing it to le16_to_cpu...
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      3f6ff6ba
    • John W. Linville's avatar
      wireless: only use alpha2 regulatory information from country IE · 4f366c5d
      John W. Linville authored
      The meaning and/or usage of the country IE is somewhat poorly defined.
      In practice, this means that regulatory rulesets in a country IE are
      often incomplete and might be untrustworthy.  This removes the code
      associated with interpreting those rulesets while preserving respect
      for country "alpha2" codes also contained in the country IE.
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      4f366c5d
    • David Gnedt's avatar
      mac80211: set carrier on for monitor interfaces on ieee80211_open · 53e9b1de
      David Gnedt authored
      If a station interface is reused as monitor interface it is possible that
      the carrier is still set to off. This breaks packet injection on that
      monitor interface.
      Force the carrier on in monitor interface initialisation like it is also done
      for other interface types (e.g. adhoc, mesh point, ap).
      Signed-off-by: default avatarDavid Gnedt <david.gnedt@davizone.at>
      Acked-by: default avatarJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      53e9b1de
    • Johannes Berg's avatar
      mac80211: move QoS-enable to BSS info · 4ced3f74
      Johannes Berg authored
      Ever since
      
      commit e1b3ec1a
      Author: Stanislaw Gruszka <sgruszka@redhat.com>
      Date:   Mon Mar 29 12:18:34 2010 +0200
      
          mac80211: explicitly disable/enable QoS
      
      mac80211 is telling drivers, in particular
      iwlwifi, whether QoS is enabled or not.
      
      However, this is only relevant for station mode,
      since only then will any device send nullfunc
      frames and need to know whether they should be
      QoS frames or not. In other modes, there are
      (currently) no frames the device is supposed to
      send.
      
      When you now consider virtual interfaces, it
      becomes apparent that the current mechanism is
      inadequate since it enables/disables QoS on a
      global scale, where for nullfunc frames it has
      to be on a per-interface scale.
      
      Due to the above considerations, we can change
      the way mac80211 advertises the QoS state to
      drivers to only ever advertise it as "off" in
      station mode, and make it a per-BSS setting.
      Tested-by: default avatarStanislaw Gruszka <sgruszka@redhat.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      4ced3f74