| From 7a02e5965652229833be92a9bd8f675e2015144a 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/54] mtk: hostapd: 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 dcf576487..36ff854ad 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 3b8596d6f..f5ac62eda 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 |
| |