17 Jan, 2013

2 commits

  • Mesh PERR action frames are robust and thus may be encrypted, so add
    proper head/tailroom to allow this. Fixes this warning when operating
    a Mesh STA on ath5k:

    WARNING: at net/mac80211/wpa.c:427 ccmp_encrypt_skb.isra.5+0x7b/0x1a0 [mac80211]()
    Call Trace:
    [] warn_slowpath_common+0x63/0x78
    [] warn_slowpath_null+0xf/0x13
    [] ccmp_encrypt_skb.isra.5+0x7b/0x1a0 [mac80211]
    [] ieee80211_crypto_ccmp_encrypt+0x1f/0x37 [mac80211]
    [] invoke_tx_handlers+0xcad/0x10bd [mac80211]
    [] ieee80211_tx+0x87/0xb3 [mac80211]
    [] ieee80211_tx_pending+0xcc/0x170 [mac80211]
    [] tasklet_action+0x3e/0x65

    Signed-off-by: Bob Copeland
    Signed-off-by: Johannes Berg

    Bob Copeland
     
  • A user reported warnings in ath5k due to transmitting frames with no
    rates set up. The frames were Mesh PERR frames, and some debugging
    showed an empty control block with just the vif pointer:

    > [ 562.522682] XXX txinfo: 00000000: 00 00 00 00 00 00 00 00 00 00 00
    > 00 00 00 00 00 ................
    > [ 562.522688] XXX txinfo: 00000010: 00 00 00 00 00 00 00 00 54 b8 f2
    > db 00 00 00 00 ........T.......
    > [ 562.522693] XXX txinfo: 00000020: 00 00 00 00 00 00 00 00 00 00 00
    > 00 00 00 00 00 ................

    Set the IEEE80211_TX_INTFL_NEED_TXPROCESSING flag to ensure that
    rate control gets run before the frame is sent.

    Signed-off-by: Bob Copeland
    Signed-off-by: Johannes Berg

    Bob Copeland
     

16 Jan, 2013

3 commits

  • Channel contexts are not always used with monitor interfaces. If no channel
    context is set, use the oper channel, otherwise tx fails.

    Signed-off-by: Felix Fietkau
    [check local->use_chanctx]
    Signed-off-by: Johannes Berg

    Felix Fietkau
     
  • Since:

    commit b23b025fe246f3acc2988eb6d400df34c27cb8ae
    Author: Ben Greear
    Date: Fri Feb 4 11:54:17 2011 -0800

    mac80211: Optimize scans on current operating channel.

    we do not disable PS while going back to operational channel (on
    ieee80211_scan_state_suspend) and deffer that until scan finish.
    But since we are allowed to send frames, we can send a frame to AP
    without PM bit set, so disable PS on AP side. Then when we switch
    to off-channel (in ieee80211_scan_state_resume) we do not enable PS.
    Hence we are off-channel with PS disabled, frames are not buffered
    by AP.

    To fix remove offchannel_ps_disable argument and always enable PS when
    going off-channel and disable it when going on-channel, like it was
    before.

    Cc: stable@vger.kernel.org # 2.6.39+
    Signed-off-by: Stanislaw Gruszka
    Tested-by: Seth Forshee
    Signed-off-by: Johannes Berg

    Stanislaw Gruszka
     
  • During FT roaming, wpa_supplicant attempts to set the
    key before association. This used to be rejected, but
    as a side effect of my commit 66e67e418908442389d3a9e
    ("mac80211: redesign auth/assoc") the key was accepted
    causing hardware crypto to not be used for it as the
    station isn't added to the driver yet.

    It would be possible to accept the key and then add it
    to the driver when the station has been added. However,
    this may run into issues with drivers using the state-
    based station adding if they accept the key only after
    association like it used to be.

    For now, revert to the behaviour from before the auth
    and assoc change.

    Cc: stable@vger.kernel.org
    Reported-by: Cédric Debarge
    Tested-by: Cédric Debarge
    Signed-off-by: Johannes Berg

    Johannes Berg
     

03 Jan, 2013

