| From f649b398a58e34fa2d299c454bf253bcceb9f1e9 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 32/35] 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 ee922ac..585d207 100644 |
| --- a/src/drivers/driver_nl80211_event.c |
| +++ b/src/drivers/driver_nl80211_event.c |
| @@ -2930,7 +2930,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; |
| @@ -2944,37 +2944,37 @@ static void nl80211_obss_color_collision(struct wpa_driver_nl80211_data *drv, |
| |
| wpa_printf(MSG_DEBUG, "nl80211: BSS color collision - bitmap %08lx", |
| 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 */ |
| @@ -3230,16 +3230,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.18.0 |
| |