18fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#ifndef __INC_QOS_TYPE_H 28fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define __INC_QOS_TYPE_H 38fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 48fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT0 0x00000001 58fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT1 0x00000002 68fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT2 0x00000004 78fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT3 0x00000008 88fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT4 0x00000010 98fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT5 0x00000020 108fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT6 0x00000040 118fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT7 0x00000080 128fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT8 0x00000100 138fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT9 0x00000200 148fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT10 0x00000400 158fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT11 0x00000800 168fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT12 0x00001000 178fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT13 0x00002000 188fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT14 0x00004000 198fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT15 0x00008000 208fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT16 0x00010000 218fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT17 0x00020000 228fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT18 0x00040000 238fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT19 0x00080000 248fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT20 0x00100000 258fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT21 0x00200000 268fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT22 0x00400000 278fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT23 0x00800000 288fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT24 0x01000000 298fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT25 0x02000000 308fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT26 0x04000000 318fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT27 0x08000000 328fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT28 0x10000000 338fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT29 0x20000000 348fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT30 0x40000000 358fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define BIT31 0x80000000 368fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 378fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define MAX_WMMELE_LENGTH 64 388fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 398fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 408fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// QoS mode. 418fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// enum 0, 1, 2, 4: since we can use the OR(|) operation. 428fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 438fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// QOS_MODE is redefined for enum can't be ++, | under C++ compiler, 2006.05.17, by rcnjko. 448fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang//typedef enum _QOS_MODE{ 458fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// QOS_DISABLE = 0, 468fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// QOS_WMM = 1, 478fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// QOS_EDCA = 2, 488fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// QOS_HCCA = 4, 498fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang//}QOS_MODE,*PQOS_MODE; 508fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 518fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangtypedef u32 QOS_MODE, *PQOS_MODE; 528fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define QOS_DISABLE 0 538fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define QOS_WMM 1 548fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define QOS_WMMSA 2 558fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define QOS_EDCA 4 568fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define QOS_HCCA 8 578fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define QOS_WMM_UAPSD 16 //WMM Power Save, 2006-06-14 Isaiah 588fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 598fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define AC_PARAM_SIZE 4 608fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define WMM_PARAM_ELE_BODY_LEN 18 618fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 628fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 638fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// QoS ACK Policy Field Values 648fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// Ref: WMM spec 2.1.6: QoS Control Field, p.10. 658fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 668fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangtypedef enum _ACK_POLICY{ 678fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang eAckPlc0_ACK = 0x00, 688fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang eAckPlc1_NoACK = 0x01, 698fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang}ACK_POLICY,*PACK_POLICY; 708fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 718fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define WMM_PARAM_ELEMENT_SIZE (8+(4*AC_PARAM_SIZE)) 728fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 738fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 748fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// QoS Control Field 758fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// Ref: 768fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 1. WMM spec 2.1.6: QoS Control Field, p.9. 778fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 2. 802.11e/D13.0 7.1.3.5, p.26. 788fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 798fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangtypedef union _QOS_CTRL_FIELD{ 808fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 charData[2]; 818fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u16 shortData; 828fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 838fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang // WMM spec 848fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang struct 858fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang { 868fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 UP:3; 878fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 usRsvd1:1; 888fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 EOSP:1; 898fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 AckPolicy:2; 908fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 usRsvd2:1; 918fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucRsvdByte; 928fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang }WMM; 938fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 948fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang // 802.11e: QoS data type frame sent by non-AP QSTAs. 958fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang struct 968fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang { 978fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 TID:4; 988fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 bIsQsize:1;// 0: BIT[8:15] is TXOP Duration Requested, 1: BIT[8:15] is Queue Size. 998fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 AckPolicy:2; 1008fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 usRsvd:1; 1018fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 TxopOrQsize; // (BIT4=0)TXOP Duration Requested or (BIT4=1)Queue Size. 1028fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang }BySta; 1038fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 1048fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang // 802.11e: QoS data, QoS Null, and QoS Data+CF-Ack frames sent by HC. 1058fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang struct 1068fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang { 1078fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 TID:4; 1088fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 EOSP:1; 1098fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 AckPolicy:2; 1108fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 usRsvd:1; 1118fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 PSBufState; // QAP PS Buffer State. 1128fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang }ByHc_Data; 1138fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 1148fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang // 802.11e: QoS (+) CF-Poll frames sent by HC. 1158fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang struct 1168fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang { 1178fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 TID:4; 1188fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 EOSP:1; 1198fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 AckPolicy:2; 1208fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 usRsvd:1; 1218fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 TxopLimit; // TXOP Limit. 1228fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang }ByHc_CFP; 1238fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 1248fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang}QOS_CTRL_FIELD, *PQOS_CTRL_FIELD; 1258fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 1268fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 1278fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 1288fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// QoS Info Field 1298fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// Ref: 1308fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 1. WMM spec 2.2.1: WME Information Element, p.11. 1318fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 2. 8185 QoS code: QOS_INFO [def. in QoS_mp.h] 1328fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 1338fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangtypedef union _QOS_INFO_FIELD{ 1348fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 charData; 1358fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 1368fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang struct 1378fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang { 1388fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucParameterSetCount:4; 1398fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucReserved:4; 1408fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang }WMM; 1418fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 1428fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang struct 1438fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang { 1448fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang //Ref WMM_Specification_1-1.pdf, 2006-06-13 Isaiah 1458fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucAC_VO_UAPSD:1; 1468fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucAC_VI_UAPSD:1; 1478fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucAC_BE_UAPSD:1; 1488fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucAC_BK_UAPSD:1; 1498fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucReserved1:1; 1508fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucMaxSPLen:2; 1518fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucReserved2:1; 1528fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 1538fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang }ByWmmPsSta; 1548fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 1558fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang struct 1568fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang { 1578fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang //Ref WMM_Specification_1-1.pdf, 2006-06-13 Isaiah 1588fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucParameterSetCount:4; 1598fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucReserved:3; 1608fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucApUapsd:1; 1618fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang }ByWmmPsAp; 1628fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 1638fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang struct 1648fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang { 1658fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucAC3_UAPSD:1; 1668fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucAC2_UAPSD:1; 1678fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucAC1_UAPSD:1; 1688fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucAC0_UAPSD:1; 1698fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucQAck:1; 1708fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucMaxSPLen:2; 1718fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucMoreDataAck:1; 1728fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang } By11eSta; 1738fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 1748fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang struct 1758fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang { 1768fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucParameterSetCount:4; 1778fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucQAck:1; 1788fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucQueueReq:1; 1798fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucTXOPReq:1; 1808fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucReserved:1; 1818fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang } By11eAp; 1828fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 1838fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang struct 1848fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang { 1858fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucReserved1:4; 1868fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucQAck:1; 1878fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucReserved2:2; 1888fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucMoreDataAck:1; 1898fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang } ByWmmsaSta; 1908fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 1918fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang struct 1928fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang { 1938fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucReserved1:4; 1948fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucQAck:1; 1958fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucQueueReq:1; 1968fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucTXOPReq:1; 1978fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucReserved2:1; 1988fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang } ByWmmsaAp; 1998fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 2008fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang struct 2018fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang { 2028fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucAC3_UAPSD:1; 2038fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucAC2_UAPSD:1; 2048fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucAC1_UAPSD:1; 2058fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucAC0_UAPSD:1; 2068fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucQAck:1; 2078fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucMaxSPLen:2; 2088fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucMoreDataAck:1; 2098fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang } ByAllSta; 2108fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 2118fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang struct 2128fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang { 2138fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucParameterSetCount:4; 2148fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucQAck:1; 2158fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucQueueReq:1; 2168fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucTXOPReq:1; 2178fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucApUapsd:1; 2188fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang } ByAllAp; 2198fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 2208fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang}QOS_INFO_FIELD, *PQOS_INFO_FIELD; 2218fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 2228fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 2238fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// ACI to AC coding. 2248fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// Ref: WMM spec 2.2.2: WME Parameter Element, p.13. 2258fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 2268fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// AC_CODING is redefined for enum can't be ++, | under C++ compiler, 2006.05.17, by rcnjko. 2278fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang//typedef enum _AC_CODING{ 2288fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// AC0_BE = 0, // ACI: 0x00 // Best Effort 2298fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// AC1_BK = 1, // ACI: 0x01 // Background 2308fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// AC2_VI = 2, // ACI: 0x10 // Video 2318fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// AC3_VO = 3, // ACI: 0x11 // Voice 2328fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// AC_MAX = 4, // Max: define total number; Should not to be used as a real enum. 2338fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang//}AC_CODING,*PAC_CODING; 2348fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 2358fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangtypedef u32 AC_CODING; 2368fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define AC0_BE 0 // ACI: 0x00 // Best Effort 2378fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define AC1_BK 1 // ACI: 0x01 // Background 2388fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define AC2_VI 2 // ACI: 0x10 // Video 2398fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define AC3_VO 3 // ACI: 0x11 // Voice 2408fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define AC_MAX 4 // Max: define total number; Should not to be used as a real enum. 2418fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 2428fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 2438fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// ACI/AIFSN Field. 2448fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// Ref: WMM spec 2.2.2: WME Parameter Element, p.12. 2458fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 2468fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangtypedef union _ACI_AIFSN{ 2478fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 charData; 2488fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 2498fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang struct 2508fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang { 2518fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 AIFSN:4; 2528fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ACM:1; 2538fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ACI:2; 2548fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 Reserved:1; 2558fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang }f; // Field 2568fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang}ACI_AIFSN, *PACI_AIFSN; 2578fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 2588fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 2598fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// ECWmin/ECWmax field. 2608fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// Ref: WMM spec 2.2.2: WME Parameter Element, p.13. 2618fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 2628fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangtypedef union _ECW{ 2638fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 charData; 2648fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang struct 2658fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang { 2668fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ECWmin:4; 2678fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ECWmax:4; 2688fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang }f; // Field 2698fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang}ECW, *PECW; 2708fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 2718fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 2728fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// AC Parameters Record Format. 2738fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// Ref: WMM spec 2.2.2: WME Parameter Element, p.12. 2748fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 2758fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangtypedef union _AC_PARAM{ 2768fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u32 longData; 2778fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 charData[4]; 2788fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 2798fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang struct 2808fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang { 2818fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang ACI_AIFSN AciAifsn; 2828fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang ECW Ecw; 2838fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u16 TXOPLimit; 2848fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang }f; // Field 2858fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang}AC_PARAM, *PAC_PARAM; 2868fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 2878fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 2888fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 2898fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 2908fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// QoS element subtype 2918fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 2928fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangtypedef enum _QOS_ELE_SUBTYPE{ 2938fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang QOSELE_TYPE_INFO = 0x00, // 0x00: Information element 2948fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang QOSELE_TYPE_PARAM = 0x01, // 0x01: parameter element 2958fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang}QOS_ELE_SUBTYPE,*PQOS_ELE_SUBTYPE; 2968fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 2978fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 2988fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 2998fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// Direction Field Values. 3008fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// Ref: WMM spec 2.2.11: WME TSPEC Element, p.18. 3018fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 3028fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangtypedef enum _DIRECTION_VALUE{ 3038fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang DIR_UP = 0, // 0x00 // UpLink 3048fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang DIR_DOWN = 1, // 0x01 // DownLink 3058fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang DIR_DIRECT = 2, // 0x10 // DirectLink 3068fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang DIR_BI_DIR = 3, // 0x11 // Bi-Direction 3078fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang}DIRECTION_VALUE,*PDIRECTION_VALUE; 3088fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 3098fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 3108fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 3118fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// TS Info field in WMM TSPEC Element. 3128fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// Ref: 3138fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 1. WMM spec 2.2.11: WME TSPEC Element, p.18. 3148fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 2. 8185 QoS code: QOS_TSINFO [def. in QoS_mp.h] 3158fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 3168fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangtypedef union _QOS_TSINFO{ 3178fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 charData[3]; 3188fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang struct { 3198fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucTrafficType:1; //WMM is reserved 3208fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucTSID:4; 3218fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucDirection:2; 3228fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucAccessPolicy:2; //WMM: bit8=0, bit7=1 3238fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucAggregation:1; //WMM is reserved 3248fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucPSB:1; //WMMSA is APSD 3258fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucUP:3; 3268fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucTSInfoAckPolicy:2; //WMM is reserved 3278fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucSchedule:1; //WMM is reserved 3288fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ucReserved:7; 3298fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang }field; 3308fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang}QOS_TSINFO, *PQOS_TSINFO; 3318fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 3328fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 3338fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// WMM TSPEC Body. 3348fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// Ref: WMM spec 2.2.11: WME TSPEC Element, p.16. 3358fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 3368fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangtypedef union _TSPEC_BODY{ 3378fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 charData[55]; 3388fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 3398fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang struct 3408fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang { 3418fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang QOS_TSINFO TSInfo; //u8 TSInfo[3]; 3428fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u16 NominalMSDUsize; 3438fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u16 MaxMSDUsize; 3448fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u32 MinServiceItv; 3458fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u32 MaxServiceItv; 3468fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u32 InactivityItv; 3478fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u32 SuspenItv; 3488fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u32 ServiceStartTime; 3498fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u32 MinDataRate; 3508fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u32 MeanDataRate; 3518fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u32 PeakDataRate; 3528fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u32 MaxBurstSize; 3538fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u32 DelayBound; 3548fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u32 MinPhyRate; 3558fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u16 SurplusBandwidthAllowance; 3568fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u16 MediumTime; 3578fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang } f; // Field 3588fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang}TSPEC_BODY, *PTSPEC_BODY; 3598fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 3608fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 3618fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 3628fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// WMM TSPEC Element. 3638fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// Ref: WMM spec 2.2.11: WME TSPEC Element, p.16. 3648fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 3658fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangtypedef struct _WMM_TSPEC{ 3668fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ID; 3678fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 Length; 3688fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 OUI[3]; 3698fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 OUI_Type; 3708fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 OUI_SubType; 3718fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 Version; 3728fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang TSPEC_BODY Body; 3738fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang} WMM_TSPEC, *PWMM_TSPEC; 3748fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 3758fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 3768fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// ACM implementation method. 3778fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// Annie, 2005-12-13. 3788fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 3798fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangtypedef enum _ACM_METHOD{ 3808fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang eAcmWay0_SwAndHw = 0, // By SW and HW. 3818fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang eAcmWay1_HW = 1, // By HW. 3828fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang eAcmWay2_SW = 2, // By SW. 3838fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang}ACM_METHOD,*PACM_METHOD; 3848fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 3858fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 3868fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangtypedef struct _ACM{ 3878fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// u8 RegEnableACM; 3888fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u64 UsedTime; 3898fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u64 MediumTime; 3908fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 HwAcmCtl; // TRUE: UsedTime exceed => Do NOT USE this AC. It wll be written to ACM_CONTROL(0xBF BIT 0/1/2 in 8185B). 3918fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang}ACM, *PACM; 3928fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 3938fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangtypedef u8 AC_UAPSD, *PAC_UAPSD; 3948fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 3958fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define GET_VO_UAPSD(_apsd) ((_apsd) & BIT0) 3968fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define SET_VO_UAPSD(_apsd) ((_apsd) |= BIT0) 3978fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 3988fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define GET_VI_UAPSD(_apsd) ((_apsd) & BIT1) 3998fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define SET_VI_UAPSD(_apsd) ((_apsd) |= BIT1) 4008fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 4018fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define GET_BK_UAPSD(_apsd) ((_apsd) & BIT2) 4028fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define SET_BK_UAPSD(_apsd) ((_apsd) |= BIT2) 4038fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 4048fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define GET_BE_UAPSD(_apsd) ((_apsd) & BIT3) 4058fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define SET_BE_UAPSD(_apsd) ((_apsd) |= BIT3) 4068fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 4078fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 4088fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang//typedef struct _TCLASS{ 4098fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// TODO 4108fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang//} TCLASS, *PTCLASS; 4118fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangtypedef union _QOS_TCLAS{ 4128fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 4138fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang struct _TYPE_GENERAL{ 4148fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 Priority; 4158fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ClassifierType; 4168fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 Mask; 4178fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang } TYPE_GENERAL; 4188fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 4198fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang struct _TYPE0_ETH{ 4208fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 Priority; 4218fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ClassifierType; 4228fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 Mask; 4238fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 SrcAddr[6]; 4248fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 DstAddr[6]; 4258fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u16 Type; 4268fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang } TYPE0_ETH; 4278fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 4288fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang struct _TYPE1_IPV4{ 4298fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 Priority; 4308fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ClassifierType; 4318fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 Mask; 4328fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 Version; 4338fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 SrcIP[4]; 4348fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 DstIP[4]; 4358fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u16 SrcPort; 4368fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u16 DstPort; 4378fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 DSCP; 4388fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 Protocol; 4398fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 Reserved; 4408fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang } TYPE1_IPV4; 4418fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 4428fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang struct _TYPE1_IPV6{ 4438fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 Priority; 4448fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ClassifierType; 4458fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 Mask; 4468fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 Version; 4478fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 SrcIP[16]; 4488fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 DstIP[16]; 4498fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u16 SrcPort; 4508fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u16 DstPort; 4518fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 FlowLabel[3]; 4528fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang } TYPE1_IPV6; 4538fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 4548fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang struct _TYPE2_8021Q{ 4558fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 Priority; 4568fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 ClassifierType; 4578fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 Mask; 4588fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u16 TagType; 4598fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang } TYPE2_8021Q; 4608fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang} QOS_TCLAS, *PQOS_TCLAS; 4618fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 4628fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang//typedef struct _WMM_TSTREAM{ 4638fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 4648fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang//- TSPEC 4658fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang//- AC (which to mapping) 4668fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang//} WMM_TSTREAM, *PWMM_TSTREAM; 4678fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangtypedef struct _QOS_TSTREAM{ 4688fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 AC; 4698fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang WMM_TSPEC TSpec; 4708fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang QOS_TCLAS TClass; 4718fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang} QOS_TSTREAM, *PQOS_TSTREAM; 4728fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 4738fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang//typedef struct _U_APSD{ 4748fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang//- TriggerEnable [4] 4758fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang//- MaxSPLength 4768fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang//- HighestAcBuffered 4778fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang//} U_APSD, *PU_APSD; 4788fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 4798fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang//joseph TODO: 4808fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// UAPSD function should be implemented by 2 data structure 4818fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// "Qos control field" and "Qos info field" 4828fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang//typedef struct _QOS_UAPSD{ 4838fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// u8 bTriggerEnable[4]; 4848fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// u8 MaxSPLength; 4858fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// u8 HighestBufAC; 4868fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang//} QOS_UAPSD, *PQOS_APSD; 4878fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 4888fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang//---------------------------------------------------------------------------- 4898fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 802.11 Management frame Status Code field 4908fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang//---------------------------------------------------------------------------- 4918fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangtypedef struct _OCTET_STRING{ 492e406322b4b963e622f41d76193d8ca9e5435adb8Mauro Carvalho Chehab u8 *Octet; 493e406322b4b963e622f41d76193d8ca9e5435adb8Mauro Carvalho Chehab u16 Length; 4948fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang}OCTET_STRING, *POCTET_STRING; 495b63eaed0da3370817f74002b81a57b25c43e72cbH Hartley Sweeten 4968fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 4978fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// STA QoS data. 4988fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// Ref: DOT11_QOS in 8185 code. [def. in QoS_mp.h] 4998fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 5008fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangtypedef struct _STA_QOS{ 5018fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang //DECLARE_RT_OBJECT(STA_QOS); 5028fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 WMMIEBuf[MAX_WMMELE_LENGTH]; 5038fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8* WMMIE; 5048fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 5058fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang // Part 1. Self QoS Mode. 5068fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang QOS_MODE QosCapability; //QoS Capability, 2006-06-14 Isaiah 5078fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang QOS_MODE CurrentQosMode; 5088fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 5098fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang // For WMM Power Save Mode : 5108fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang // ACs are trigger/delivery enabled or legacy power save enabled. 2006-06-13 Isaiah 5118fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang AC_UAPSD b4ac_Uapsd; //VoUapsd(bit0), ViUapsd(bit1), BkUapsd(bit2), BeUapsd(bit3), 5128fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang AC_UAPSD Curr4acUapsd; 5138fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 bInServicePeriod; 5148fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 MaxSPLength; 5158fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang int NumBcnBeforeTrigger; 5168fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 5178fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang // Part 2. EDCA Parameter (perAC) 5188fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 * pWMMInfoEle; 5198fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 WMMParamEle[WMM_PARAM_ELEMENT_SIZE]; 5208fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 WMMPELength; 5218fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 5228fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang // <Bruce_Note> 5238fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang //2 ToDo: remove the Qos Info Field and replace it by the above WMM Info element. 5248fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang // By Bruce, 2008-01-30. 5258fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang // Part 2. EDCA Parameter (perAC) 5268fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang QOS_INFO_FIELD QosInfoField_STA; // Maintained by STA 5278fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang QOS_INFO_FIELD QosInfoField_AP; // Retrieved from AP 5288fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 5298fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang AC_PARAM CurAcParameters[4]; 5308fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 5318fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang // Part 3. ACM 5328fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang ACM acm[4]; 5338fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang ACM_METHOD AcmMethod; 5348fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 5358fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang // Part 4. Per TID (Part 5: TCLASS will be described by TStream) 5368fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang QOS_TSTREAM TStream[16]; 5378fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang WMM_TSPEC TSpec; 5388fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 5398fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u32 QBssWirelessMode; 5408fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 5418fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang // No Ack Setting 5428fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 bNoAck; 5438fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 5448fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang // Enable/Disable Rx immediate BA capability. 5458fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 bEnableRxImmBA; 5468fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 5478fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang}STA_QOS, *PSTA_QOS; 5488fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 5498fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 5508fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// BSS QOS data. 5518fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// Ref: BssDscr in 8185 code. [def. in BssDscr.h] 5528fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 5538fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuangtypedef struct _BSS_QOS{ 5548fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang QOS_MODE bdQoSMode; 5558fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 5568fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 bdWMMIEBuf[MAX_WMMELE_LENGTH]; 5578fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8* bdWMMIE; 5588fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 5598fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang QOS_ELE_SUBTYPE EleSubType; 5608fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 5618fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 * pWMMInfoEle; 5628fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang u8 * pWMMParamEle; 5638fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 5648fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang QOS_INFO_FIELD QosInfoField; 5658fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang AC_PARAM AcParameter[4]; 5668fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang}BSS_QOS, *PBSS_QOS; 5678fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 5688fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 5698fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 5708fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// Ref: sQoSCtlLng and QoSCtl definition in 8185 QoS code. 5718fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang//#define QoSCtl (( (Adapter->bRegQoS) && (Adapter->dot11QoS.QoSMode &(QOS_EDCA|QOS_HCCA)) ) ?sQoSCtlLng:0) 5728fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang// 5738fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define sQoSCtlLng 2 5748fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define QOS_CTRL_LEN(_QosMode) ((_QosMode > QOS_DISABLE)? sQoSCtlLng : 0) 5758fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 5768fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 5778fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang//Added by joseph 5788fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang//UP Mapping to AC, using in MgntQuery_SequenceNumber() and maybe for DSCP 5798fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang//#define UP2AC(up) ((up<3)?((up==0)?1:0):(up>>1)) 5808fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#define IsACValid(ac) ((ac<=7 )?true:false ) 5818fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang 5828fc8598e61f6f384f3eaf1d9b09500c12af47b37Jerry Chuang#endif // #ifndef __INC_QOS_TYPE_H 583