| From ce585467d784d1015b5a40ec09895d0949690b04 Mon Sep 17 00:00:00 2001 |
| From: Michael Lee <michael-cy.lee@mediatek.com> |
| Date: Wed, 3 May 2023 14:55:18 +0800 |
| Subject: [PATCH 29/32] hostapd: mtk: Fix CCA issue |
| |
| When receiving CCA-related nl80211 commands, hostapd used to work on |
| struct wpa_driver_nl80211_data, whose ctx always points to |
| hostpad_iface->bss[0]. However, CCA commands are sent on a per-BSS based. |
| This patch makes hostapd handle CCA-related commands on a per-BSS based. |
| |
| Signed-off-by: Michael Lee <michael-cy.lee@mediatek.com> |
| --- |
| src/drivers/driver_nl80211_event.c | 24 ++++++++++++------------ |
| 1 file changed, 12 insertions(+), 12 deletions(-) |
| |
| diff --git a/src/drivers/driver_nl80211_event.c b/src/drivers/driver_nl80211_event.c |
| index 3d0d9b7bb..ab988fad7 100644 |
| --- a/src/drivers/driver_nl80211_event.c |
| +++ b/src/drivers/driver_nl80211_event.c |
| @@ -3662,7 +3662,7 @@ static void nl80211_assoc_comeback(struct wpa_driver_nl80211_data *drv, |
| |
| #ifdef CONFIG_IEEE80211AX |
| |
| -static void nl80211_obss_color_collision(struct wpa_driver_nl80211_data *drv, |
| +static void nl80211_obss_color_collision(struct i802_bss *bss, |
| struct nlattr *tb[]) |
| { |
| union wpa_event_data data; |
| @@ -3676,37 +3676,37 @@ static void nl80211_obss_color_collision(struct wpa_driver_nl80211_data *drv, |
| |
| wpa_printf(MSG_DEBUG, "nl80211: BSS color collision - bitmap %08llx", |
| (long long unsigned int) data.bss_color_collision.bitmap); |
| - wpa_supplicant_event(drv->ctx, EVENT_BSS_COLOR_COLLISION, &data); |
| + wpa_supplicant_event(bss->ctx, EVENT_BSS_COLOR_COLLISION, &data); |
| } |
| |
| |
| static void |
| -nl80211_color_change_announcement_started(struct wpa_driver_nl80211_data *drv) |
| +nl80211_color_change_announcement_started(struct i802_bss *bss) |
| { |
| union wpa_event_data data = {}; |
| |
| wpa_printf(MSG_DEBUG, "nl80211: CCA started"); |
| - wpa_supplicant_event(drv->ctx, EVENT_CCA_STARTED_NOTIFY, &data); |
| + wpa_supplicant_event(bss->ctx, EVENT_CCA_STARTED_NOTIFY, &data); |
| } |
| |
| |
| static void |
| -nl80211_color_change_announcement_aborted(struct wpa_driver_nl80211_data *drv) |
| +nl80211_color_change_announcement_aborted(struct i802_bss *bss) |
| { |
| union wpa_event_data data = {}; |
| |
| wpa_printf(MSG_DEBUG, "nl80211: CCA aborted"); |
| - wpa_supplicant_event(drv->ctx, EVENT_CCA_ABORTED_NOTIFY, &data); |
| + wpa_supplicant_event(bss->ctx, EVENT_CCA_ABORTED_NOTIFY, &data); |
| } |
| |
| |
| static void |
| -nl80211_color_change_announcement_completed(struct wpa_driver_nl80211_data *drv) |
| +nl80211_color_change_announcement_completed(struct i802_bss *bss) |
| { |
| union wpa_event_data data = {}; |
| |
| wpa_printf(MSG_DEBUG, "nl80211: CCA completed"); |
| - wpa_supplicant_event(drv->ctx, EVENT_CCA_NOTIFY, &data); |
| + wpa_supplicant_event(bss->ctx, EVENT_CCA_NOTIFY, &data); |
| } |
| |
| #endif /* CONFIG_IEEE80211AX */ |
| @@ -3968,16 +3968,16 @@ static void do_process_drv_event(struct i802_bss *bss, int cmd, |
| break; |
| #ifdef CONFIG_IEEE80211AX |
| case NL80211_CMD_OBSS_COLOR_COLLISION: |
| - nl80211_obss_color_collision(drv, tb); |
| + nl80211_obss_color_collision(bss, tb); |
| break; |
| case NL80211_CMD_COLOR_CHANGE_STARTED: |
| - nl80211_color_change_announcement_started(drv); |
| + nl80211_color_change_announcement_started(bss); |
| break; |
| case NL80211_CMD_COLOR_CHANGE_ABORTED: |
| - nl80211_color_change_announcement_aborted(drv); |
| + nl80211_color_change_announcement_aborted(bss); |
| break; |
| case NL80211_CMD_COLOR_CHANGE_COMPLETED: |
| - nl80211_color_change_announcement_completed(drv); |
| + nl80211_color_change_announcement_completed(bss); |
| break; |
| #endif /* CONFIG_IEEE80211AX */ |
| default: |
| -- |
| 2.39.2 |
| |