1
From fc5dcdadd03063981268f4df8ef7ffd9519e25f9 Mon Sep 17 00:00:00 2001
2
From: Ron Rindjunsky <ron.rindjunsky@intel.com>
3
Date: Sat, 30 Jun 2007 05:03:11 +0800
4
Subject: [PATCH] mac80211: [HT] add IEEE 802.11n TX_AMPDU API
6
This patch add TX AMPDU api
8
Signed-of-by: Ron Rindjunsky <ron.rindjunsky@intel.com>
9
Signed-of-by: Tomas Winkler <tomas.winkler@intel.com>
10
Signed-of-by: Zhu Yi <yi.zhu@intel.com>
12
include/net/mac80211.h | 64 +++++++++++++++++++++++++++++++++++++----------
13
1 files changed, 50 insertions(+), 14 deletions(-)
15
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
16
index e5be8d3..99d27ec 100644
17
--- a/include/net/mac80211.h
18
+++ b/include/net/mac80211.h
19
@@ -718,36 +718,46 @@ struct ieee80211_ops {
21
u64 (*get_tsf)(struct ieee80211_hw *hw);
23
- /* Call low level driver with 11n Block Ack action */
24
- int (*handle_ba_action)(struct ieee80211_hw *hw,
25
- struct ieee80211_mgmt *mgmt);
27
/* Reset the TSF timer and allow firmware/hardware to synchronize with
28
* other STAs in the IBSS. This is only used in IBSS mode. This
29
* function is optional if the firmware/hardware takes full care of
30
* TSF synchronization. */
31
void (*reset_tsf)(struct ieee80211_hw *hw);
33
- /* Configure ht parameters. */
34
- int (*conf_ht)(struct ieee80211_hw *hw,
35
- struct ieee80211_ht_capability *ht_cap_param,
36
- struct ieee80211_ht_additional_info *ht_extra_param);
38
- /* Get ht capabilities from the device */
39
- void (*get_ht_capab)(struct ieee80211_hw *hw,
40
- struct ieee80211_ht_capability *ht_cap_param);
42
/* Setup beacon data for IBSS beacons. Unlike access point (Master),
43
* IBSS uses a fixed beacon frame which is configured using this
44
* function. This handler is required only for IBSS mode. */
45
int (*beacon_update)(struct ieee80211_hw *hw,
46
- struct sk_buff *skb,
47
+ struct sk_buff *skb,
48
struct ieee80211_tx_control *control);
50
/* Determine whether the last IBSS beacon was sent by us. This is
51
* needed only for IBSS mode and the result of this function is used to
52
* determine whether to reply to Probe Requests. */
53
int (*tx_last_beacon)(struct ieee80211_hw *hw);
55
+ /* Configure ht parameters. */
56
+ int (*conf_ht)(struct ieee80211_hw *hw,
57
+ struct ieee80211_ht_capability *ht_cap_param,
58
+ struct ieee80211_ht_additional_info *ht_extra_param);
60
+ /* Get ht capabilities from the device */
61
+ void (*get_ht_capab)(struct ieee80211_hw *hw,
62
+ struct ieee80211_ht_capability *ht_cap_param);
65
+ /* move to Tx aggregation for a certain DA/TID.
66
+ * return the starting frame's sequence number in start_seq_nums.
67
+ * If aggregation can not be started on a certain TID return error,
68
+ * else return success */
69
+ int (*ht_tx_agg_start)(struct ieee80211_hw *hw, u8 *da, u16 tid, u16 *start_seq_num);
71
+ /* stop Tx aggregation for a certain DA/TID.
72
+ * If aggregation can not be stopped on a certain TID return error,
73
+ * else return success. generator field gives the HW an indication who
74
+ * requests to stop the aggregation - recipient (0) or initiator (1)
76
+ int (*ht_tx_agg_stop)(struct ieee80211_hw *hw, u8 *da, u16 tid, int generator);
79
/* Allocate a new hardware device. This must be called once for each
80
@@ -1000,6 +1010,32 @@ void ieee80211_stop_queues(struct ieee80211_hw *hw);
81
void ieee80211_wake_queues(struct ieee80211_hw *hw);
84
+ * ieee80211_start_BA_session - low level driver asks to start a BA session
85
+ * @hw: pointer as obtained from ieee80211_alloc_hw().
86
+ * @da: destination address of the BA session recipient
87
+ * @tid: the desired TID to BA on.
88
+ * @return: error if no sta with matching da found, success otherwise
90
+ * although the low level driver can estimate the need to start aggregation on a
91
+ * certain DA/TID, the session itself should be managed by the stack. this function
92
+ * should be called by low level driver to start the BA session
94
+int ieee80211_start_BA_session(struct ieee80211_hw *hw, u8 *da, u16 tid);
97
+ * ieee80211_stop_BA_session - low level driver asks to stop a BA session
98
+ * @hw: pointer as obtained from ieee80211_alloc_hw().
99
+ * @da: destination address of the BA session recipient
100
+ * @tid: the desired TID to stop BA.
101
+ * @return: error if no sta with matching da found, success otherwise
103
+ * although the low level driver can estimate the need to stop aggregation on a
104
+ * certain DA/TSID, the session itself should be managed by the stack. this function
105
+ * should be called by low level driver to stop the BA session
107
+int ieee80211_stop_BA_session(struct ieee80211_hw *hw, u8 *da, u16 tid);
110
* ieee80211_get_mc_list_item - iteration over items in multicast list
111
* @hw: pointer as obtained from ieee80211_alloc_hw().
112
* @prev: value returned by previous call to ieee80211_get_mc_list_item() or