03 Jun, 2010

1 commit


04 Mar, 2010

1 commit

  • Handling HT configuration changes involved setting the channel
    with the new HT parameters and then issuing a rate_update()
    notification to the driver.

    This behavior changed after the off-channel changes. Now, the channel
    is not updated with the new HT params in enable_ht() - instead, it
    is now done when the scan work terminates. This results in the driver
    depending on stale information, defaulting to non-HT mode always.

    Fix this by passing the new channel type to the driver.

    Cc: stable@kernel.org
    Signed-off-by: Sujith
    Signed-off-by: John W. Linville

    Sujith
     

09 Feb, 2010

1 commit


02 Feb, 2010

1 commit


13 Jan, 2010

1 commit

  • Extend struct cfg80211_bitrate_mask to actually use a bitfield mask
    instead of just a single fixed or maximum rate index. This change
    itself does not modify the behavior (except for debugfs files), but it
    prepares cfg80211 and mac80211 for a new nl80211 command for setting
    which rates can be used in TX rate control.

    Since frames are now going through the rate control algorithm
    unconditionally, the internal IEEE80211_TX_INTFL_RCALGO flag can now
    be removed. The RC implementations can use the rate_idx_mask value to
    optimize their behavior if only a single rate is enabled.

    The old max_rate_idx in struct ieee80211_tx_rate_control is maintained
    (but commented as deprecated) for backwards compatibility with existing
    RC implementations. Once these implementations have been updated to
    use the more generic rate_idx_mask, the max_rate_idx value can be
    removed.

    Signed-off-by: Jouni Malinen
    Signed-off-by: John W. Linville

    Jouni Malinen
     

19 Nov, 2009

1 commit

  • Some devices implement the entire rate control in
    firmware in some way, like wl1271 or like iwlwifi
    which does some things in software but not a lot.
    Therefore generic software rate control is rather
    useless for them and just adds avoidable overhead
    to the transmit path.

    It's fairly simple to let drivers indicate that
    they do not need rate control, but they need to
    fulfil a number of conditions that we encode in
    WARN_ONs.

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

    Johannes Berg
     

28 Mar, 2009

1 commit


28 Feb, 2009

1 commit

  • The AP can switch dynamically between 20/40 Mhz channel width,
    in which case we switch the local operating channel, but the
    rate control algorithm is not notified. This patch adds a new callback
    to indicate such changes to the RC algorithm.

    Currently, HT channel width change is notified, but this callback
    can be used to indicate any new requirements that might come up later on.

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

    Sujith
     

01 Nov, 2008

2 commits

  • "Clearing" the rate control algorithm is pointless, none of
    the algorithms actually uses this operation and it's not even
    invoked properly for all channel switching. Also, there's no
    need to since rate control algorithms work per station.

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

    Johannes Berg
     
  • So after the previous changes we were still unhappy with how
    convoluted the API is and decided to make things simpler for
    everybody. This completely changes the rate control API, now
    taking into account 802.11n with MCS rates and more control,
    most drivers don't support that though.

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

    Johannes Berg
     

07 Oct, 2008

1 commit


25 Sep, 2008

1 commit

  • Long awaited, hard work. This patch totally cleans up the rate control
    API to remove the requirement to include internal headers outside of
    net/mac80211/.

    There's one internal use in the PID algorithm left for mesh networking,
    we'll have to figure out a way to clean that one up and decide how to
    do the peer link evaluation, possibly independent of the rate control
    algorithm or via new API.

    Additionally, ath9k is left using the cross-inclusion hack for now, we
    will add new API where necessary to make this work properly, but right
    now I'm not expert enough to do it. It's still off better than before.

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

    Johannes Berg
     

16 Sep, 2008

1 commit


01 Jul, 2008

1 commit

  • The old infrastructure was:
    - the default algorithm is built into mac80211
    - other algorithms get into their own modules

    The implementation of this complicated scheme was horrible
    (just look at net/mac80211/Makefile), and anyone adding a new
    algorithm would most likely not get it right at his first attempt.

    This patch therefore builds all enabled algorithms into the mac80211
    module.

    The user interface for the rate control algorithms changes as follows:
    - first the user can choose which algorithms to enable (currently only
    MAC80211_RC_PID is available)
    - if more than one algorithm is enabled (currently not possible since
    only one algorithm is present) the user then chooses the default one

    Note:
    - MAC80211_RC_PID is always enables for CONFIG_EMBEDDED=n

    Technical changes:
    - all selected algorithms get into the mac80211 module
    - net/mac80211/Makefile can now become much less complicated
    - support for rc80211_pid_algo.c being modular is no longer required
    - this includes unexporting mesh_plink_broken

    Signed-off-by: Adrian Bunk
    Signed-off-by: John W. Linville

    Adrian Bunk
     

22 May, 2008

2 commits

  • This patch converts mac80211 and all drivers to have transmit
    information and status in skb->cb rather than allocating extra
    memory for it and copying all the data around. To make it fit,
    a union is used where only data that is necessary for all steps
    is kept outside of the union.

    A number of fixes were done by Ivo, as well as the rt2x00 part
    of this patch.

    Signed-off-by: Ivo van Doorn
    Signed-off-by: Johannes Berg
    Acked-by: David S. Miller
    Signed-off-by: John W. Linville

    Johannes Berg
     
  • This patch modifies struct ieee80211_tx_control to give band
    info and the rate index (instead of rate pointers) to drivers.
    This mostly serves to reduce the TX control structure size to
    make it fit into skb->cb so that the fragmentation code can
    put it there and we can think about passing it to drivers that
    way in the future.

    The rt2x00 driver update was done by Ivo, thanks.

    Signed-off-by: Ivo van Doorn
    Signed-off-by: Johannes Berg
    Signed-off-by: John W. Linville

    Johannes Berg
     

09 Apr, 2008

1 commit