31 Jan, 2013

3 commits

  • Currently, when the driver requires the DTIM period,
    mac80211 will wait to hear a beacon before association.
    This behavior is suboptimal since some drivers may be
    able to deal with knowing the DTIM period after the
    association, if they get it at all.

    To address this, notify the drivers with bss_info_changed
    with the new BSS_CHANGED_DTIM_PERIOD flag when the DTIM
    becomes known. This might be when changing to associated,
    or later when the entire association was done with only
    probe response information.

    Rename the hardware flag for the current behaviour to
    IEEE80211_HW_NEED_DTIM_BEFORE_ASSOC to more accurately
    reflect its behaviour. IEEE80211_HW_NEED_DTIM_PERIOD is
    no longer accurate as all drivers get the DTIM period
    now, just not before association.

    Signed-off-by: Emmanuel Grumbach
    Signed-off-by: Johannes Berg

    Emmanuel Grumbach
     
  • The field is never used, so remove it.

    Signed-off-by: Johannes Berg

    Johannes Berg
     
  • When waking up from WoWLAN, it is useful to know
    what triggered the wakeup. Support reporting the
    wakeup reason(s) in cfg80211 (and a pass-through
    in mac80211) to allow userspace to know.

    Signed-off-by: Johannes Berg

    Johannes Berg
     

30 Jan, 2013

1 commit

  • The standard mandates mesh STAs to set the ERP Short Slot
    Time capability info bit in beacons to 0. Even though this
    is their way of disallowing short slot time for mesh STAs,
    there should be no harm in enabling it if we determine all
    STAs in the current MBSS support ERP rates.

    Increases throughput about 20% for legacy rates when
    enabled.

    Signed-off-by: Thomas Pedersen
    Signed-off-by: Johannes Berg

    Thomas Pedersen
     

29 Jan, 2013

4 commits


28 Jan, 2013

1 commit


26 Jan, 2013

2 commits


25 Jan, 2013

1 commit

  • gcc cannot prove that the value of sdata->vif.type does not
    change between the switch() statement and the second
    comparison to NL80211_IFTYPE_AP, causing a harmless
    warning.
    Slightly reordering the code makes the warning go away
    with no functional change.

    Without this patch, building ARM at91sam9g45_defconfig with
    gcc-4.6 results in:

    net/mac80211/tx.c: In function 'ieee80211_subif_start_xmit':
    net/mac80211/tx.c:1797:22: warning: 'chanctx_conf' may be used uninitialized in this function [-Wuninitialized]

    Signed-off-by: Arnd Bergmann
    Cc: Johannes Berg
    Cc: "John W. Linville"
    Cc: "David S. Miller"
    Cc: linux-wireless@vger.kernel.org
    Cc: netdev@vger.kernel.org
    Signed-off-by: Johannes Berg

    Arnd Bergmann
     

24 Jan, 2013

7 commits

  • There's no need to have two checks for "associated"
    in ieee80211_sta_restart(), make the first one locked
    to not race (unlikely at this point during resume)
    and remove the second check.

    Signed-off-by: Johannes Berg

    Johannes Berg
     
  • In commit "cfg80211: check radar interface combinations" a regression
    was introduced which might lead to NULL dereference if the argument
    chan = NULL, which might happen in IBSS/wext case (and probably
    others).

    Signed-off-by: Simon Wunderlich
    Signed-off-by: Johannes Berg

    Simon Wunderlich
     
  • An existing mesh station entry may change its rate
    capabilities, so call rate_control_rate_update() to notify
    the rate control.

    Signed-off-by: Thomas Pedersen
    [fix compilation]
    Signed-off-by: Johannes Berg

    Thomas Pedersen
     
  • This refactoring fixes a "scheduling while atomic" warning
    when allocating a mesh station entry while holding the RCU
    read lock. Fix this by creating a new function
    mesh_sta_info_get(), which correctly handles the locking
    and returns under RCU.

    Also move some unnecessarily #ifdefed mesh station init
    code from sta_info_alloc() to __mesh_sta_info_alloc().

    Signed-off-by: Thomas Pedersen
    [change code flow to make sparse happy]
    Signed-off-by: Johannes Berg

    Thomas Pedersen
     
  • Reference: IEEE 802.11-2012 8.4.2.27.3 "AKM suites"

    Signed-off-by: Bing Zhao
    Signed-off-by: Johannes Berg

    Bing Zhao
     
  • For drivers that don't actually flush their queues when
    aggregation stop with the IEEE80211_AMPDU_TX_STOP_FLUSH
    or IEEE80211_AMPDU_TX_STOP_FLUSH_CONT reasons is done,
    like iwlwifi or iwlegacy, mac80211 can then transmit on
    a TID that the driver still considers busy. This happens
    in the following way:

    - IEEE80211_AMPDU_TX_STOP_FLUSH requested
    - driver marks TID as emptying
    - mac80211 removes tid_tx data, this can copy packets
    to the TX pending queues and also let new packets
    through to the driver
    - driver gets unexpected TX as it wasn't completely
    converted to the new API

    In iwlwifi, this lead to the following warning:

    WARNING: at drivers/net/wireless/iwlwifi/dvm/tx.c:442 iwlagn_tx_skb+0xc47/0xce0
    Tx while agg.state = 4
    Modules linked in: [...]
    Pid: 0, comm: kworker/0:0 Tainted: G W 3.1.0 #1
    Call Trace:
    [] warn_slowpath_common+0x72/0xa0
    [] warn_slowpath_fmt+0x33/0x40
    [] iwlagn_tx_skb+0xc47/0xce0 [iwldvm]
    [] iwlagn_mac_tx+0x23/0x40 [iwldvm]
    [] __ieee80211_tx+0xf6/0x3c0 [mac80211]
    [] ieee80211_tx+0xd0/0x100 [mac80211]
    [] ieee80211_xmit+0x96/0xe0 [mac80211]
    [] ieee80211_subif_start_xmit+0x348/0xc80 [mac80211]
    [] dev_hard_start_xmit+0x337/0x6d0
    [] sch_direct_xmit+0xa9/0x210
    [] dev_queue_xmit+0x1b0/0x8e0

    Fortunately, solving this problem is easy as the station
    is being destroyed, so such transmit packets can only
    happen due to races. Instead of trying to close the race
    just let the race not reach the drivers by making two
    changes:
    1) remove the explicit aggregation session teardown in
    the managed mode code, the same thing will be done
    when the station is removed, in __sta_info_destroy.
    2) When aggregation stop with AGG_STOP_DESTROY_STA is
    requested, leave the tid_tx data around as stopped.
    It will be cleared and freed in cleanup_single_sta
    later, but until then any racy packets will be put
    onto the tid_tx pending queue instead of transmitted
    which is fine since the station is being removed.

    Signed-off-by: Johannes Berg

    Johannes Berg
     
  • Since drivers can support several BSS / P2P Client
    interfaces, the rssi callback needs to inform the driver
    about the interface teh rssi event relates to.

    Signed-off-by: Emmanuel Grumbach
    Signed-off-by: Johannes Berg

    Emmanuel Grumbach
     

23 Jan, 2013

21 commits