1. 20 Aug, 2009 40 commits
    • Lennert Buytenhek's avatar
      mwl8k: fix firmware command serialisation · 618952a7
      Lennert Buytenhek authored
      The current mwl8k_priv->fw_lock spinlock doesn't actually protect
      against multiple commands being submitted at once, as it is not kept
      held over the entire firmware command submission.  And since waiting
      for command completion sleeps, we can't use a spinlock anyway.
      
      To fix mwl8k firmware command serialisation properly, we have the
      following requirements:
      - Some commands require that the packet transmit path is idle when
        the command is issued.  (For simplicity, we'll just quiesce the
        transmit path for every command.)
      - There are certain sequences of commands that need to be issued to
        the hardware sequentially, with no other intervening commands.
      
      This leads to an implementation of a "firmware lock" as a mutex that
      can be taken recursively, and which is taken by both the low-level
      command submission function (mwl8k_post_cmd) as well as any users of
      that function that require issuing of an atomic sequence of commands,
      and quiesces the transmit path whenever it's taken.
      Signed-off-by: default avatarLennert Buytenhek <buytenh@marvell.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      618952a7
    • Lennert Buytenhek's avatar
      mwl8k: mwl8k_queue_work() cleanup · 950d5b01
      Lennert Buytenhek authored
      Delete most of the mwl8k_work_struct fields and options, since most
      of them are unused or never changed from their defaults:
      - We always use priv->config_wq, so delete the wqueue argument from
        mwl8k_queue_work().
      - MWL8K_WQ_SPIN and MWL8K_WQ_POST_REQUEST are never used, as all
        callers sleep for request completion, so sleep unconditionally.
      - MWL8K_WQ_FREE_WORKSTRUCT is never used.
      - MWL8K_WQ_TX_WAIT_EMPTY is always set, so assume it unconditionally.
      - timeout_ms/txwait_attempts/tx_timeout_ms are never changed from
        their defaults, so just hardcode these in the workqueue worker.
      - step is never used.
      Signed-off-by: default avatarLennert Buytenhek <buytenh@marvell.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      950d5b01
    • Lennert Buytenhek's avatar
      mwl8k: mwl8k_txq_xmit() rework · 23b33906
      Lennert Buytenhek authored
      Various mwl8k_txq_xmit changes:
      - Extract the QoS field before adding the DMA header.
      - Only write to tx->status once, and only after all the other
        descriptor fields have been set.
      - Do all tx state manipulation under the tx spinlock.
      - Remove the priv->inconfig check, as all transmit queues will
        be frozen during config cycles, so we won't ever be asked to
        transmit if a config cycle is running.
      - Remove some more dead code.
      Signed-off-by: default avatarLennert Buytenhek <buytenh@marvell.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      23b33906
    • Lennert Buytenhek's avatar
      7595d67a
    • Lennert Buytenhek's avatar
    • Lennert Buytenhek's avatar
      mwl8k: don't hardcode the number of transmit queues · c3f967d3
      Lennert Buytenhek authored
      Use MWL8K_TX_QUEUES instead of a hardcoded "4" in a couple of places.
      Signed-off-by: default avatarLennert Buytenhek <buytenh@marvell.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      c3f967d3
    • Lennert Buytenhek's avatar
      mwl8k: don't touch 'command done' interrupt during firmware load · d4b70570
      Lennert Buytenhek authored
      Since firmware load commands don't generate 'command done' interrupts
      like normal commands do, polling for command done interrupts just
      unnecessarily slows down the firmware load process.  Removing this bit
      of code speeds up loading a typical firmware image from 840 msec to
      180 msec.
      Signed-off-by: default avatarLennert Buytenhek <buytenh@marvell.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      d4b70570
    • Lennert Buytenhek's avatar
      mwl8k: dma header manipulations can't fail · 76266b2a
      Lennert Buytenhek authored
      Adding and removing the DMA header that the mwl8k hardware requires
      on tx and provides on rx can never fail, since we are guaranteed to
      have enough headroom on the tx path to expand the packet, and we only
      ever shrink the packet on the rx path.  (And on both paths we are
      guaranteed to be the only user of the skb we are handling.)
      
      This allows removing all of the skb clone handling in the tx and tx
      reclaim paths, and eliminates error checks in both the tx and rx
      paths, simplifying the code a bit more.
      Signed-off-by: default avatarLennert Buytenhek <buytenh@marvell.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      76266b2a
    • Lennert Buytenhek's avatar
      mwl8k: ->add_interface() is not called for monitor interfaces · 240e86ef
      Lennert Buytenhek authored
      There is no need to check for NL80211_IFTYPE_MONITOR in
      ->add_interface(), as this function is never called for monitor
      interfaces.  Also, there is no need to advertise this bit in our
      wiphy's ->interface_modes.
      Signed-off-by: default avatarLennert Buytenhek <buytenh@marvell.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      240e86ef
    • Lennert Buytenhek's avatar
      mwl8k: fix mwl8k_configure_filter() parameter lifetime issue · e81cd2d6
      Lennert Buytenhek authored
      mwl8k_configure_filter() passes pointers to total_flags and the
      multicast address list to a workqueue function, while there is no
      guarantee that those pointers will still be valid by the time the
      workqueue function runs.
      
      Solve this by passing total_flags by value, and by passing an
      already built multicast address setup command packet to the workqueue
      function so that we don't have to look at the multicast address list
      itself outside of mwl8k_configure_filter().
      
      Also, since ->configure_filter() can sleep now, wait synchronously
      for the worker to finish.
      Signed-off-by: default avatarLennert Buytenhek <buytenh@marvell.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      e81cd2d6
    • Lennert Buytenhek's avatar
    • Lennert Buytenhek's avatar
      0439b1f5
    • Lennert Buytenhek's avatar
    • Lennert Buytenhek's avatar
      mwl8k: remove MWL8K_RADIO_* defines · c46563b7
      Lennert Buytenhek authored
      Instead of passing a flag bitmask to mwl8k_cmd_802_11_radio_control,
      pass the 'enable' and 'force' arguments as separate parameters, and
      introduce wrappers for the common cases of enabling and disabling
      without forcing.
      Signed-off-by: default avatarLennert Buytenhek <buytenh@marvell.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      c46563b7
    • Lennert Buytenhek's avatar
    • Lennert Buytenhek's avatar
    • Lennert Buytenhek's avatar
    • Lennert Buytenhek's avatar
    • Vasanthakumar Thiagarajan's avatar
      ath9k: Nuke struct ath9k_node_stats · 22e66a4c
      Vasanthakumar Thiagarajan authored
      Other than ns_avgbrssi (Average beacon rssi) no data of
      ath9k_node_stats is being used anywhere. Nuke this structure
      and move its only useful member to ar5416Anistate. Also cleanup
      this redundant data in ath_softc.
      Signed-off-by: default avatarVasanthakumar Thiagarajan <vasanth@atheros.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      22e66a4c
    • Vasanthakumar Thiagarajan's avatar
      ath9k: Fix bug in retrieving average beacon rssi · ff360416
      Vasanthakumar Thiagarajan authored
      Currently the beacon rssi that LPF gives is divided and rounded
      up by ATH_RSSI_EP_MULTIPLIER twice. This will leave the incorrect rssi
      in ANI. Having correct rssi in ANI fixes the connection stability at
      < 30dB rssi range. This patch removes the unncessary computation of average
      rssi over already valid average rssi. Also removes the redundant macros to
      find average rssi.
      Signed-off-by: default avatarVasanthakumar Thiagarajan <vasanth@atheros.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      ff360416
    • gregor kowski's avatar
      b43: add hardware tkip · 035d0243
      gregor kowski authored
      This add hardware tkip for b43.
      Signed-off-by: default avatarGregor Kowski <gregor.kowski@gmail.com>
      Acked-by: default avatarMichael Buesch <mb@bu3sch.de>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      035d0243
    • Johannes Berg's avatar
      mac80211: fix register_hw error path · 11ba964d
      Johannes Berg authored
      "cfg80211: fix alignment problem in scan request"
      introduced a bug into the error path, because now
      we allocate the entire scan request and not just
      the channel list (the channel list is allocated
      together with the scan request) -- on errors we
      thus also need to free the entire scan request.
      Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      11ba964d
    • Gábor Stefanik's avatar
      b43: LP-PHY: Implement spec updates and remove resolved FIXMEs · 5904d206
      Gábor Stefanik authored
      Larry has started re-checking all current routines against a new
      version of the Broadcom MIPS driver. This patch implements the first
      round of changes he documented on the specs wiki.
      
      Also remove a few FIXMEs regarding missing initial values for variables
      with dynamic initial values where reading the values has been implemented.
      Signed-off-by: default avatarGábor Stefanik <netrolller.3d@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      5904d206
    • Zhu Yi's avatar
      cfg80211: allow cfg80211_connect_result with bssid == NULL · 16a832e7
      Zhu Yi authored
      In case of connection failure, the bssid info is not a must have.
      Signed-off-by: default avatarZhu Yi <yi.zhu@intel.com>
      Acked-by: default avatarJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      16a832e7
    • David Kilroy's avatar
      30fab9e0
    • David Kilroy's avatar
      cfg80211: fix leaks of wdev->conn->ie · 415ad1ef
      David Kilroy authored
      This only occurs in the following error situations:
       - driver calls connect_result with failure
       - error scheduling authentication on connect
       - error initiating scan (to get BSSID and channel) on
         connect
       - userspace calls disconnect while in the SCANNING or
         SCAN_AGAIN states
      Signed-off-by: default avatarDavid Kilroy <kilroyd@googlemail.com>
      Reviewed-by: default avatarJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      415ad1ef
    • Christian Lamparter's avatar
      ar9170: refactor configure_filter · eeef4185
      Christian Lamparter authored
      Thanks to "mac80211: allow configure_filter callback to sleep",
      we no longer have to defer the work to the workqueue.
      Signed-off-by: default avatarChristian Lamparter <chunkeey@web.de>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      eeef4185
    • Gábor Stefanik's avatar
      b43: LP-PHY: Two small spec updates · 5791ce18
      Gábor Stefanik authored
      The specs are beginning to support rev3 LP-PHYs - implement one of
      the changes needed for rev3 support.
      Also, in the new MIPS driver, the "Japan TX filter" was renamed to
      "analog TX filter init" - however, calling it "init" is confusing,
      so name it "set analog filter", with a comment for easier future
      identification.
      Signed-off-by: default avatarGábor Stefanik <netrolller.3d@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      5791ce18
    • Ivo van Doorn's avatar
      rt2x00: bss_info_changed() callback is allowed to sleep · d904dc17
      Ivo van Doorn authored
      The bss_info_changed() callback function no longer needs
      to be atomic. Remove the scheduled work structure and
      call into the driver directly.
      
      Additionaly this makes the DRIVER_REQUIRE_SCHEDULED
      flag redundant so it can be removed.
      Signed-off-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      d904dc17
    • Ivo van Doorn's avatar
      rt2x00: configure_filter() callback is allowed to sleep · afa62042
      Ivo van Doorn authored
      The configure_filter() callback function no longer needs
      to be atomic. Remove the scheduled work structure and
      call into the driver configure_filter() directly.
      Signed-off-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      afa62042
    • Johannes Berg's avatar
      cfg80211: fix dangling scan request checking · ad002395
      Johannes Berg authored
      My patch "cfg80211: fix deadlock" broke the code it
      was supposed to fix, the scan request checking. But
      it's not trivial to put it back the way it was, since
      the original patch had a deadlock.
      
      Now do it in a completely new way: queue the check
      off to a work struct, where we can freely lock. But
      that has some more complications, like needing to
      wait for it to be done before the wiphy/rdev can be
      destroyed, so some code is required to handle that.
      Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      ad002395
    • Reinette Chatre's avatar
      ipw2x00: fix sparse warnings · 21f8a73f
      Reinette Chatre authored
      This fixes:
      
        CHECK   drivers/net/wireless/ipw2x00/ipw2100.c
      drivers/net/wireless/ipw2x00/ipw2100.c:7888:22: warning: symbol 'mode' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2100.c:188:12: originally declared here
      drivers/net/wireless/ipw2x00/ipw2100.c:7952:18: warning: symbol 'mode' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2100.c:188:12: originally declared here
      drivers/net/wireless/ipw2x00/ipw2100.c:8000:18: warning: symbol 'mode' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2100.c:188:12: originally declared here
      drivers/net/wireless/ipw2x00/ipw2100.c:8268:27: warning: symbol '_min1' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2100.c:8268:27: originally declared here
      drivers/net/wireless/ipw2x00/ipw2100.c:8268:27: warning: symbol '_min1' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2100.c:8268:27: originally declared here
      drivers/net/wireless/ipw2x00/ipw2100.c:8268:27: warning: symbol '_min2' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2100.c:8268:27: originally declared here
        CC [M]  drivers/net/wireless/ipw2x00/ipw2100.o
        CHECK   drivers/net/wireless/ipw2x00/ipw2200.c
      drivers/net/wireless/ipw2x00/ipw2200.c:847:13: warning: symbol 'led' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:92:12: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:891:13: warning: symbol 'led' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:92:12: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:935:13: warning: symbol 'led' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:92:12: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:980:13: warning: symbol 'led' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:92:12: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:1016:13: warning: symbol 'led' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:92:12: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:1051:13: warning: symbol 'led' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:92:12: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:1823:13: warning: symbol 'channel' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:86:12: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: warning: symbol '_min1' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: warning: symbol '_min1' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: warning: symbol '_min1' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: warning: symbol '_min1' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: warning: symbol '_min2' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: warning: symbol '_min1' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: warning: symbol '_min1' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: warning: symbol '_min2' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: warning: symbol '_min1' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: warning: symbol '_min2' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: warning: symbol '_min2' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: warning: symbol '_min1' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: warning: symbol '_min1' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: warning: symbol '_min1' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: warning: symbol '_min2' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: warning: symbol '_min1' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: warning: symbol '_min2' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: warning: symbol '_min2' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: warning: symbol '_min1' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: warning: symbol '_min1' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: warning: symbol '_min2' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: warning: symbol '_min1' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: warning: symbol '_min2' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: warning: symbol '_min2' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: warning: symbol '_min2' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:4268:19: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:6228:28: warning: symbol 'channel' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:86:12: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:6369:20: warning: symbol 'channel' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:86:12: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:6857:12: warning: symbol 'mode' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:87:12: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:7964:13: warning: symbol 'channel' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:86:12: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:8720:12: warning: symbol 'channel' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:86:12: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:9662:13: warning: symbol 'mode' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:87:12: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:9720:13: warning: symbol 'mode' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:87:12: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:9826:13: warning: symbol 'mode' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:87:12: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:10318:21: warning: symbol 'remaining_bytes' shadows an earlier one
      drivers/net/wireless/ipw2x00/ipw2200.c:10184:13: originally declared here
      drivers/net/wireless/ipw2x00/ipw2200.c:8338:45: warning: cast to restricted __le16
      drivers/net/wireless/ipw2x00/ipw2200.c:4414:21: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/ipw2x00/ipw2200.c:4414:21:    expected restricted __le16 [usertype] size
      drivers/net/wireless/ipw2x00/ipw2200.c:4414:21:    got unsigned short [unsigned] [usertype] <noident>
      drivers/net/wireless/ipw2x00/ipw2200.c:6105:33: warning: incorrect type in initializer (different base types)
      drivers/net/wireless/ipw2x00/ipw2200.c:6105:33:    expected restricted __le16 [usertype] tx_rates
      drivers/net/wireless/ipw2x00/ipw2200.c:6105:33:    got unsigned short [unsigned] [usertype] rates_mask
      drivers/net/wireless/ipw2x00/ipw2200.c:6124:29: warning: bad assignment (>>=) to restricted __le16
      drivers/net/wireless/ipw2x00/ipw2200.c:6130:31: warning: restricted __le16 degrades to integer
      drivers/net/wireless/ipw2x00/ipw2200.c:6140:23: warning: restricted __le16 degrades to integer
      drivers/net/wireless/ipw2x00/ipw2200.c:6149:54: warning: restricted __le16 degrades to integer
      drivers/net/wireless/ipw2x00/ipw2200.c:6151:37: warning: invalid assignment: &=
      drivers/net/wireless/ipw2x00/ipw2200.c:6151:37:    left side has type restricted __le16
      drivers/net/wireless/ipw2x00/ipw2200.c:6151:37:    right side has type int
      drivers/net/wireless/ipw2x00/ipw2200.c:6154:54: warning: restricted __le16 degrades to integer
      drivers/net/wireless/ipw2x00/ipw2200.c:6156:37: warning: invalid assignment: &=
      drivers/net/wireless/ipw2x00/ipw2200.c:6156:37:    left side has type restricted __le16
      drivers/net/wireless/ipw2x00/ipw2200.c:6156:37:    right side has type int
      drivers/net/wireless/ipw2x00/ipw2200.c:6159:55: warning: restricted __le16 degrades to integer
      drivers/net/wireless/ipw2x00/ipw2200.c:6161:37: warning: invalid assignment: &=
      drivers/net/wireless/ipw2x00/ipw2200.c:6161:37:    left side has type restricted __le16
      drivers/net/wireless/ipw2x00/ipw2200.c:6161:37:    right side has type int
      drivers/net/wireless/ipw2x00/ipw2200.c:6164:29: warning: invalid assignment: |=
      drivers/net/wireless/ipw2x00/ipw2200.c:6164:29:    left side has type restricted __le16
      drivers/net/wireless/ipw2x00/ipw2200.c:6164:29:    right side has type unsigned short
      drivers/net/wireless/ipw2x00/ipw2200.c:7853:29: warning: incorrect type in assignment (different base types)
      drivers/net/wireless/ipw2x00/ipw2200.c:7853:29:    expected signed char [signed] [usertype] [explicitly-signed] rt_dbmnoise
      drivers/net/wireless/ipw2x00/ipw2200.c:7853:29:    got restricted __le16 [usertype] noise
      drivers/net/wireless/ipw2x00/ipw2200.c:7967:25: warning: incorrect type in initializer (different base types)
      drivers/net/wireless/ipw2x00/ipw2200.c:7967:25:    expected signed char [signed] [usertype] [explicitly-signed] noise
      drivers/net/wireless/ipw2x00/ipw2200.c:7967:25:    got restricted __le16 [usertype] noise
      Signed-off-by: default avatarReinette Chatre <reinette.chatre@intel.com>
      Cc: Zhu Yi <yi.zhu@intel.com>
      Acked-by: default avatarZhu Yi <yi.zhu@intel.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      21f8a73f
    • Daniel Walker's avatar
      mac80211: New stat counters for multicast and unicast forwarded frames · c8a61a7d
      Daniel Walker authored
      This expands on the current fwded_frames stat counter which should be equal to
      the total of these two new counters.  The new counters are called "fwded_mcast"
      and "fwded_unicast".
      Signed-off-by: default avatarDaniel Walker <dwalker@fifo99.com>
      Signed-off-by: default avatarJavier Cardona <javier@cozybit.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      c8a61a7d
    • John W. Linville's avatar
      wl1271: remove print_mac usage · e5539bcb
      John W. Linville authored
      CC [M]  drivers/net/wireless/wl12xx/wl1271_main.o
      drivers/net/wireless/wl12xx/wl1271_main.c: In function ‘wl1271_op_add_interface’:
      drivers/net/wireless/wl12xx/wl1271_main.c:611: warning: ‘print_mac’ is deprecated (declared at include/linux/if_ether.h:142)
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      e5539bcb
    • John W. Linville's avatar
      rc80211_pid_algo.c: remove unused variable declaration · 29508d12
      John W. Linville authored
      CC [M]  net/mac80211/rc80211_pid_algo.o
      net/mac80211/rc80211_pid_algo.c: In function ‘rate_control_pid_rate_init’:
      net/mac80211/rc80211_pid_algo.c:304: warning: unused variable ‘si’
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      29508d12
    • Luis R. Rodriguez's avatar
      ath: move regulatory info into shared common structure · 608b88cb
      Luis R. Rodriguez authored
      This moves the shared regulatory structure into the
      common structure. We will use this ongoing for common
      data.
      Signed-off-by: default avatarLuis R. Rodriguez <lrodriguez@atheros.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      608b88cb
    • Sujith's avatar
      ath9k: Fix TX poll cancelling · 4c483817
      Sujith authored
      In ath9k_stop(), tx_complete_work was being cancelled twice.
      This patch fixes it. Also, locking sc->mutex should be done
      at the beginning.
      Signed-off-by: default avatarSujith <Sujith.Manoharan@atheros.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      4c483817
    • Bob Copeland's avatar
      wl1251: halt the embedded CPU before loading firmware · bcd64e0c
      Bob Copeland authored
      After initial power-up, the embedded cpu is usually halted.  However,
      if we down the interface and only do a soft reset before bringing
      the interface back up, it will still be running and the firmware
      loading code will bail out.  This change halts the CPU before loading
      the firmware, enabling a second call to wl1251_boot() to succeed
      without a hard reset.
      Signed-off-by: default avatarBob Copeland <me@bobcopeland.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      bcd64e0c
    • Javier Cardona's avatar
      mac80211: Decouple fail_avg stats used by mesh from rate control algorithm. · bfc32e6a
      Javier Cardona authored
      Mesh uses the tx failure average to compute the (m)path metric.  This used to
      be done inside the rate control module.  This patch breaks the dependency
      between the mesh stack and the rate control algorithm.  Mesh will now work
      independently of the chosen rate control algorithm.
      
      The mesh stack keeps a moving average of the average transmission losses for
      each mesh peer station.  If the fail average exceeds a certain threshold, the
      peer link is marked as broken.
      Signed-off-by: default avatarJavier Cardona <javier@cozybit.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      bfc32e6a
    • Benoit PAPILLAULT's avatar
      rt2x00: Add support for retry rates · 92ed48e5
      Benoit PAPILLAULT authored
      rt2800pci can handle different retry rates,
      it will always step 1 rate down after a failed
      transmission so creating the retry rate list
      for mac80211 is quite simple.
      Signed-off-by: default avatarBenoit PAPILLAULT <benoit.papillault@free.fr>
      Signed-off-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      92ed48e5