From 55837ad406c9af8a398d6073809151f7a3779b74 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 39/40] 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 48953c1..0699689 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 03442f5..5eb5248 100644
--- a/wpa_supplicant/events.c
+++ b/wpa_supplicant/events.c
@@ -3557,6 +3557,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)
@@ -3884,6 +3898,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

