📄 wlan_wmm.h
字号:
#ifndef __WLAN_WMM_H
#define __WLAN_WMM_H
enum AC_QUEUES {
AC_PRIO_BK,
AC_PRIO_BE,
AC_PRIO_VI,
AC_PRIO_VO,
MAX_AC_QUEUES
};
#define WMM_IE_LENGTH 0x0009
#define WMM_PARA_IE_LENGTH 0x0018
#define WMM_QOS_INFO_OFFSET (0x08)
#define WMM_QOS_INFO_UAPSD_BIT (0x80)
#define HostCmd_CMD_802_11_WMM_GET_TSPEC 0x006E
#define HostCmd_CMD_802_11_WMM_ADD_TSPEC 0x006F
#define HostCmd_CMD_802_11_WMM_REMOVE_TSPEC 0x0070
#define HostCmd_CMD_802_11_WMM_ACK_POLICY 0x005C
#define HostCmd_CMD_802_11_WMM_PRIO_PKT_AVAIL 0x005D
#define HostCmd_CMD_802_11_WMM_GET_STATUS 0x0071
#define HostCmd_RET_802_11_WMM_GET_TSPEC 0x806E
#define HostCmd_RET_802_11_WMM_ADD_TSPEC 0x806F
#define HostCmd_RET_802_11_WMM_REMOVE_TSPEC 0x8070
#define HostCmd_RET_802_11_WMM_ACK_POLICY 0x805C
#define HostCmd_RET_803_11_WMM_PRIO_PKT_AVAIL 0x805D
#define HostCmd_RET_802_11_WMM_GET_STATUS 0x8071
#define HostCmd_ACT_MAC_WMM_ENABLE 0x0800
#define MACREG_INT_CODE_WMM_STATUS_CHANGE 0x0017
typedef struct _wlan_ioctl_wmm_para_ie wlan_ioctl_wmm_para_ie;
typedef wlan_ioctl_wmm_para_ie *pwlan_ioctl_wmm_para_ie;
typedef struct _wlan_ioctl_wmm_tspec wlan_ioctl_wmm_tspec;
typedef wlan_ioctl_wmm_tspec *pwlan_ioctl_wmm_tspec;
typedef struct _wlan_ioctl_wmm_ack_policy wlan_ioctl_wmm_ack_policy;
typedef wlan_ioctl_wmm_ack_policy *pwlan_ioctl_wmm_ack_policy;
typedef struct _HostCmd_DS_802_11_WMM_TSPEC {
u8 UserPriority; /* 0 - TSPEC for AC_BE
3 - TSPEC for AC_BE
1 - TSPEC for AC_BK
2 - TSPEC for AC_BK
4 - TSPEC for AC_VI
5 - TSPEC for AC_VI
6 - TSPEC for AC_VO
7 - TSPEC for AC_VO */
u8 Direction; /* 3 - Bi-directional
2 - Reserved
1 - Downlink
0 - Uplink
Only bi-directional streams will be supported for WMM */
u8 PSMethod; /* 0 - WMM_PS_LEGACY
1 - WMM_PS_TRIGGERED */
u8 FixedSizeMSDU; /* 0 - Size of MSDU not fixed
1 - Size of MSDU is fixed */
u16 MSDUSize; /* Nominal MSDU size in bytes */
u32 MeanDataRate; /* Average data rate in bits/sec */
u32 MinPhyRate; /* Minimum PHY rate in bits/sec */
u16 ExtraBandwidth; /* Extra bandwidth factor to
account for retries */
} __ATTRIB_PACK__ HostCmd_DS_802_11_WMM_TSPEC,
*pHostCmd_DS_802_11_WMM_TSPEC;
typedef struct _HostCmd_DS_802_11_WMM_ACK_POLICY {
u16 Action; /* 0 - ACT_GET
1 - ACT_SET */
u8 AC; /* 0 - AC_BE
1 - AC_BK
2 - AC_VI
3 - AC_VO */
u8 AckPolicy; /* 0 - WMM_ACK_POLICY_IMM_ACK
1 - WMM_ACK_POLICY_NO_ACK */
} __ATTRIB_PACK__ HostCmd_DS_802_11_WMM_ACK_POLICY,
*pHostCmd_DS_802_11_WMM_ACK_POLICY;
typedef struct _WMM_AC_STATUS {
u8 Disabled;
u8 TriggeredPS;
u8 FlowDirection;
u8 FlowRequired;
u8 FlowCreated;
u32 MediumTime;
} __ATTRIB_PACK__ WMM_AC_STATUS;
typedef struct _HostCmd_DS_802_11_WMM_GET_STATUS {
WMM_AC_STATUS Status[4];
} __ATTRIB_PACK__ HostCmd_DS_802_11_WMM_GET_STATUS,
*pHostCmd_DS_802_11_WMM_GET_STATUS;
typedef struct _HostCmd_DS_802_11_WMM_PRIO_PKT_AVAIL {
u16 PacketAC;
} __ATTRIB_PACK__ HostCmd_DS_802_11_WMM_PRIO_PKT_AVAIL,
*pHostCmd_DS_802_11_WMM_PRIO_PKT_AVAIL;
#ifdef __KERNEL__
typedef struct _WMM_DESC
{
u8 required;
u8 enabled;
u8 fw_notify;
u8 acstatus; /* x x x x O I E K --- 1=disabled 0=enabled */
struct sk_buff TxSkbQ[MAX_AC_QUEUES];
u8 Para_IE[WMM_PARA_IE_LENGTH];
#ifdef WMM_UAPSD
u8 qosinfo;
u8 no_more_packet;
#endif
} __ATTRIB_PACK__ WMM_DESC,
*pWMM_DESC;
#endif
int wlan_wmm_enable_ioctl(wlan_private *priv, struct iwreq *wrq);
int wlan_do_wmm_para_ie_ioctl(wlan_private *priv, struct ifreq *req);
int wlan_do_wmm_tspec_ioctl(wlan_private *priv, struct ifreq *req);
int wlan_do_wmm_ack_policy_ioctl(wlan_private *priv, struct ifreq *req);
int wlan_cmd_802_11_wmm_tspec(wlan_private *priv,
HostCmd_DS_COMMAND *cmd, u16 cmdno, void *InfoBuf);
int wlan_cmd_802_11_wmm_ack_policy(wlan_private *priv,
HostCmd_DS_COMMAND *cmd, u16 action, void *InfoBuf);
int wlan_cmd_802_11_wmm_get_status(wlan_private *priv,
HostCmd_DS_COMMAND *cmd, u16 action, void *InfoBuf);
int wlan_cmd_802_11_wmm_prio_pkt_avail(wlan_private *priv,
HostCmd_DS_COMMAND *cmd, u16 action, void *InfoBuf);
inline int sendWMMStatusChangeCmd(wlan_private *priv);
void wmm_cleanup_queues(wlan_private *priv);
void wmm_process_tx(wlan_private * priv);
#ifdef __KERNEL__
void wmm_map_and_add_skb(wlan_private *priv, struct sk_buff *);
#endif
int wmm_lists_empty(wlan_private *priv);
#endif /* __WLAN_WMM_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -