17 Apr, 2012

1 commit


11 Apr, 2012

1 commit

  • This patch adds MBSS extensible synchronization framework (Sec.
    13.13.2 of IEEE Std. 802.11-2012).

    The framework is implemented via an ops table which defines the
    following functions:

    rx_bcn_presp() - this is called every time a mesh beacon is
    received.
    adjust_tbtt() - this is called immediately before a beacon is about
    to be transmitted.

    The default neighbor offset synchronization defined in the standard is
    implemented. We also provide template functions for vendor specific
    methods.

    When neighbor offset synchronization is active (which is the default)
    mesh neighbors in the same MBSS will track timing offsets to each other
    and compensate clock drift.

    In our tests we observed that this mesh synchronization implementation
    successfully corrected drifts between stations of ~2PPM while
    introducing a jitter of ~20us.

    It is also possible to test this framework on mac80211_hwsim simulated
    phys to see how it behaves under different topologies, over poor links,
    etc.

    Signed-off-by: Marco Porsch
    Signed-off-by: Pavel Zubarev
    Signed-off-by: Javier Cardona
    Signed-off-by: John W. Linville

    Javier Cardona
     

10 Apr, 2012

2 commits

  • The HWMP sequence number of received RANN element is compared to decide whether to be
    propagated. The sequence number is required to covert from 32bit little endian data into
    CPUs endianness for comparison. The same applies to the RANN metric.

    Signed-off-by: Chun-Yeow Yeoh
    Signed-off-by: Javier Cardona
    Signed-off-by: John W. Linville

    Chun-Yeow Yeoh
     
  • Since some of the HT code pre-dates 802.11n-2009
    some names are wrong. The one that bothers me most
    is that "HT operation" is called "HT information"
    in our code and that causes confusion.

    Rename "HT information" to "HT operation" and also
    the control_chan field to primary_chan to match
    the name used in the spec.

    Signed-off-by: Johannes Berg
    Acked-by: Bing Zhao
    Signed-off-by: John W. Linville

    Johannes Berg
     

14 Dec, 2011

1 commit


07 Dec, 2011

1 commit

  • Arik's patch "mac80211: allow action frames with unknown
    BSSID in GO mode" allowed any action frames in P2P mode
    to go through, but only to cooked monitor interfaces as
    the IEEE80211_RX_RA_MATCH was still cleared. As a result
    my no-monitor patches broke invitation responses.

    Instead of allowing any action frames in P2P GO mode to
    go through with a wrong BSSID like that patch did, allow
    all public action frames. They will never be processed
    by mac80211, but can be reported via nl80211 then.

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

    Johannes Berg
     

10 Nov, 2011

3 commits


01 Oct, 2011

1 commit

  • 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
     

20 Sep, 2011

1 commit


15 Sep, 2011

1 commit


25 Aug, 2011

1 commit

  • In this implementation, a mesh gate is a root node with a certain bit
    set in its RANN flags. The mpath to this root node is marked as a path
    to a gate, and added to our list of known gates for this if_mesh. Once a
    path discovery process fails, we forward the unresolved frames to a
    known gate. Thanks to Luis Rodriguez for refactoring and bug fix help.

    Signed-off-by: Javier Cardona
    Signed-off-by: John W. Linville

    Javier Cardona
     

23 Aug, 2011

5 commits


20 Jul, 2011

1 commit


28 Jun, 2011

1 commit


02 Jun, 2011

1 commit

  • Commit 0a35d36 ("cfg80211: Use capability info to detect mesh beacons")
    assumed that probe response with both ESS and IBSS bits cleared
    means that the frame was sent by a mesh sta.

    However, these capabilities are also being used in the p2p_find phase,
    and the mesh-validation broke it.

    Rename the WLAN_CAPABILITY_IS_MBSS macro, and verify that mesh ies
    exist before assuming this frame was sent by a mesh sta.

    Signed-off-by: Eliad Peller
    Signed-off-by: John W. Linville

    Eliad Peller
     

12 May, 2011

3 commits


05 Apr, 2011

1 commit


10 Mar, 2011

1 commit


14 Jan, 2011

1 commit


21 Dec, 2010

2 commits

  • The Mesh Control header only includes 0, 1 or 2 addresses. If there is
    one address, it should be interpreted as Address 4. If there are 2,
    they are interpreted as Addresses 5 and 6 (Address 4 being the 4th
    address in the 802.11 header).

    The address extension used to hold up to 3 addresses instead of the current 2.
    I'm not sure which draft version changed this, but it is very unlikely that it
    will change again given the state of the approval process of this draft. See
    section 7.1.3.6.3 in current draft (8.0).

    Also, note that the extra address that I'm removing was not being used, so this
    change has no effect on over-the-air frame formats. But I thought I better
    remove it before someone does start using it.

    Signed-off-by: Javier Cardona
    Signed-off-by: John W. Linville

    Javier Cardona
     
  • Userspace will now be allowed to toggle between the default path
    selection algorithm (HWMP, implemented in the kernel), and a vendor
    specific alternative. Also in the same patch, allow userspace to add
    information elements to mesh beacons. This is accordance with the
    Extensible Path Selection Framework specified in version 7.0 of the
    802.11s draft.

    Signed-off-by: Javier Cardona
    Signed-off-by: John W. Linville

    Javier Cardona
     

