13 Jan, 2012

1 commit

  • commit a9b3cd7f32 (rcu: convert uses of rcu_assign_pointer(x, NULL) to
    RCU_INIT_POINTER) did a lot of incorrect changes, since it did a
    complete conversion of rcu_assign_pointer(x, y) to RCU_INIT_POINTER(x,
    y).

    We miss needed barriers, even on x86, when y is not NULL.

    Signed-off-by: Eric Dumazet
    CC: Stephen Hemminger
    CC: Paul E. McKenney
    Signed-off-by: David S. Miller

    Eric Dumazet
     

20 Dec, 2011

1 commit


16 Dec, 2011

4 commits

  • Station entries can have various states, the most
    important ones being auth, assoc and authorized.
    This patch prepares us for telling the driver about
    these states, we don't want to confuse drivers with
    strange transitions, so with this we enforce that
    they move in the right order between them (back and
    forth); some transitions might happen before the
    driver even knows about the station, but at least
    runtime transitions will be ordered correctly.

    As a consequence, IBSS and MESH stations will now
    have the ASSOC flag set (so they can transition to
    AUTHORIZED), and we can get rid of a special case
    in TX processing.

    When freeing a station, unwind the state so that
    other parts of the code (or drivers later) can rely
    on the transitions.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     
  • There's no need to use RCU here, we can just lock
    the station mutex instead. This allows the code
    to sleep, which is necessary for later patches.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     
  • This is already checked in cfg80211, so no need
    to repeat the checks here.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     
  • The nl80211 station handling code is a bit messy
    and doesn't do a lot of validation. It seems like
    this could be an issue for drivers that don't use
    mac80211 to validate everything.

    As cfg80211 doesn't keep station state, move the
    validation of allowing supported_rates to change
    for TDLS only in station mode to mac80211.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     

29 Nov, 2011

4 commits


22 Nov, 2011

1 commit

  • This implements ht-cap over-rides for mac80211 drivers.
    HT may be disabled, making an /a/b/g/n station act like an
    a/b/g station. HT40 may be disabled forcing the station to
    be HT20 even if the AP and local hardware support HT40.

    MAX-AMSDU may be disabled.
    AMPDU-Density may be increased.
    AMPDU-Factor may be decreased.

    This has been successfully tested with ath9k using patched
    wpa_supplicant and iw.

    Signed-off-by: Ben Greear
    Signed-off-by: John W. Linville

    Ben Greear
     

12 Nov, 2011

4 commits


10 Nov, 2011

5 commits


09 Nov, 2011

1 commit


03 Nov, 2011

1 commit


18 Oct, 2011

1 commit


15 Oct, 2011

1 commit


12 Oct, 2011

2 commits


01 Oct, 2011

6 commits

  • The flaglock in struct sta_info has long been
    something that I wanted to get rid of, this
    finally does the conversion to atomic bitops.

    The conversion itself is straight-forward in
    most places, a few things needed to change a
    bit since we can no longer use multiple bits
    at the same time.

    On x86-64, this is a fairly significant code
    size reduction:
    text data bss dec hex
    427861 23648 1008 452517 6e7a5 before
    425383 23648 976 450007 6ddd7 after

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     
  • Mark the STA entries of enabled TDLS peers with a new "peer authorized"
    flag.

    During link setup, allow special TDLS setup frames through the AP, but
    otherwise drop all packets destined to the peer. This is required by the
    TDLS (802.11z) specification in order to prevent reordering of MSDUs
    between the AP and direct paths.

    When setup completes and the peer is authorized, send data directly,
    bypassing the AP.

    In the Rx path, allow data to be received directly from TDLS peers.

    Signed-off-by: Arik Nemtsov
    Cc: Kalyan C Gaddam
    Signed-off-by: John W. Linville

    Arik Nemtsov
     
  • When adding a TDLS peer STA, mark it with a new flag in both nl80211 and
    mac80211. Before adding a peer, make sure the wiphy supports TDLS and
    our operating mode is appropriate (managed).

    In addition, make sure all peers are removed on disassociation.

    A TDLS peer is first added just before link setup is initiated. In later
    setup stages we have more info about peer supported rates, capabilities,
    etc. This info is reported via nl80211_set_station().

    Signed-off-by: Arik Nemtsov
    Cc: Kalyan C Gaddam
    Signed-off-by: John W. Linville

    Arik Nemtsov
     
  • Register and implement the TDLS cfg80211 callback functions.

    Internally prepare and send TDLS management frames. We incorporate
    local STA capabilities and supported rates with extra IEs given by
    usermode. The resulting packet is either encapsulated in a data frame,
    or assembled as an action frame. It is transmitted either directly or
    through the AP, as mandated by the TDLS specification.

    Declare support for the TDLS external setup wiphy capability. This
    tells usermode to handle link setup and discovery on its own, and use the
    kernel driver for sending TDLS mgmt packets.

    Signed-off-by: Arik Nemtsov
    Cc: Kalyan C Gaddam
    Signed-off-by: John W. Linville

    Arik Nemtsov
     
  • Currently, when hostapd sets the station as authorized
    we also overwrite its uAPSD parameter. This obviously
    leads to buggy behaviour (later, with my patches that
    actually add uAPSD support). To fix this, only apply
    those parameters if they were actually set in nl80211,
    and to achieve that add a bitmap of things to apply.

    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     
  • Conflicts:
    drivers/net/wireless/iwlwifi/iwl-pci.c
    drivers/net/wireless/wl12xx/main.c

    John W. Linville
     

28 Sep, 2011

4 commits


20 Sep, 2011

1 commit


15 Sep, 2011

1 commit


14 Sep, 2011

1 commit


30 Aug, 2011

1 commit