[PATCH v2 04/13] WMM AC: driver: add add_tx_ts and del_tx_ts driver ops

Ilan Peer ilan.peer at intel.com
Wed Oct 22 08:03:55 EDT 2014


From: Moshe Benji <Moshe.Benji at intel.com>

Add add_tx_ts and del_tx_ts ops to notify the driver about
tspecs to add / delete.

Additionally, add wmm_ac_supported flag to indicate
whether the driver supports wmm ac.

Signed-off-by: Moshe Benji <moshe.benji at intel.com>
Signed-off-by: Eliad Peller <eliad at wizery.com>
---
 src/drivers/driver.h              | 24 ++++++++++++++++++++++++
 wpa_supplicant/driver_i.h         | 18 ++++++++++++++++++
 wpa_supplicant/wpa_supplicant.c   |  2 ++
 wpa_supplicant/wpa_supplicant_i.h |  1 +
 4 files changed, 45 insertions(+)

diff --git a/src/drivers/driver.h b/src/drivers/driver.h
index 0cde9c5..cba1e09 100644
--- a/src/drivers/driver.h
+++ b/src/drivers/driver.h
@@ -1048,6 +1048,8 @@ struct wpa_driver_capa {
 #define WPA_DRIVER_FLAGS_MESH			0x0000000100000000ULL
 	u64 flags;
 
+	unsigned int wmm_ac_supported:1;
+
 	int max_scan_ssids;
 	int max_sched_scan_ssids;
 	int sched_scan_supported;
@@ -2795,6 +2797,28 @@ struct wpa_driver_ops {
 	int (*switch_channel)(void *priv, struct csa_settings *settings);
 
 	/**
+	 * add_tx_ts - Add traffic stream
+	 * @priv: Private driver interface data
+	 * @tsid: traffic stream ID
+	 * @addr: receiver address
+	 * @user_prio: user priority of the traffic stream
+	 * @admitted_time: admitted time for this TS in units
+	 *	of 32 microsecond periods (per second).
+	 * Returns: 0 on success, -1 on failure
+	 */
+	int (*add_tx_ts)(void *priv, u8 tsid, const u8 *addr, u8 user_prio,
+			 u16 admitted_time);
+
+	/**
+	 * del_tx_ts - Delete traffic stream
+	 * @priv: Private driver interface data
+	 * @tsid: traffic stream ID
+	 * @addr: receiver address
+	 * Returns: 0 on success, -1 on failure
+	 */
+	int (*del_tx_ts)(void *priv, u8 tsid, const u8 *addr);
+
+	/**
 	 * start_dfs_cac - Listen for radar interference on the channel
 	 * @priv: Private driver interface data
 	 * @freq: Channel parameters
diff --git a/wpa_supplicant/driver_i.h b/wpa_supplicant/driver_i.h
index 18a5457..4a6d38c 100644
--- a/wpa_supplicant/driver_i.h
+++ b/wpa_supplicant/driver_i.h
@@ -609,6 +609,24 @@ static inline int wpa_drv_switch_channel(struct wpa_supplicant *wpa_s,
 	return wpa_s->driver->switch_channel(wpa_s->drv_priv, settings);
 }
 
+static inline int wpa_drv_add_ts(struct wpa_supplicant *wpa_s, u8 tsid,
+				 const u8 *address, u8 user_priority,
+				 u16 admitted_time)
+{
+	if (!wpa_s->driver->add_tx_ts)
+		return -1;
+	return wpa_s->driver->add_tx_ts(wpa_s->drv_priv, tsid, address,
+					user_priority, admitted_time);
+}
+
+static inline int wpa_drv_del_ts(struct wpa_supplicant *wpa_s, u8 tid,
+				 const u8 *address)
+{
+	if (!wpa_s->driver->del_tx_ts)
+		return -1;
+	return wpa_s->driver->del_tx_ts(wpa_s->drv_priv, tid, address);
+}
+
 static inline int wpa_drv_wnm_oper(struct wpa_supplicant *wpa_s,
 				   enum wnm_oper oper, const u8 *peer,
 				   u8 *buf, u16 *buf_len)
diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c
index 27afa83..090d967 100644
--- a/wpa_supplicant/wpa_supplicant.c
+++ b/wpa_supplicant/wpa_supplicant.c
@@ -3800,7 +3800,9 @@ static int wpa_supplicant_init_iface(struct wpa_supplicant *wpa_s,
 		wpa_s->extended_capa_len = capa.extended_capa_len;
 		wpa_s->num_multichan_concurrent =
 			capa.num_multichan_concurrent;
+		wpa_s->wmm_ac_supported = capa.wmm_ac_supported;
 	}
+
 	if (wpa_s->max_remain_on_chan == 0)
 		wpa_s->max_remain_on_chan = 1000;
 
diff --git a/wpa_supplicant/wpa_supplicant_i.h b/wpa_supplicant/wpa_supplicant_i.h
index b26c319..443065d 100644
--- a/wpa_supplicant/wpa_supplicant_i.h
+++ b/wpa_supplicant/wpa_supplicant_i.h
@@ -875,6 +875,7 @@ struct wpa_supplicant {
 	struct l2_packet_data *l2_test;
 #endif /* CONFIG_TESTING_OPTIONS */
 
+	unsigned int wmm_ac_supported:1;
 	struct wmm_ac_assoc_data *wmm_ac_assoc_info;
 };
 
-- 
1.8.3.2



More information about the HostAP mailing list