Complete the MCS rate table based on the final 802.11n std. While here
adjust the IEEE80211_HTRATE_MAXSIZE constant, only MCS0 - 76 are valid the other bits in the mcsset IE (77 - 127) are either reserved or used for TX parameters.
This commit is contained in:
parent
ad5db5c417
commit
3d57f75785
@ -335,7 +335,7 @@ struct ieee80211_rateset {
|
||||
* the structure such that it can be used interchangeably
|
||||
* with an ieee80211_rateset (modulo structure size).
|
||||
*/
|
||||
#define IEEE80211_HTRATE_MAXSIZE 127
|
||||
#define IEEE80211_HTRATE_MAXSIZE 77
|
||||
|
||||
struct ieee80211_htrateset {
|
||||
uint8_t rs_nrates;
|
||||
|
@ -1513,6 +1513,67 @@ ieee80211_rate2media(struct ieee80211com *ic, int rate, enum ieee80211_phymode m
|
||||
{ 13, IFM_IEEE80211_MCS },
|
||||
{ 14, IFM_IEEE80211_MCS },
|
||||
{ 15, IFM_IEEE80211_MCS },
|
||||
{ 16, IFM_IEEE80211_MCS },
|
||||
{ 17, IFM_IEEE80211_MCS },
|
||||
{ 18, IFM_IEEE80211_MCS },
|
||||
{ 19, IFM_IEEE80211_MCS },
|
||||
{ 20, IFM_IEEE80211_MCS },
|
||||
{ 21, IFM_IEEE80211_MCS },
|
||||
{ 22, IFM_IEEE80211_MCS },
|
||||
{ 23, IFM_IEEE80211_MCS },
|
||||
{ 24, IFM_IEEE80211_MCS },
|
||||
{ 25, IFM_IEEE80211_MCS },
|
||||
{ 26, IFM_IEEE80211_MCS },
|
||||
{ 27, IFM_IEEE80211_MCS },
|
||||
{ 28, IFM_IEEE80211_MCS },
|
||||
{ 29, IFM_IEEE80211_MCS },
|
||||
{ 30, IFM_IEEE80211_MCS },
|
||||
{ 31, IFM_IEEE80211_MCS },
|
||||
{ 32, IFM_IEEE80211_MCS },
|
||||
{ 33, IFM_IEEE80211_MCS },
|
||||
{ 34, IFM_IEEE80211_MCS },
|
||||
{ 35, IFM_IEEE80211_MCS },
|
||||
{ 36, IFM_IEEE80211_MCS },
|
||||
{ 37, IFM_IEEE80211_MCS },
|
||||
{ 38, IFM_IEEE80211_MCS },
|
||||
{ 39, IFM_IEEE80211_MCS },
|
||||
{ 40, IFM_IEEE80211_MCS },
|
||||
{ 41, IFM_IEEE80211_MCS },
|
||||
{ 42, IFM_IEEE80211_MCS },
|
||||
{ 43, IFM_IEEE80211_MCS },
|
||||
{ 44, IFM_IEEE80211_MCS },
|
||||
{ 45, IFM_IEEE80211_MCS },
|
||||
{ 46, IFM_IEEE80211_MCS },
|
||||
{ 47, IFM_IEEE80211_MCS },
|
||||
{ 48, IFM_IEEE80211_MCS },
|
||||
{ 49, IFM_IEEE80211_MCS },
|
||||
{ 50, IFM_IEEE80211_MCS },
|
||||
{ 51, IFM_IEEE80211_MCS },
|
||||
{ 52, IFM_IEEE80211_MCS },
|
||||
{ 53, IFM_IEEE80211_MCS },
|
||||
{ 54, IFM_IEEE80211_MCS },
|
||||
{ 55, IFM_IEEE80211_MCS },
|
||||
{ 56, IFM_IEEE80211_MCS },
|
||||
{ 57, IFM_IEEE80211_MCS },
|
||||
{ 58, IFM_IEEE80211_MCS },
|
||||
{ 59, IFM_IEEE80211_MCS },
|
||||
{ 60, IFM_IEEE80211_MCS },
|
||||
{ 61, IFM_IEEE80211_MCS },
|
||||
{ 62, IFM_IEEE80211_MCS },
|
||||
{ 63, IFM_IEEE80211_MCS },
|
||||
{ 64, IFM_IEEE80211_MCS },
|
||||
{ 65, IFM_IEEE80211_MCS },
|
||||
{ 66, IFM_IEEE80211_MCS },
|
||||
{ 67, IFM_IEEE80211_MCS },
|
||||
{ 68, IFM_IEEE80211_MCS },
|
||||
{ 69, IFM_IEEE80211_MCS },
|
||||
{ 70, IFM_IEEE80211_MCS },
|
||||
{ 71, IFM_IEEE80211_MCS },
|
||||
{ 72, IFM_IEEE80211_MCS },
|
||||
{ 73, IFM_IEEE80211_MCS },
|
||||
{ 74, IFM_IEEE80211_MCS },
|
||||
{ 75, IFM_IEEE80211_MCS },
|
||||
{ 76, IFM_IEEE80211_MCS },
|
||||
};
|
||||
int m;
|
||||
|
||||
|
@ -54,24 +54,84 @@ __FBSDID("$FreeBSD$");
|
||||
#define MS(_v, _f) (((_v) & _f) >> _f##_S)
|
||||
#define SM(_v, _f) (((_v) << _f##_S) & _f)
|
||||
|
||||
const struct ieee80211_mcs_rates ieee80211_htrates[16] = {
|
||||
/* 20Mhz SGI 40Mhz SGI */
|
||||
{ 13, 14, 27, 30 }, /* MCS 0 */
|
||||
{ 26, 29, 54, 60 }, /* MCS 1 */
|
||||
{ 39, 43, 81, 90 }, /* MCS 2 */
|
||||
{ 52, 58, 108, 120 }, /* MCS 3 */
|
||||
{ 78, 87, 162, 180 }, /* MCS 4 */
|
||||
{ 104, 116, 216, 240 }, /* MCS 5 */
|
||||
{ 117, 130, 243, 270 }, /* MCS 6 */
|
||||
{ 130, 144, 270, 300 }, /* MCS 7 */
|
||||
{ 26, 29, 54, 60 }, /* MCS 8 */
|
||||
{ 52, 58, 108, 120 }, /* MCS 9 */
|
||||
{ 78, 87, 162, 180 }, /* MCS 10 */
|
||||
{ 104, 116, 216, 240 }, /* MCS 11 */
|
||||
{ 156, 173, 324, 360 }, /* MCS 12 */
|
||||
{ 208, 231, 432, 480 }, /* MCS 13 */
|
||||
{ 234, 260, 486, 540 }, /* MCS 14 */
|
||||
{ 260, 289, 540, 600 } /* MCS 15 */
|
||||
const struct ieee80211_mcs_rates ieee80211_htrates[IEEE80211_HTRATE_MAXSIZE] = {
|
||||
{ 13, 14, 27, 30 }, /* MCS 0 */
|
||||
{ 26, 29, 54, 60 }, /* MCS 1 */
|
||||
{ 39, 43, 81, 90 }, /* MCS 2 */
|
||||
{ 52, 58, 108, 120 }, /* MCS 3 */
|
||||
{ 78, 87, 162, 180 }, /* MCS 4 */
|
||||
{ 104, 116, 216, 240 }, /* MCS 5 */
|
||||
{ 117, 130, 243, 270 }, /* MCS 6 */
|
||||
{ 130, 144, 270, 300 }, /* MCS 7 */
|
||||
{ 26, 29, 54, 60 }, /* MCS 8 */
|
||||
{ 52, 58, 108, 120 }, /* MCS 9 */
|
||||
{ 78, 87, 162, 180 }, /* MCS 10 */
|
||||
{ 104, 116, 216, 240 }, /* MCS 11 */
|
||||
{ 156, 173, 324, 360 }, /* MCS 12 */
|
||||
{ 208, 231, 432, 480 }, /* MCS 13 */
|
||||
{ 234, 260, 486, 540 }, /* MCS 14 */
|
||||
{ 260, 289, 540, 600 }, /* MCS 15 */
|
||||
{ 39, 43, 81, 90 }, /* MCS 16 */
|
||||
{ 78, 87, 162, 180 }, /* MCS 17 */
|
||||
{ 117, 130, 243, 270 }, /* MCS 18 */
|
||||
{ 156, 173, 324, 360 }, /* MCS 19 */
|
||||
{ 234, 260, 486, 540 }, /* MCS 20 */
|
||||
{ 312, 347, 648, 720 }, /* MCS 21 */
|
||||
{ 351, 390, 729, 810 }, /* MCS 22 */
|
||||
{ 390, 433, 810, 900 }, /* MCS 23 */
|
||||
{ 52, 58, 108, 120 }, /* MCS 24 */
|
||||
{ 104, 116, 216, 240 }, /* MCS 25 */
|
||||
{ 156, 173, 324, 360 }, /* MCS 26 */
|
||||
{ 208, 231, 432, 480 }, /* MCS 27 */
|
||||
{ 312, 347, 648, 720 }, /* MCS 28 */
|
||||
{ 416, 462, 864, 960 }, /* MCS 29 */
|
||||
{ 468, 520, 972, 1080 }, /* MCS 30 */
|
||||
{ 520, 578, 1080, 1200 }, /* MCS 31 */
|
||||
{ 0, 0, 12, 13 }, /* MCS 32 */
|
||||
{ 78, 87, 162, 180 }, /* MCS 33 */
|
||||
{ 104, 116, 216, 240 }, /* MCS 34 */
|
||||
{ 130, 144, 270, 300 }, /* MCS 35 */
|
||||
{ 117, 130, 243, 270 }, /* MCS 36 */
|
||||
{ 156, 173, 324, 360 }, /* MCS 37 */
|
||||
{ 195, 217, 405, 450 }, /* MCS 38 */
|
||||
{ 104, 116, 216, 240 }, /* MCS 39 */
|
||||
{ 130, 144, 270, 300 }, /* MCS 40 */
|
||||
{ 130, 144, 270, 300 }, /* MCS 41 */
|
||||
{ 156, 173, 324, 360 }, /* MCS 42 */
|
||||
{ 182, 202, 378, 420 }, /* MCS 43 */
|
||||
{ 182, 202, 378, 420 }, /* MCS 44 */
|
||||
{ 208, 231, 432, 480 }, /* MCS 45 */
|
||||
{ 156, 173, 324, 360 }, /* MCS 46 */
|
||||
{ 195, 217, 405, 450 }, /* MCS 47 */
|
||||
{ 195, 217, 405, 450 }, /* MCS 48 */
|
||||
{ 234, 260, 486, 540 }, /* MCS 49 */
|
||||
{ 273, 303, 567, 630 }, /* MCS 50 */
|
||||
{ 273, 303, 567, 630 }, /* MCS 51 */
|
||||
{ 312, 347, 648, 720 }, /* MCS 52 */
|
||||
{ 130, 144, 270, 300 }, /* MCS 53 */
|
||||
{ 156, 173, 324, 360 }, /* MCS 54 */
|
||||
{ 182, 202, 378, 420 }, /* MCS 55 */
|
||||
{ 156, 173, 324, 360 }, /* MCS 56 */
|
||||
{ 182, 202, 378, 420 }, /* MCS 57 */
|
||||
{ 208, 231, 432, 480 }, /* MCS 58 */
|
||||
{ 234, 260, 486, 540 }, /* MCS 59 */
|
||||
{ 208, 231, 432, 480 }, /* MCS 60 */
|
||||
{ 234, 260, 486, 540 }, /* MCS 61 */
|
||||
{ 260, 289, 540, 600 }, /* MCS 62 */
|
||||
{ 260, 289, 540, 600 }, /* MCS 63 */
|
||||
{ 286, 318, 594, 660 }, /* MCS 64 */
|
||||
{ 195, 217, 405, 450 }, /* MCS 65 */
|
||||
{ 234, 260, 486, 540 }, /* MCS 66 */
|
||||
{ 273, 303, 567, 630 }, /* MCS 67 */
|
||||
{ 234, 260, 486, 540 }, /* MCS 68 */
|
||||
{ 273, 303, 567, 630 }, /* MCS 69 */
|
||||
{ 312, 347, 648, 720 }, /* MCS 70 */
|
||||
{ 351, 390, 729, 810 }, /* MCS 71 */
|
||||
{ 312, 347, 648, 720 }, /* MCS 72 */
|
||||
{ 351, 390, 729, 810 }, /* MCS 73 */
|
||||
{ 390, 433, 810, 900 }, /* MCS 74 */
|
||||
{ 390, 433, 810, 900 }, /* MCS 75 */
|
||||
{ 429, 477, 891, 990 }, /* MCS 76 */
|
||||
};
|
||||
|
||||
static const struct ieee80211_htrateset ieee80211_rateset_11n =
|
||||
|
@ -159,7 +159,7 @@ struct ieee80211_mcs_rates {
|
||||
uint16_t ht40_rate_800ns;
|
||||
uint16_t ht40_rate_400ns;
|
||||
};
|
||||
extern const struct ieee80211_mcs_rates ieee80211_htrates[16];
|
||||
extern const struct ieee80211_mcs_rates ieee80211_htrates[];
|
||||
const struct ieee80211_htrateset *ieee80211_get_suphtrates(
|
||||
struct ieee80211com *, const struct ieee80211_channel *);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user