8 commits

  • The maximum MTU shouldn't take the headers into account,
    the maximum MSDU size is exactly the maximum MTU.

    Signed-off-by: T Krishna Chaitanya
    Signed-off-by: Johannes Berg

    Chaitanya
     
  • When AP's SSID is hidden the BSS can appear several times in
    cfg80211's BSS list: once with a zero-length SSID that comes
    from the beacon, and once for each SSID from probe reponses.

    Since the mac80211 stores its data in ieee80211_bss which
    is embedded into cfg80211_bss, mac80211's data will be
    duplicated too.

    This becomes a problem when a driver needs the dtim_period
    since this data exists only in the beacon's instance in
    cfg80211 bss table which isn't the instance that is used
    when associating.

    Remove the DTIM period from the BSS table and track it
    explicitly to avoid this problem.

    Cc: stable@vger.kernel.org
    Tested-by: Efi Tubul
    Signed-off-by: Emmanuel Grumbach
    Signed-off-by: Johannes Berg

    Johannes Berg
     
  • This is a very old bug, but there's nothing that prevents the
    timer from running while the module is being removed when we
    only do del_timer() instead of del_timer_sync().

    The timer should normally not be running at this point, but
    it's not clearly impossible (or we could just remove this.)

    Cc: stable@vger.kernel.org
    Tested-by: Ben Greear
    Signed-off-by: Johannes Berg

    Johannes Berg
     
  • Unfortunately, commit b22cfcfcae5b, intended to speed up roaming
    by avoiding the synchronize_rcu() broke AP/mesh modes as it moved
    some code into that work item that will still call into the driver
    at a time where it's no longer expected to handle this: after the
    AP or mesh has been stopped.

    To fix this problem remove the per-station work struct, maintain a
    station cleanup list instead and flush this list when stations are
    flushed. To keep this patch smaller for stable, do this when the
    stations are flushed (sta_info_flush()). This unfortunately brings
    back the original roaming delay; I'll fix that again in a separate
    patch.

    Also, Ben reported that the original commit could sometimes (with
    many interfaces) cause long delays when an interface is set down,
    due to blocking on flush_workqueue(). Since we now maintain the
    cleanup list, this particular change of the original patch can be
    reverted.

    Cc: stable@vger.kernel.org [3.7]
    Reported-by: Ben Greear
    Tested-by: Ben Greear
    Signed-off-by: Johannes Berg

    Johannes Berg
     
  • The array of rmc_entrys is redundant since only the
    list_head is used. Make this an array of list_heads
    instead and save ~6k per vif at runtime :D

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

    Thomas Pedersen
     
  • Make AP_VLAN type interfaces track the AP master channel
    context so they have one assigned for the various lookups.
    Don't give them their own refcount etc. since they're just
    slaves to the AP master.

    Signed-off-by: Johannes Berg

    Johannes Berg
     
  • Signed-off-by: Felix Fietkau
    [change to flush stations with AP flush in second loop]
    Signed-off-by: Johannes Berg

    Felix Fietkau
     
  • Do not scan on no-IBSS and disabled channels in IBSS mode. Doing this
    can trigger Microcode errors on iwlwifi and iwlegacy drivers.

    Also rename ieee80211_request_internal_scan() function since it is only
    used in IBSS mode and simplify calling it from ieee80211_sta_find_ibss().

    This patch should address:
    https://bugzilla.redhat.com/show_bug.cgi?id=883414
    https://bugzilla.kernel.org/show_bug.cgi?id=49411

    Reported-by: Jesse Kahtava
    Reported-by: Mikko Rapeli
    Cc: stable@vger.kernel.org
    Signed-off-by: Stanislaw Gruszka
    Signed-off-by: Johannes Berg

    Stanislaw Gruszka
     

14 Dec, 2012

