ath9k: update the ath_max_4ms_framelen table
Include MCS0-31 and also add SGI for HT20. This makes it possible to support more different rate combinations with newer hardware. Based on a patch by Selvam. T. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
7817e4ceb6
commit
0e668cde0d
@ -71,24 +71,36 @@ static void ath_tx_rc_status(struct ath_buf *bf, struct ath_tx_status *ts,
|
||||
int nbad, int txok, bool update_rc);
|
||||
|
||||
enum {
|
||||
MCS_DEFAULT,
|
||||
MCS_HT20,
|
||||
MCS_HT20_SGI,
|
||||
MCS_HT40,
|
||||
MCS_HT40_SGI,
|
||||
};
|
||||
|
||||
static int ath_max_4ms_framelen[3][16] = {
|
||||
[MCS_DEFAULT] = {
|
||||
3216, 6434, 9650, 12868, 19304, 25740, 28956, 32180,
|
||||
6430, 12860, 19300, 25736, 38600, 51472, 57890, 64320,
|
||||
static int ath_max_4ms_framelen[4][32] = {
|
||||
[MCS_HT20] = {
|
||||
3212, 6432, 9648, 12864, 19300, 25736, 28952, 32172,
|
||||
6424, 12852, 19280, 25708, 38568, 51424, 57852, 64280,
|
||||
9628, 19260, 28896, 38528, 57792, 65532, 65532, 65532,
|
||||
12828, 25656, 38488, 51320, 65532, 65532, 65532, 65532,
|
||||
},
|
||||
[MCS_HT20_SGI] = {
|
||||
3572, 7144, 10720, 14296, 21444, 28596, 32172, 35744,
|
||||
7140, 14284, 21428, 28568, 42856, 57144, 64288, 65532,
|
||||
10700, 21408, 32112, 42816, 64228, 65532, 65532, 65532,
|
||||
14256, 28516, 42780, 57040, 65532, 65532, 65532, 65532,
|
||||
},
|
||||
[MCS_HT40] = {
|
||||
6684, 13368, 20052, 26738, 40104, 53476, 60156, 66840,
|
||||
13360, 26720, 40080, 53440, 80160, 106880, 120240, 133600,
|
||||
6680, 13360, 20044, 26724, 40092, 53456, 60140, 65532,
|
||||
13348, 26700, 40052, 53400, 65532, 65532, 65532, 65532,
|
||||
20004, 40008, 60016, 65532, 65532, 65532, 65532, 65532,
|
||||
26644, 53292, 65532, 65532, 65532, 65532, 65532, 65532,
|
||||
},
|
||||
[MCS_HT40_SGI] = {
|
||||
/* TODO: Only MCS 7 and 15 updated, recalculate the rest */
|
||||
6684, 13368, 20052, 26738, 40104, 53476, 60156, 74200,
|
||||
13360, 26720, 40080, 53440, 80160, 106880, 120240, 148400,
|
||||
7420, 14844, 22272, 29696, 44544, 59396, 65532, 65532,
|
||||
14832, 29668, 44504, 59340, 65532, 65532, 65532, 65532,
|
||||
22232, 44464, 65532, 65532, 65532, 65532, 65532, 65532,
|
||||
29616, 59232, 65532, 65532, 65532, 65532, 65532, 65532,
|
||||
}
|
||||
};
|
||||
|
||||
@ -538,12 +550,13 @@ static u32 ath_lookup_rate(struct ath_softc *sc, struct ath_buf *bf,
|
||||
break;
|
||||
}
|
||||
|
||||
if (rates[i].flags & IEEE80211_TX_RC_SHORT_GI)
|
||||
modeidx = MCS_HT40_SGI;
|
||||
else if (rates[i].flags & IEEE80211_TX_RC_40_MHZ_WIDTH)
|
||||
if (rates[i].flags & IEEE80211_TX_RC_40_MHZ_WIDTH)
|
||||
modeidx = MCS_HT40;
|
||||
else
|
||||
modeidx = MCS_DEFAULT;
|
||||
modeidx = MCS_HT20;
|
||||
|
||||
if (rates[i].flags & IEEE80211_TX_RC_SHORT_GI)
|
||||
modeidx++;
|
||||
|
||||
frmlen = ath_max_4ms_framelen[modeidx][rates[i].idx];
|
||||
max_4ms_framelen = min(max_4ms_framelen, frmlen);
|
||||
|
Loading…
Reference in New Issue
Block a user