18 Nov, 2011

3 commits

  • Remove unused function parameters in the following functions:
    minstrel_calc_rate_ewma()
    minstrel_ht_calc_tp()
    minstrel_aggr_check()
    minstrel_ht_set_rate()

    Signed-off-by: Patrick Kelle
    Signed-off-by: John W. Linville

    Patrick Kelle
     
  • Finding the group index for a specific rate is done by looping through
    all groups and returning if the correct one is found. This code is
    called for each tx'ed frame and thus it makes sense to reduce its
    runtime.

    Do this by calculating the group index by this formula based on the SGI
    and HT40 flags as well as the stream number:

    idx = (HT40 * 2 * MINSTREL_MAX_STREAMS) +
    (SGI * MINSTREL_MAX_STREAMS) +
    (streams - 1)

    Hence, the groups are ordered by th HT40 flag first, then by the SGI
    flag and afterwards by the number of used streams.

    This should reduce the runtime of minstrel_ht_get_group_idx
    considerable.

    Signed-off-by: Helmut Schaa
    Acked-by: Felix Fietkau
    Signed-off-by: John W. Linville

    Helmut Schaa
     
  • The drivers are not required to fill in rate->count if rate->idx is set
    to -1. Hence, we should first check rate->idx before accessing
    rate->count.

    Signed-off-by: Helmut Schaa
    Acked-by: Felix Fietkau
    Signed-off-by: John W. Linville

    Helmut Schaa
     

01 Oct, 2011

1 commit

  • I noticed a possible issue in the max_tp_rate2 management of
    minstrel_ht. In particular, if we look up just among max_tp_rate2 of
    each group it will be possible that the selected rate will not be the
    mcs with second maximum throughput. I wrote this simple patch.

    Signed-off-by: Lorenzo Bianconi
    Signed-off-by: John W. Linville

    Lorenzo Bianconi
     

15 Sep, 2011

1 commit

  • Minstrel HT tries very hard to establish a BA session with
    each peer once there's some data on the way. However the
    stack does not inform minstrel if an aggregation session
    is already in place, so it keeps trying and wastes good
    cycles in the tx status path.

    [ 8149.946393] Open BA session requested for $AP tid 0
    [ 8150.048765] Open BA session requested for $AP tid 0
    [ 8150.174509] Open BA session requested for $AP tid 0
    [ 8150.274376] Open BA session requested for $AP tid 0
    ...

    Signed-off-by: Christian Lamparter
    Acked-by: Felix Fietkau
    Signed-off-by: John W. Linville

    Christian Lamparter
     

10 Aug, 2011

1 commit


02 Jun, 2011

1 commit


17 May, 2011

1 commit


13 May, 2011

1 commit


08 Apr, 2011

1 commit


31 Mar, 2011

1 commit


29 Mar, 2011

1 commit


15 Mar, 2011

1 commit

  • Devices without multi rate retry support won't be able to use all rates
    as specified by mintrel_ht. Hence, we can simply skip setting up further
    rates as the devices will only use the first one.

    Also add a special case for devices with only two possible tx rates. We
    use sample_rate -> max_prob_rate for sampling and max_tp_rate ->
    max_prob_rate by default.

    Signed-off-by: Helmut Schaa
    Signed-off-by: John W. Linville

    Helmut Schaa
     

10 Mar, 2011

1 commit


05 Mar, 2011

1 commit


16 Dec, 2010

1 commit

  • Allow drivers or rate control algorithms to specify BlockAck session
    timeout when initiating an ADDBA transaction. This is useful in cases
    where maintaining persistent BA sessions does not incur any overhead.

    The current timeout value of 5000 TUs is retained for all non ath9k/ath9k_htc
    drivers.

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

    Sujith Manoharan
     

25 Nov, 2010

1 commit


16 Nov, 2010

1 commit


12 Oct, 2010

1 commit

  • This patch fixes two problems with the minstrel_ht rate control
    algorithms handling of A-MPDU frames:

    1. The ampdu_len field of the tx status is not always initialized for
    non-HT frames (and it would probably be unreasonable to require all
    drivers to do so). This could cause rate control statistics to be
    corrupted. We now trust the ampdu_len and ampdu_ack_len fields only when
    the frame is marked with the IEEE80211_TX_STAT_AMPDU flag.

    2. Successful transmission attempts where only recognized when the A-MPDU
    subframe carrying the rate control status information was marked with the
    IEEE80211_TX_STAT_ACK flag. If this information happed to be carried on a
    frame that failed to be ACKed then the other subframes (which may have
    succeeded) where not correctly registered. We now update rate control
    statistics regardless of whether the subframe carrying the information was
    ACKed or not.

    Cc:
    Signed-off-by: Björn Smedman
    Acked-by: Felix Fietkau
    Signed-off-by: John W. Linville

    Björn Smedman
     

27 Jul, 2010

2 commits


03 Jul, 2010

2 commits


25 Jun, 2010

1 commit

  • net/mac80211/rc80211_minstrel_ht.c:440:46: warning: incorrect type in argument 2 (different signedness)
    net/mac80211/rc80211_minstrel_ht.c:440:46: expected int *idx
    net/mac80211/rc80211_minstrel_ht.c:440:46: got unsigned int *
    net/mac80211/rc80211_minstrel_ht.c:446:46: warning: incorrect type in argument 2 (different signedness)
    net/mac80211/rc80211_minstrel_ht.c:446:46: expected int *idx
    net/mac80211/rc80211_minstrel_ht.c:446:46: got unsigned int *

    Signed-off-by: John W. Linville
    Acked-by: Felix Fietkau

    John W. Linville
     

15 Jun, 2010

1 commit

  • Currently we allocate some memory for each TX
    aggregation session and additionally keep a
    state bitmap indicating the state it is in.
    By using RCU to protect the pointer, moving
    the state into the structure and some locking
    trickery we can avoid locking when the TX agg
    session is fully operational.

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

    Johannes Berg
     

03 Jun, 2010

1 commit