1 commit

  • Pull trivial branch from Jiri Kosina:
    "Usual stuff -- comment/printk typo fixes, documentation updates, dead
    code elimination."

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (39 commits)
    HOWTO: fix double words typo
    x86 mtrr: fix comment typo in mtrr_bp_init
    propagate name change to comments in kernel source
    doc: Update the name of profiling based on sysfs
    treewide: Fix typos in various drivers
    treewide: Fix typos in various Kconfig
    wireless: mwifiex: Fix typo in wireless/mwifiex driver
    messages: i2o: Fix typo in messages/i2o
    scripts/kernel-doc: check that non-void fcts describe their return value
    Kernel-doc: Convention: Use a "Return" section to describe return values
    radeon: Fix typo and copy/paste error in comments
    doc: Remove unnecessary declarations from Documentation/accounting/getdelays.c
    various: Fix spelling of "asynchronous" in comments.
    Fix misspellings of "whether" in comments.
    eisa: Fix spelling of "asynchronous".
    various: Fix spelling of "registered" in comments.
    doc: fix quite a few typos within Documentation
    target: iscsi: fix comment typos in target/iscsi drivers
    treewide: fix typo of "suport" in various comments and Kconfig
    treewide: fix typo of "suppport" in various comments
    ...

    Linus Torvalds
     

12 Dec, 2012

3 commits


11 Dec, 2012

3 commits


07 Dec, 2012

3 commits


06 Dec, 2012

2 commits

  • If the sdata work is pending while the interface is stopped,
    we currently flush it. If it's not running this means waiting
    for it to run, which could take a while if the workqueue is
    backlogged. However, the work exits right away if it starts
    to run while the interface is already stopping. There's no
    point in waiting for that, so use cancel_work_sync() instead.

    Reported-by: Ben Greear
    Tested-by: Ben Greear
    Signed-off-by: Johannes Berg

    Johannes Berg
     
  • Previously, mesh peering frames from a STA without a station
    entry were being dropped.

    Mesh Peering Open and other frames (WLAN_CATEGORY_SELF_PROTECTED)
    are valid mesh peering frames even if received from a yet unknown
    station; the STA entry will be created in mesh_peer_init later.

    The problem didn't occur previously since both STAs receive each
    other's beacons which created the STA entry. However, this causes
    an unnecessary delay and beacons might not be received if either
    node is in PS mode.

    Signed-off-by: Marco Porsch
    [reword commit log a bit]
    Signed-off-by: Johannes Berg

    Marco Porsch
     

05 Dec, 2012

3 commits

  • The radiotap header length "needed_headroom" is only required if we're
    sending the skb to a monitor interface. Hence, move the calculation a
    bit later so the calculation can be skipped if no monitor interface is
    present.

    Signed-off-by: Helmut Schaa
    Signed-off-by: Johannes Berg

    Helmut Schaa
     
  • Commit f0425beda4d404a6e751439b562100b902ba9c98 "mac80211: retry sending
    failed BAR frames later instead of tearing down aggr" caused regression
    on rt2x00 hardware (connection hangs). This regression was fixed by
    commit be03d4a45c09ee5100d3aaaedd087f19bc20d01 "rt2x00: Don't let
    mac80211 send a BAR when an AMPDU subframe fails". But the latter
    commit caused yet another problem reported in
    https://bugzilla.kernel.org/show_bug.cgi?id=42828#c22

    After long discussion in this thread:
    http://mid.gmane.org/20121018075615.GA18212@redhat.com
    and testing various alternative solutions, which failed on one or other
    setup, we have no other good fix for the issues like just revert both
    mentioned earlier commits.

    To do not affect other hardware which benefit from commit
    f0425beda4d404a6e751439b562100b902ba9c98, instead of reverting it,
    introduce flag that when used will restore mac80211 behaviour before
    the commit.

    Cc: stable@vger.kernel.org
    Signed-off-by: Stanislaw Gruszka
    [replaced link with mid.gmane.org that has message-id]
    Signed-off-by: Johannes Berg

    Stanislaw Gruszka
     
  • The mic failure count provides the number of mic failures that
    have happened on a given key (without a countermeasure being
    started, since that would remove the key).

    Signed-off-by: Saravana
    [fix NULL pointer issues]
    Signed-off-by: Johannes Berg

    Saravana
     

04 Dec, 2012

1 commit

  • In 5GHz/802.11a, we are allowed to use short slot times. Doing this
    may increases performance by 20% for legacy connections (54 MBit/s).
    I can confirm this in my tests (27% more throughput using iperf), and
    also have a small positive effect (5% more throughput) for HT rates,
    tested on 1 stream.

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

    Simon Wunderlich
     

03 Dec, 2012

1 commit


30 Nov, 2012

6 commits


29 Nov, 2012

4 commits