WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
载入中...
搜索中...
未找到
hmac_tx_data.h
浏览该文件的文档.
1/*
2 * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2021-2023. All rights reserved.
3 * Description: Header file for hmac_tx_data.c.
4 * Create: 2021-12-15
5 */
6
7#ifndef __HMAC_TX_DATA_H__
8#define __HMAC_TX_DATA_H__
9
10/*****************************************************************************
11 1 其他头文件包含
12*****************************************************************************/
14
15#ifdef __cplusplus
16#if __cplusplus
17extern "C" {
18#endif
19#endif
20
21#undef THIS_FILE_ID
22#define THIS_FILE_ID OAM_FILE_ID_HMAC_TX_DATA_H
23
24/*****************************************************************************
25 2 宏定义
26*****************************************************************************/
27#define WLAN_BA_CNT_INTERVAL 100
28
29/*****************************************************************************
30 3 枚举定义
31*****************************************************************************/
38
39/*****************************************************************************
40 4 全局变量声明
41*****************************************************************************/
42
43/*****************************************************************************
44 5 消息头定义
45*****************************************************************************/
46
47
48/*****************************************************************************
49 6 消息定义
50*****************************************************************************/
51
52
53/*****************************************************************************
54 7 STRUCT定义
55*****************************************************************************/
56typedef struct {
57 osal_u32 pkt_len; /* HOST来帧量统计 */
58 osal_u32 snd_pkts; /* 驱动实际发送帧统计 */
59 osal_u32 start_time; /* 均速统计开始时间 */
61
62/*****************************************************************************
63 8 UNION定义
64*****************************************************************************/
65
66/*****************************************************************************
67 10 函数声明
68*****************************************************************************/
70 oal_netbuf_stru *netbuf,
71 hmac_user_stru *hmac_user,
72 mac_tx_ctl_stru *tx_ctl);
73
75 hmac_user_stru *hmac_user,
76 osal_u8 tidno);
77
79 osal_u8 is_retry, osal_u8 *tid_out);
81 hmac_user_stru *hmac_user, osal_u8 tidno, oal_netbuf_stru *netbuf);
82
83/*****************************************************************************
84 9 OTHERS定义
85*****************************************************************************/
86
87/*****************************************************************************
88 函 数 名 : hmac_tx_get_next_mpdu
89 功能描述 : 获取下一个MPDU
90 输入参数 : buf netbuf结构体;netbuf_num netbuf个数
91 调用函数 : hmac_tx_event_process_ap
92*****************************************************************************/
94{
95 oal_netbuf_stru *next_buf = OAL_PTR_NULL;
96 osal_u32 netbuf_index;
97
98 if (OAL_UNLIKELY(buf == OAL_PTR_NULL)) {
99 return OAL_PTR_NULL;
100 }
101
102 next_buf = buf;
103 for (netbuf_index = 0; netbuf_index < netbuf_num; netbuf_index++) {
104 next_buf = oal_netbuf_list_next(next_buf);
105 }
106
107 return next_buf;
108}
109
110/*****************************************************************************
111 函 数 名 : hmac_tx_netbuf_list_enqueue
112 功能描述 : MPDU入队
113 输入参数 : head 表头; buf netbuf结构体;netbuf_num netbuf个数
114 调用函数 : hmac_tx_event_process_ap
115*****************************************************************************/
117 osal_u8 netbuf_num)
118{
119 osal_u32 netbuf_index;
120 oal_netbuf_stru *buf_tmp = buf;
121 oal_netbuf_stru *buf_next;
122
123 if (OAL_UNLIKELY((head == OAL_PTR_NULL) || (buf_tmp == OAL_PTR_NULL))) {
124 return;
125 }
126
127 for (netbuf_index = 0; netbuf_index < netbuf_num; netbuf_index++) {
128 buf_next = oal_netbuf_list_next(buf_tmp);
129 oal_netbuf_add_to_list_tail(buf_tmp, head);
130 buf_tmp = buf_next;
131 }
132}
133
134
135/*****************************************************************************
136 函 数 名 : hmac_tx_get_addr
137 功能描述 : 获取原地址和目的地址
138 输入参数 : hdr 802.11头结构体
139 输出参数 : saddr 原地址 daddr 目的地址
140*****************************************************************************/
142 osal_u8 *saddr,
143 osal_u8 *daddr)
144{
145 osal_u8 to_ds;
146 osal_u8 from_ds;
147
148 to_ds = mac_hdr_get_to_ds((osal_u8 *)hdr);
149 from_ds = mac_hdr_get_from_ds((osal_u8 *)hdr);
150 if ((to_ds == 1) && (from_ds == 0)) {
151 /* to AP */
152 oal_set_mac_addr(saddr, hdr->qos_frame_addr4.address2);
153 oal_set_mac_addr(daddr, hdr->qos_frame_addr4.address3);
154 } else if ((to_ds == 0) && (from_ds == 0)) {
155 /* IBSS */
156 oal_set_mac_addr(saddr, hdr->qos_frame_addr4.address2);
157 oal_set_mac_addr(daddr, hdr->qos_frame_addr4.address1);
158 } else if ((to_ds == 1) && (from_ds == 1)) {
159 /* WDS */
160 oal_set_mac_addr(saddr, hdr->qos_frame_addr4.address4);
161 oal_set_mac_addr(daddr, hdr->qos_frame_addr4.address3);
162 } else {
163 /* From AP */
164 oal_set_mac_addr(saddr, hdr->qos_frame_addr4.address3);
165 oal_set_mac_addr(daddr, hdr->qos_frame_addr4.address1);
166 }
167}
168
170{
171 if (qos == HMAC_TX_BSS_QOS) {
172 /* 更新帧头长度 */
173 if (mac_get_cb_is_4address(tx_ctl) == OAL_FALSE) {
175 } else {
177 }
178 } else {
179 /* 非QOS数据帧帧控制字段设置 */
180 if (mac_get_cb_is_4address(tx_ctl) != 0) {
182 } else {
184 }
185 }
186}
187
188/*****************************************************************************
189 函 数 名 : hmac_tx_set_frame_ctrl
190 功能描述 : 设置帧控制
191 输入参数 : qos 是否是QOS站点 tx_ctl CB字段 hdr 802.11头
192*****************************************************************************/
195{
197 if (qos == HMAC_TX_BSS_QOS) {
198 /* 设置帧控制字段 */
199 mac_hdr_set_frame_control((osal_u8 *)hdr_addr4, (WLAN_FC0_TYPE_DATA | WLAN_FC0_SUBTYPE_QOS));
200
201 /* 更新帧头长度 */
202 if (mac_get_cb_is_4address(tx_ctl) == OAL_FALSE) {
204 /* 设置QOS控制字段 */
205 hdr->qc_tid = mac_get_cb_wme_tid_type(tx_ctl);
206 hdr->qc_eosp = 0;
208 hdr->qc_amsdu = mac_get_cb_is_amsdu(tx_ctl);
209 hdr->qos_control.qc_txop_limit = 0;
210 } else {
211 /* 设置QOS控制字段 */
212 hdr_addr4->qos_frame_addr4.qc_tid = mac_get_cb_wme_tid_type(tx_ctl);
213 hdr_addr4->qos_frame_addr4.qc_eosp = 0;
214 hdr_addr4->qos_frame_addr4.qc_ack_polocy = mac_get_cb_ack_polacy(tx_ctl);
215 hdr_addr4->qos_frame_addr4.qc_amsdu = mac_get_cb_is_amsdu(tx_ctl);
216 hdr_addr4->qos_frame_addr4.qos_control.qc_txop_limit = 0;
217 }
218
219 /* 由DMAC考虑是否需要HTC */
220 } else {
221 /* 设置帧控制字段 */
222 mac_hdr_set_frame_control((osal_u8 *)hdr_addr4, WLAN_FC0_TYPE_DATA | WLAN_FC0_SUBTYPE_DATA);
223 }
224}
225
228{
229 /* 更新帧头长度 */
230 if (mac_get_cb_is_4address(tx_ctl) == OAL_FALSE) {
232 frame_hdr->frame_control.order = 1;
234 frame_hdr->htc = HTC_INVALID_VALUE;
235 } else {
236 /* 设置QOS控制字段 */
237 hdr_addr4->qos_frame_addr4.frame_control.order = 1;
239 hdr_addr4->htc = HTC_INVALID_VALUE;
240 }
241}
242
243/*****************************************************************************
244 函 数 名 : hmac_tid_ba_is_setup
245 功能描述 : 判断该用户对应的TID是否已经建立BA会话
246 输入参数 : 无
247 输出参数 : 无
248 返 回 值 : OAL_TRUE代表已经创建了BA会话
249*****************************************************************************/
251 osal_u8 tidno)
252{
253 if (OAL_UNLIKELY(hmac_user == OAL_PTR_NULL || tidno >= WLAN_TID_MAX_NUM)) {
254 return OAL_FALSE;
255 }
256 return (hmac_user->tx_tid_queue[tidno].ba_tx_info.ba_status ==
258}
259
260/*****************************************************************************
261 函 数 名 : hmac_vap_ba_is_setup
262 功能描述 : 判断该用户是否已经建立BA会话
263 输入参数 : 无
264 输出参数 : 无
265 返 回 值 : OAL_TRUE代表已经创建了BA会话
266*****************************************************************************/
268{
269 osal_u8 tidno;
270
271 if (hmac_user == OAL_PTR_NULL) {
272 return OAL_FALSE;
273 }
274
275 for (tidno = 0; tidno < WLAN_TID_MAX_NUM; tidno++) {
276 if (hmac_user->tx_tid_queue[tidno].ba_tx_info.ba_status == HMAC_BA_COMPLETE) {
277 return OAL_TRUE;
278 }
279 }
280
281 return OAL_FALSE;
282}
283
285 osal_u8 tidno)
286{
287 mac_action_mgmt_args_stru action_args; /* 用于填写ACTION帧的参数 */
288
289 action_args.category = MAC_ACTION_CATEGORY_BA;
290 action_args.action = MAC_BA_ACTION_DELBA;
291 action_args.arg1 = tidno;
292 action_args.arg2 = MAC_ORIGINATOR_DELBA;
293 action_args.arg3 = MAC_UNSPEC_REASON;
294 action_args.arg5 = hmac_user->user_mac_addr;
295 hmac_mgmt_tx_action_etc(hmac_vap, hmac_user, &action_args);
296}
297
298#ifdef __cplusplus
299#if __cplusplus
300}
301#endif
302#endif
303
304#endif /* end of hmac_tx_data.h */
#define mac_get_cb_is_4address(_pst_tx_ctrl)
Definition dmac_ext_if_hcm.h:101
#define mac_get_cb_is_amsdu(_pst_tx_ctrl)
Definition dmac_ext_if_hcm.h:102
#define mac_get_cb_wme_tid_type(_pst_tx_ctrl)
Definition dmac_ext_if_hcm.h:140
#define mac_get_cb_ack_polacy(_pst_tx_ctrl)
Definition dmac_ext_if_hcm.h:136
#define mac_get_cb_frame_header_length(_pst_tx_ctrl)
Definition dmac_ext_if_hcm.h:135
#define OAL_INLINE
Definition driver_soc_common.h:47
osal_u32 hmac_mgmt_tx_action_etc(hmac_vap_stru *hmac_vap, hmac_user_stru *hmac_user, mac_action_mgmt_args_stru *action_args)
OAL_STATIC OAL_INLINE osal_void hmac_tx_get_addr(mac_ieee80211_qos_htc_frame_addr4_stru *hdr, osal_u8 *saddr, osal_u8 *daddr)
Definition hmac_tx_data.h:141
WIFI_HMAC_TCM_TEXT OAL_STATIC OAL_INLINE oal_bool_enum_uint8 hmac_tid_ba_is_setup(const hmac_user_stru *hmac_user, osal_u8 tidno)
Definition hmac_tx_data.h:250
OAL_STATIC OAL_INLINE osal_void hmac_tx_set_cb_header_len(osal_u32 qos, mac_tx_ctl_stru *tx_ctl)
Definition hmac_tx_data.h:169
osal_void hmac_tx_set_vip_tid(mac_tx_ctl_stru *tx_ctl, osal_u8 type, osal_u8 subtype, osal_u8 is_retry, osal_u8 *tid_out)
osal_void hmac_tx_ba_setup_etc(hmac_vap_stru *hmac_vap, hmac_user_stru *hmac_user, osal_u8 tidno)
OAL_STATIC OAL_INLINE osal_void hmac_tx_set_frame_ctrl(osal_u32 qos, mac_tx_ctl_stru *tx_ctl, mac_ieee80211_qos_htc_frame_addr4_stru *hdr_addr4)
Definition hmac_tx_data.h:193
oal_bool_enum_uint8 hmac_tid_need_ba_session(hmac_vap_stru *hmac_vap, hmac_user_stru *hmac_user, osal_u8 tidno, oal_netbuf_stru *netbuf)
OAL_STATIC OAL_INLINE osal_void hmac_tx_netbuf_list_enqueue(oal_netbuf_head_stru *head, oal_netbuf_stru *buf, osal_u8 netbuf_num)
Definition hmac_tx_data.h:116
OAL_STATIC OAL_INLINE oal_bool_enum_uint8 hmac_vap_ba_is_setup(const hmac_user_stru *hmac_user)
Definition hmac_tx_data.h:267
osal_u32 hmac_tx_ucast_process_etc(hmac_vap_stru *hmac_vap, oal_netbuf_stru *netbuf, hmac_user_stru *hmac_user, mac_tx_ctl_stru *tx_ctl)
hmac_tx_bss_qos_type_enum
Definition hmac_tx_data.h:32
@ HMAC_TX_BSS_QOS_BUTT
Definition hmac_tx_data.h:36
@ HMAC_TX_BSS_QOS
Definition hmac_tx_data.h:34
@ HMAC_TX_BSS_NOQOS
Definition hmac_tx_data.h:33
OAL_STATIC OAL_INLINE osal_void hmac_tx_ba_del(hmac_vap_stru *hmac_vap, hmac_user_stru *hmac_user, osal_u8 tidno)
Definition hmac_tx_data.h:284
OAL_STATIC OAL_INLINE osal_void hmac_tx_set_frame_htc(mac_tx_ctl_stru *tx_ctl, mac_ieee80211_qos_htc_frame_addr4_stru *hdr_addr4)
Definition hmac_tx_data.h:226
OAL_STATIC OAL_INLINE oal_netbuf_stru * hmac_tx_get_next_mpdu(oal_netbuf_stru *buf, osal_u8 netbuf_num)
Definition hmac_tx_data.h:93
#define MAC_80211_QOS_HTC_4ADDR_FRAME_LEN
Definition mac_frame.h:56
#define MAC_80211_4ADDR_FRAME_LEN
Definition mac_frame.h:52
#define MAC_80211_QOS_HTC_FRAME_LEN
Definition mac_frame.h:54
#define HTC_INVALID_VALUE
Definition mac_frame.h:31
#define MAC_80211_QOS_4ADDR_FRAME_LEN
Definition mac_frame.h:55
#define MAC_80211_FRAME_LEN
Definition mac_frame_common_rom.h:27
@ MAC_ORIGINATOR_DELBA
Definition mac_frame_common_rom.h:230
@ MAC_BA_ACTION_DELBA
Definition mac_frame_common_rom.h:258
@ MAC_UNSPEC_REASON
Definition mac_frame_common_rom.h:266
#define MAC_80211_QOS_FRAME_LEN
Definition mac_frame_common_rom.h:42
@ MAC_ACTION_CATEGORY_BA
Definition mac_frame_common_rom.h:74
@ HMAC_BA_COMPLETE
Definition mac_user_ext.h:85
osal_u8 qos
Definition oal_net.h:4
osal_u8 type
Definition oal_net.h:0
#define OAL_UNLIKELY(_expr)
Definition oal_plat_type.h:43
osal_u8 oal_bool_enum_uint8
Definition oal_types_device_rom.h:45
@ OAL_FALSE
Definition oal_types_device_rom.h:41
@ OAL_TRUE
Definition oal_types_device_rom.h:42
#define OAL_PTR_NULL
Definition oal_types_device_rom.h:30
#define WIFI_HMAC_TCM_TEXT
Definition oal_util_hcm.h:68
unsigned char osal_u8
Definition osal_types.h:11
void osal_void
Definition osal_types.h:29
unsigned int osal_u32
Definition osal_types.h:13
#define OAL_STATIC
Definition soc_wifi_service_api.c:30
hmac_ba_conn_status_enum_uint8 ba_status
Definition mac_user_ext.h:411
hmac_ba_tx_stru ba_tx_info
Definition mac_user_ext.h:486
Definition hmac_tx_data.h:56
osal_u32 start_time
Definition hmac_tx_data.h:59
osal_u32 pkt_len
Definition hmac_tx_data.h:57
osal_u32 snd_pkts
Definition hmac_tx_data.h:58
Definition mac_user_ext.h:519
hmac_tid_stru tx_tid_queue[WLAN_TID_MAX_NUM]
Definition mac_user_ext.h:657
osal_u8 user_mac_addr[WLAN_MAC_ADDR_LEN]
Definition mac_user_ext.h:529
Definition mac_vap_ext.h:2019
Definition mac_frame.h:1513
osal_u32 arg1
Definition mac_frame.h:1517
osal_u8 * arg5
Definition mac_frame.h:1521
osal_u32 arg2
Definition mac_frame.h:1518
osal_u8 action
Definition mac_frame.h:1515
osal_u8 category
Definition mac_frame.h:1514
osal_u32 arg3
Definition mac_frame.h:1519
osal_u16 order
Definition mac_frame_common_rom.h:570
osal_u8 address2[WLAN_MAC_ADDR_LEN]
Definition mac_frame.h:698
osal_u8 address3[WLAN_MAC_ADDR_LEN]
Definition mac_frame.h:699
osal_u8 address1[WLAN_MAC_ADDR_LEN]
Definition mac_frame.h:697
osal_u8 address4[WLAN_MAC_ADDR_LEN]
Definition mac_frame.h:702
mac_header_frame_control_stru frame_control
Definition mac_frame.h:694
Definition mac_frame.h:719
mac_ieee80211_qos_frame_addr4_stru qos_frame_addr4
Definition mac_frame.h:720
osal_u32 htc
Definition mac_frame.h:721
Definition mac_frame_common_rom.h:623
osal_u8 qc_eosp
Definition mac_frame_common_rom.h:633
mac_header_frame_control_stru frame_control
Definition mac_frame_common_rom.h:624
union mac_ieee80211_qos_htc_frame::@447 qos_control
osal_u8 qc_txop_limit
Definition mac_frame_common_rom.h:637
osal_u8 qc_ack_polocy
Definition mac_frame_common_rom.h:634
osal_u8 qc_tid
Definition mac_frame_common_rom.h:632
osal_u8 qc_amsdu
Definition mac_frame_common_rom.h:635
osal_u32 htc
Definition mac_frame_common_rom.h:644
Definition dmac_ext_if_device_rom.h:98
Definition oal_skbuff.h:73
Definition oal_skbuff.h:82
unsigned int uintptr_t
Definition td_type.h:65
#define WLAN_FC0_SUBTYPE_QOS
Definition wlan_types.h:100
#define WLAN_FC0_TYPE_DATA
Definition wlan_types.h:61
#define WLAN_TID_MAX_NUM
Definition wlan_types.h:389
#define WLAN_FC0_SUBTYPE_DATA
Definition wlan_types.h:92