1. 21 Jul, 2010 5 commits
    • 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
  2. 20 Jul, 2010 15 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
    • Felix Fietkau's avatar
      mac80211: fix aggregation action frame handling with AP VLANs · 875ae5f6
      Felix Fietkau authored
      
      
      When aggregation related action frames are enqueued for further work,
      and they originate from a STA that is part of an AP VLAN, they are
      currently enqueued for the AP interface. This breaks the sta_info_get()
      lookup in the actual work function, and because of that, aggregation
      sessions are not established for this STA.
      
      Fix this by replacing the sta_info_get call with a call to
      sta_info_get_bss.
      Signed-off-by: default avatarFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      875ae5f6
  3. 17 Jul, 2010 3 commits
  4. 16 Jul, 2010 5 commits
  5. 14 Jul, 2010 12 commits