22 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
23 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
27 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
28 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
32 {{13, 26, 39, 52, 78, 104, 117, 130, 26, 52, 78, 104, 156, 208, 234,
33 260, 39, 78, 117, 234, 312, 351, 390, 52, 104, 156, 208, 312, 416,
34 468, 520, 0, 78, 104, 130, 117, 156, 195, 104, 130, 130, 156, 182,
35 182, 208, 156, 195, 195, 234, 273, 273, 312, 130, 156, 181, 156,
36 181, 208, 234, 208, 234, 260, 260, 286, 195, 234, 273, 234, 273,
37 312, 351, 312, 351, 390, 390, 429} ,
38 {14, 29, 43, 58, 87, 116, 130, 144, 29, 58, 87, 116, 173, 231, 260, 289,
39 43, 87, 130, 173, 260, 347, 390, 433, 58, 116, 173, 231, 347, 462, 520,
40 578, 0, 87, 116, 144, 130, 173, 217, 116, 144, 144, 173, 202, 202, 231,
41 173, 217, 217, 260, 303, 303, 347, 144, 173, 202, 173, 202, 231, 260,
42 231, 260, 289, 289, 318, 217, 260, 303, 260, 303, 347, 390, 347, 390,
44 {{27, 54, 81, 108, 162, 216, 243, 270, 54, 108, 162, 216, 324, 432, 486,
45 540, 81, 162, 243, 324, 486, 648, 729, 810, 108, 216, 324, 432, 648,
46 864, 972, 1080, 12, 162, 216, 270, 243, 324, 405, 216, 270, 270, 324,
47 378, 378, 432, 324, 405, 405, 486, 567, 567, 648, 270, 324, 378, 324,
48 378, 432, 486, 432, 486, 540, 540, 594, 405, 486, 567, 486, 567, 648,
49 729, 648, 729, 810, 810, 891},
50 {30, 60, 90, 120, 180, 240, 270, 300, 60, 120, 180, 240, 360, 480, 540,
51 600, 90, 180, 270, 360, 540, 720, 810, 900, 120, 240, 360, 480, 720,
52 960, 1080, 1200, 13, 180, 240, 300, 270, 360, 450, 240, 300, 300, 360,
53 420, 420, 480, 360, 450, 450, 540, 630, 630, 720, 300, 360, 420, 360,
54 420, 480, 540, 480, 540, 600, 600, 660, 450, 540, 630, 540, 630, 720,
55 810, 720, 810, 900, 900, 990} }
58 static u8 UNKNOWN_BORADCOM[3] = {0x00, 0x14, 0xbf};
60 static u8 LINKSYSWRT330_LINKSYSWRT300_BROADCOM[3] = {0x00, 0x1a, 0x70};
62 static u8 LINKSYSWRT350_LINKSYSWRT150_BROADCOM[3] = {0x00, 0x1d, 0x7e};
64 static u8 BELKINF5D8233V1_RALINK[3] = {0x00, 0x17, 0x3f};
66 static u8 BELKINF5D82334V3_RALINK[3] = {0x00, 0x1c, 0xdf};
68 static u8 PCI_RALINK[3] = {0x00, 0x90, 0xcc};
70 static u8 EDIMAX_RALINK[3] = {0x00, 0x0e, 0x2e};
72 static u8 AIRLINK_RALINK[3] = {0x00, 0x18, 0x02};
74 static u8 DLINK_ATHEROS_1[3] = {0x00, 0x1c, 0xf0};
76 static u8 DLINK_ATHEROS_2[3] = {0x00, 0x21, 0x91};
78 static u8 CISCO_BROADCOM[3] = {0x00, 0x17, 0x94};
80 static u8 LINKSYS_MARVELL_4400N[3] = {0x00, 0x14, 0xa4};
123 static u8 EWC11NHTCap[] = {0x00, 0x90, 0x4c, 0x33};
126 if (!
memcmp(CapIE, EWC11NHTCap,
sizeof(EWC11NHTCap))) {
136 (pCapELE->
ChlWidth) ?
"20MHz" :
"20/40MHz");
142 (pCapELE->
TxSTBC) ?
"YES" :
"NO");
146 (pCapELE->
DssCCk) ?
"YES" :
"NO");
152 pCapELE->
MCS[0], pCapELE->
MCS[1], pCapELE->
MCS[2],
153 pCapELE->
MCS[3], pCapELE->
MCS[4]);
161 static u8 EWC11NHTInfo[] = {0x00, 0x90, 0x4c, 0x34};
164 if (!
memcmp(InfoIE, EWC11NHTInfo,
sizeof(EWC11NHTInfo))) {
172 "Called by %s\n", TitleString);
219 bool retValue =
false;
238 bool retValue =
false;
288 u16 CCKOFDMRate[12] = {0x02, 0x04, 0x0b, 0x16, 0x0c, 0x12, 0x18,
289 0x24, 0x30, 0x48, 0x60, 0x6c};
293 if (nDataRate < 12) {
294 return CCKOFDMRate[nDataRate];
296 if (nDataRate >= 0x10 && nDataRate <= 0x1f) {
299 }
else if (nDataRate >= 0x20 && nDataRate <= 0x2f) {
303 }
else if (nDataRate >= 0x30 && nDataRate <= 0x3f) {
306 }
else if (nDataRate >= 0x40 && nDataRate <= 0x4f) {
316 bool retValue =
false;
319 if ((
memcmp(net->
bssid, BELKINF5D8233V1_RALINK, 3) == 0) ||
320 (
memcmp(net->
bssid, BELKINF5D82334V3_RALINK, 3) == 0) ||
326 else if (!
memcmp(net->
bssid, UNKNOWN_BORADCOM, 3) ||
327 !
memcmp(net->
bssid, LINKSYSWRT330_LINKSYSWRT300_BROADCOM, 3) ||
328 !
memcmp(net->
bssid, LINKSYSWRT350_LINKSYSWRT150_BROADCOM, 3) ||
331 else if (net->
bssht.bdRT2RTAggregation)
343 if (net->
bssht.bdRT2RTAggregation) {
351 else if (!
memcmp(net->
bssid, UNKNOWN_BORADCOM, 3) ||
352 !
memcmp(net->
bssid, LINKSYSWRT330_LINKSYSWRT300_BROADCOM, 3) ||
353 !
memcmp(net->
bssid, LINKSYSWRT350_LINKSYSWRT150_BROADCOM, 3))
355 else if ((
memcmp(net->
bssid, BELKINF5D8233V1_RALINK, 3) == 0) ||
356 (
memcmp(net->
bssid, BELKINF5D82334V3_RALINK, 3) == 0) ||
366 else if ((
memcmp(net->
bssid, CISCO_BROADCOM, 3) == 0) ||
369 else if ((
memcmp(net->
bssid, LINKSYS_MARVELL_4400N, 3) == 0) ||
389 bool retValue =
false;
425 static void HTIOTActDetermineRaFunc(
struct rtllib_device *ieee,
bool bPeerRx2ss)
446 u8 *len,
u8 IsEncrypt,
bool bAssoc)
451 if ((posHTCap ==
NULL) || (pHT ==
NULL)) {
453 "null in HTConstructCapabilityElement()\n");
456 memset(posHTCap, 0, *len);
459 u8 EWC11NHTCap[] = {0x00, 0x90, 0x4c, 0x33};
460 memcpy(posHTCap, EWC11NHTCap,
sizeof(EWC11NHTCap));
508 pCapELE->
MCS[1] &= 0x7f;
511 pCapELE->
MCS[1] &= 0xbf;
514 pCapELE->
MCS[1] &= 0x00;
528 u8 *len,
u8 IsEncrypt)
532 if ((posHTInfo ==
NULL) || (pHTInfoEle ==
NULL)) {
534 "null in HTConstructInfoElement()\n");
538 memset(posHTInfo, 0, *len);
548 pHTInfoEle->
RIFS = 0;
573 if (posRT2RTAgg ==
NULL) {
575 "HTConstructRT2RTAggElement()\n");
578 memset(posRT2RTAgg, 0, *len);
579 *posRT2RTAgg++ = 0x00;
580 *posRT2RTAgg++ = 0xe0;
581 *posRT2RTAgg++ = 0x4c;
582 *posRT2RTAgg++ = 0x02;
583 *posRT2RTAgg++ = 0x01;
598 if (pOperateMCS ==
NULL) {
600 " in HT_PickMCSRate()\n");
604 switch (ieee->
mode) {
608 for (i = 0; i <= 15; i++)
631 u8 availableMcsRate[16];
632 if (pMCSRateSet ==
NULL || pMCSFilter ==
NULL) {
634 "be null in HTGetHighestMCSRate()\n");
637 for (i = 0; i < 16; i++)
638 availableMcsRate[i] = pMCSRateSet[i] & pMCSFilter[i];
640 for (i = 0; i < 16; i++) {
641 if (availableMcsRate[i] != 0)
647 for (i = 0; i < 16; i++) {
648 if (availableMcsRate[i] != 0) {
649 bitMap = availableMcsRate[
i];
650 for (j = 0; j < 8; j++) {
651 if ((bitMap%2) != 0) {
660 return mcsRate | 0x80;
668 for (i = 0; i <= 15; i++)
677 for (i = 2; i <= 15; i++)
692 u16 nMaxAMSDUSize = 0;
695 static u8 EWC11NHTCap[] = {0x00, 0x90, 0x4c, 0x33};
696 static u8 EWC11NHTInfo[] = {0x00, 0x90, 0x4c, 0x34};
725 true :
false) :
false);
728 true :
false) :
false);
731 ((pPeerHTCap->
DssCCk == 1) ?
true :
737 nMaxAMSDUSize = (pPeerHTCap->
MaxAMSDUSize == 0) ? 3839 : 7935;
785 if (pPeerHTCap->
MCS[0] == 0)
786 pPeerHTCap->
MCS[0] = 0xff;
788 HTIOTActDetermineRaFunc(ieee, ((pPeerHTCap->
MCS[1]) != 0));
849 RegHTSuppRateSets[0] = 0xFF;
850 RegHTSuppRateSets[1] = 0xFF;
851 RegHTSuppRateSets[4] = 0x01;
880 if (pNetwork->
bssht.bdSupportHT) {
884 if (pNetwork->
bssht.bdHTCapLen > 0 &&
887 pNetwork->
bssht.bdHTCapBuf,
888 pNetwork->
bssht.bdHTCapLen);
890 if (pNetwork->
bssht.bdHTInfoLen > 0 &&
891 pNetwork->
bssht.bdHTInfoLen <=
894 pNetwork->
bssht.bdHTInfoBuf,
895 pNetwork->
bssht.bdHTInfoLen);
899 pNetwork->
bssht.bdRT2RTAggregation;
901 pNetwork->
bssht.bdRT2RTLongSlotTime;
954 if (pNetwork->
bssht.bdHTInfoLen != 0)
999 if (ieee->
pHTInfo->bCurrentHTSupport) {