diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2009-11-16 06:00:38 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-11-18 17:09:15 -0500 |
commit | c951ad3550ab40071bb0f222ba6125845769c08a (patch) | |
tree | 9db1d3c110b359a34a3d706eaf40285cfa01550b /include | |
parent | 3b53fde8ac40c4321389def14d7f4a9e14092fd3 (diff) |
mac80211: convert aggregation to operate on vifs/stas
The entire aggregation code currently operates on the
hw pointer and station addresses, but that needs to
change to make stations purely per-vif; As one step
preparing for that make the aggregation code callable
with the station, or by the combination of virtual
interface and station address.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/net/mac80211.h | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index 3b3defbe6fc1..4af0ffb98aaf 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -1508,6 +1508,7 @@ struct ieee80211_ops { | |||
1508 | void (*reset_tsf)(struct ieee80211_hw *hw); | 1508 | void (*reset_tsf)(struct ieee80211_hw *hw); |
1509 | int (*tx_last_beacon)(struct ieee80211_hw *hw); | 1509 | int (*tx_last_beacon)(struct ieee80211_hw *hw); |
1510 | int (*ampdu_action)(struct ieee80211_hw *hw, | 1510 | int (*ampdu_action)(struct ieee80211_hw *hw, |
1511 | struct ieee80211_vif *vif, | ||
1511 | enum ieee80211_ampdu_mlme_action action, | 1512 | enum ieee80211_ampdu_mlme_action action, |
1512 | struct ieee80211_sta *sta, u16 tid, u16 *ssn); | 1513 | struct ieee80211_sta *sta, u16 tid, u16 *ssn); |
1513 | 1514 | ||
@@ -2029,8 +2030,7 @@ void ieee80211_queue_delayed_work(struct ieee80211_hw *hw, | |||
2029 | 2030 | ||
2030 | /** | 2031 | /** |
2031 | * ieee80211_start_tx_ba_session - Start a tx Block Ack session. | 2032 | * ieee80211_start_tx_ba_session - Start a tx Block Ack session. |
2032 | * @hw: pointer as obtained from ieee80211_alloc_hw(). | 2033 | * @sta: the station for which to start a BA session |
2033 | * @ra: receiver address of the BA session recipient | ||
2034 | * @tid: the TID to BA on. | 2034 | * @tid: the TID to BA on. |
2035 | * | 2035 | * |
2036 | * Return: success if addBA request was sent, failure otherwise | 2036 | * Return: success if addBA request was sent, failure otherwise |
@@ -2039,22 +2039,22 @@ void ieee80211_queue_delayed_work(struct ieee80211_hw *hw, | |||
2039 | * the need to start aggregation on a certain RA/TID, the session level | 2039 | * the need to start aggregation on a certain RA/TID, the session level |
2040 | * will be managed by the mac80211. | 2040 | * will be managed by the mac80211. |
2041 | */ | 2041 | */ |
2042 | int ieee80211_start_tx_ba_session(struct ieee80211_hw *hw, u8 *ra, u16 tid); | 2042 | int ieee80211_start_tx_ba_session(struct ieee80211_sta *sta, u16 tid); |
2043 | 2043 | ||
2044 | /** | 2044 | /** |
2045 | * ieee80211_start_tx_ba_cb - low level driver ready to aggregate. | 2045 | * ieee80211_start_tx_ba_cb - low level driver ready to aggregate. |
2046 | * @hw: pointer as obtained from ieee80211_alloc_hw(). | 2046 | * @vif: &struct ieee80211_vif pointer from &struct ieee80211_if_init_conf |
2047 | * @ra: receiver address of the BA session recipient. | 2047 | * @ra: receiver address of the BA session recipient. |
2048 | * @tid: the TID to BA on. | 2048 | * @tid: the TID to BA on. |
2049 | * | 2049 | * |
2050 | * This function must be called by low level driver once it has | 2050 | * This function must be called by low level driver once it has |
2051 | * finished with preparations for the BA session. | 2051 | * finished with preparations for the BA session. |
2052 | */ | 2052 | */ |
2053 | void ieee80211_start_tx_ba_cb(struct ieee80211_hw *hw, u8 *ra, u16 tid); | 2053 | void ieee80211_start_tx_ba_cb(struct ieee80211_vif *vif, u8 *ra, u16 tid); |
2054 | 2054 | ||
2055 | /** | 2055 | /** |
2056 | * ieee80211_start_tx_ba_cb_irqsafe - low level driver ready to aggregate. | 2056 | * ieee80211_start_tx_ba_cb_irqsafe - low level driver ready to aggregate. |
2057 | * @hw: pointer as obtained from ieee80211_alloc_hw(). | 2057 | * @vif: &struct ieee80211_vif pointer from &struct ieee80211_if_init_conf |
2058 | * @ra: receiver address of the BA session recipient. | 2058 | * @ra: receiver address of the BA session recipient. |
2059 | * @tid: the TID to BA on. | 2059 | * @tid: the TID to BA on. |
2060 | * | 2060 | * |
@@ -2062,13 +2062,12 @@ void ieee80211_start_tx_ba_cb(struct ieee80211_hw *hw, u8 *ra, u16 tid); | |||
2062 | * finished with preparations for the BA session. | 2062 | * finished with preparations for the BA session. |
2063 | * This version of the function is IRQ-safe. | 2063 | * This version of the function is IRQ-safe. |
2064 | */ | 2064 | */ |
2065 | void ieee80211_start_tx_ba_cb_irqsafe(struct ieee80211_hw *hw, const u8 *ra, | 2065 | void ieee80211_start_tx_ba_cb_irqsafe(struct ieee80211_vif *vif, const u8 *ra, |
2066 | u16 tid); | 2066 | u16 tid); |
2067 | 2067 | ||
2068 | /** | 2068 | /** |
2069 | * ieee80211_stop_tx_ba_session - Stop a Block Ack session. | 2069 | * ieee80211_stop_tx_ba_session - Stop a Block Ack session. |
2070 | * @hw: pointer as obtained from ieee80211_alloc_hw(). | 2070 | * @sta: the station whose BA session to stop |
2071 | * @ra: receiver address of the BA session recipient | ||
2072 | * @tid: the TID to stop BA. | 2071 | * @tid: the TID to stop BA. |
2073 | * @initiator: if indicates initiator DELBA frame will be sent. | 2072 | * @initiator: if indicates initiator DELBA frame will be sent. |
2074 | * | 2073 | * |
@@ -2078,24 +2077,23 @@ void ieee80211_start_tx_ba_cb_irqsafe(struct ieee80211_hw *hw, const u8 *ra, | |||
2078 | * the need to stop aggregation on a certain RA/TID, the session level | 2077 | * the need to stop aggregation on a certain RA/TID, the session level |
2079 | * will be managed by the mac80211. | 2078 | * will be managed by the mac80211. |
2080 | */ | 2079 | */ |
2081 | int ieee80211_stop_tx_ba_session(struct ieee80211_hw *hw, | 2080 | int ieee80211_stop_tx_ba_session(struct ieee80211_sta *sta, u16 tid, |
2082 | u8 *ra, u16 tid, | ||
2083 | enum ieee80211_back_parties initiator); | 2081 | enum ieee80211_back_parties initiator); |
2084 | 2082 | ||
2085 | /** | 2083 | /** |
2086 | * ieee80211_stop_tx_ba_cb - low level driver ready to stop aggregate. | 2084 | * ieee80211_stop_tx_ba_cb - low level driver ready to stop aggregate. |
2087 | * @hw: pointer as obtained from ieee80211_alloc_hw(). | 2085 | * @vif: &struct ieee80211_vif pointer from &struct ieee80211_if_init_conf |
2088 | * @ra: receiver address of the BA session recipient. | 2086 | * @ra: receiver address of the BA session recipient. |
2089 | * @tid: the desired TID to BA on. | 2087 | * @tid: the desired TID to BA on. |
2090 | * | 2088 | * |
2091 | * This function must be called by low level driver once it has | 2089 | * This function must be called by low level driver once it has |
2092 | * finished with preparations for the BA session tear down. | 2090 | * finished with preparations for the BA session tear down. |
2093 | */ | 2091 | */ |
2094 | void ieee80211_stop_tx_ba_cb(struct ieee80211_hw *hw, u8 *ra, u8 tid); | 2092 | void ieee80211_stop_tx_ba_cb(struct ieee80211_vif *vif, u8 *ra, u8 tid); |
2095 | 2093 | ||
2096 | /** | 2094 | /** |
2097 | * ieee80211_stop_tx_ba_cb_irqsafe - low level driver ready to stop aggregate. | 2095 | * ieee80211_stop_tx_ba_cb_irqsafe - low level driver ready to stop aggregate. |
2098 | * @hw: pointer as obtained from ieee80211_alloc_hw(). | 2096 | * @vif: &struct ieee80211_vif pointer from &struct ieee80211_if_init_conf |
2099 | * @ra: receiver address of the BA session recipient. | 2097 | * @ra: receiver address of the BA session recipient. |
2100 | * @tid: the desired TID to BA on. | 2098 | * @tid: the desired TID to BA on. |
2101 | * | 2099 | * |
@@ -2103,7 +2101,7 @@ void ieee80211_stop_tx_ba_cb(struct ieee80211_hw *hw, u8 *ra, u8 tid); | |||
2103 | * finished with preparations for the BA session tear down. | 2101 | * finished with preparations for the BA session tear down. |
2104 | * This version of the function is IRQ-safe. | 2102 | * This version of the function is IRQ-safe. |
2105 | */ | 2103 | */ |
2106 | void ieee80211_stop_tx_ba_cb_irqsafe(struct ieee80211_hw *hw, const u8 *ra, | 2104 | void ieee80211_stop_tx_ba_cb_irqsafe(struct ieee80211_vif *vif, const u8 *ra, |
2107 | u16 tid); | 2105 | u16 tid); |
2108 | 2106 | ||
2109 | /** | 2107 | /** |