blob: a6a86d8fb7d49a53e6921109c8afef3040ebad4b [file] [log] [blame]
From 33cbd77949640d337e4e39d462bbb6b575792de3 Mon Sep 17 00:00:00 2001
From: Michael Lee <michael-cy.lee@mediatek.com>
Date: Fri, 7 Jul 2023 17:16:11 +0800
Subject: [PATCH 37/38] hostapd: mtk: Set STA TX queue parameters configuration
after association
This patch adds the way for wpa_supplicant to set driver's TX queue
parameters.
Since STA parses and apply TX queue parameters from AP beacon's WMM IE
during association, wpa_supplicant set driver's TX queue parameters
after the association.
Signed-off-by: Michael Lee <michael-cy.lee@mediatek.com>
---
wpa_supplicant/driver_i.h | 12 ++++++++++++
wpa_supplicant/events.c | 16 ++++++++++++++++
2 files changed, 28 insertions(+)
diff --git a/wpa_supplicant/driver_i.h b/wpa_supplicant/driver_i.h
index dcf5764..36ff854 100644
--- a/wpa_supplicant/driver_i.h
+++ b/wpa_supplicant/driver_i.h
@@ -321,6 +321,18 @@ static inline int wpa_drv_set_country(struct wpa_supplicant *wpa_s,
return 0;
}
+static inline int wpa_drv_set_tx_queue_params(struct wpa_supplicant *wpa_s,
+ int q, int aifs, int cw_min,
+ int cw_max, int burst_time)
+{
+ int link_id = -1;
+ if (wpa_s->driver->set_tx_queue_params)
+ return wpa_s->driver->set_tx_queue_params(wpa_s->drv_priv, q,
+ aifs, cw_min, cw_max,
+ burst_time, link_id);
+ return 0;
+}
+
static inline int wpa_drv_send_mlme(struct wpa_supplicant *wpa_s,
const u8 *data, size_t data_len, int noack,
unsigned int freq, unsigned int wait)
diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c
index 3b8596d..f5ac62e 100644
--- a/wpa_supplicant/events.c
+++ b/wpa_supplicant/events.c
@@ -3559,6 +3559,20 @@ out:
return wpa_sm_set_mlo_params(wpa_s->wpa, &wpa_mlo);
}
+static void wpa_supplicant_tx_queue_params(struct wpa_supplicant *wpa_s){
+ struct hostapd_tx_queue_params *p;
+
+ for (int i = 0; i < NUM_TX_QUEUES; i++){
+ p = &wpa_s->conf->tx_queue[i];
+ if(wpa_drv_set_tx_queue_params(wpa_s, i, p->aifs,
+ p->cwmin, p->cwmax,
+ p->burst)) {
+ wpa_printf(MSG_DEBUG, "Failed to set TX queue "
+ "parameters for queue %d.", i);
+ /* Continue anyway */
+ }
+ }
+}
static void wpa_supplicant_event_assoc(struct wpa_supplicant *wpa_s,
union wpa_event_data *data)
@@ -3886,6 +3900,8 @@ static void wpa_supplicant_event_assoc(struct wpa_supplicant *wpa_s,
if (wpa_s->current_ssid && wpa_s->current_ssid->enable_4addr_mode)
wpa_supplicant_set_4addr_mode(wpa_s);
+
+ wpa_supplicant_tx_queue_params(wpa_s);
}
--
2.18.0