14 Dec, 2010

1 commit


09 Dec, 2010

1 commit


12 Oct, 2010

1 commit

  • This patch updates IEEE802.11 mesh constants to be consistent with newly
    approved values. It modifies some values, as well as adds many new constants
    in preparation for updating mesh code to the current 802.11s drafts. ANA
    numbers were taken from:
    https://mentor.ieee.org/802.11/dcn/09/11-09-0031-12-0000-ana-database-assigned-number-authority.xls

    A few notes are in order:
    1. This will break backwards compatibility with existing Linux kernels as
    over-the-air constants have changed.
    2. Some old and obsolete constants have been retained for now as the mesh code
    itself hasn't been updated yet to the new 802.11s draft. This was desired to
    keep the existing mesh scheme working until it can be updated. Adding the
    approved values is the first step in updating the mesh code.
    3. Obsolete constants have been clearly marked.
    4. All ANA approved 802.11s constants have been added.

    Signed-off-by: Steve deRosier
    Signed-off-by: John W. Linville

    Steve deRosier
     

20 Apr, 2010

1 commit


09 Apr, 2010

1 commit


08 Apr, 2010

1 commit

  • The aggregation code has a number of quirks, like
    inventing an unneeded WLAN_BACK_TIMER value and
    leaking memory under certain circumstances during
    station destruction. Fix these issues by using
    the regular aggregation session teardown code and
    blocking new aggregation sessions, all before the
    station is really destructed.

    As a side effect, this gets rid of the long code
    block to destroy aggregation safely.

    Additionally, rename tid_state_rx which can only
    have the values IDLE and OPERATIONAL to
    tid_active_rx to make it easier to understand
    that there is no bitwise stuff going on on the
    RX side -- the TX side remains because it needs
    to keep track of the driver and peer states.

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

    Johannes Berg
     

23 Jan, 2010

1 commit

  • ieee80211_hdrlen() should account account new HT Control field in 802.11
    data frame header introduced by IEEE 802.11n standard.

    According to 802.11n-2009 HT Control field is present in data frames
    when both of following are met:

    1. It is QoS data frame.
    2. Order bit is set in Frame Control field.

    The change might be totally compatible with legacy non-11n aware frames,
    because 802.11-2007 standard states that "all QoS STAs set this subfield
    to 0".

    Signed-off-by: Andriy V. Tkachuk
    Acked-by : Benoit Papillault
    Signed-off-by: John W. Linville

    Andriy Tkachuk
     

13 Jan, 2010

3 commits

  • The header can be used to create qos nullfunc frames, for example.

    Signed-off-by: Kalle Valo
    Signed-off-by: John W. Linville

    Kalle Valo
     
  • Add Unscheduled Automatic Power-Save Delivery (U-APSD) client support. The
    idea is that the data frames from the client trigger AP to send the buffered
    frames with ACs which have U-APSD enabled. This decreases latency and makes it
    possible to save even more power.

    Driver needs to use IEEE80211_HW_UAPSD to enable the feature. The current
    implementation assumes that firmware takes care of the wakeup and
    hardware needing IEEE80211_HW_PS_NULLFUNC_STACK is not yet supported.

    Tested with wl1251 on a Nokia N900 and Cisco Aironet 1231G AP and running
    various test traffic with ping.

    Signed-off-by: Kalle Valo
    Signed-off-by: John W. Linville

    Kalle Valo
     
  • Some hardware, for example wl1251 and wl1271, handle the transmission
    of power save related frames in hardware, but the driver is responsible
    for creating the templates. It's better to create the templates in mac80211,
    that way all drivers can benefit from this.

    Add two new functions, ieee80211_pspoll_get() and ieee80211_nullfunc_get()
    which drivers need to call to get the frame. Drivers are also responsible
    for updating the templates after each association.

    Also new struct ieee80211_hdr_3addr is added to ieee80211.h to make it
    easy to calculate length of the Nullfunc frame.

    Signed-off-by: Kalle Valo
    Signed-off-by: John W. Linville

    Kalle Valo
     

29 Dec, 2009

1 commit

  • Currently, we insert all user-specified IEs before the HT
    IE for association, and after the HT IE for probe requests.
    For association, that's correct only if the user-specified
    IEs are RSN only, incorrect in all other cases including
    WPA. Change this to split apart the user-specified IEs in
    two places for association: before the HT IE (e.g. RSN),
    after the HT IE (generally empty right now I think?) and
    after WMM (all other vendor-specific IEs). For probes,
    split the IEs in different places to be correct according
    to the spec.

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

    Johannes Berg