From: Chenming Huang Date: Thu, 23 Mar 2023 08:04:45 +0000 (+0800) Subject: EHT: Process puncturing bitmap from channel select driver event for ACS X-Git-Tag: hostap_2_11~1102 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=05a2f4c4f81decb7c8f5fb4489e1301ed68ad334;p=thirdparty%2Fhostap.git EHT: Process puncturing bitmap from channel select driver event for ACS Retrieve the puncturing bitmap sent by the driver in channel select events for ACS when using the QCA vendor specific event. Signed-off-by: Jouni Malinen --- diff --git a/src/ap/drv_callbacks.c b/src/ap/drv_callbacks.c index 9732c8e83..4d765dcb1 100644 --- a/src/ap/drv_callbacks.c +++ b/src/ap/drv_callbacks.c @@ -1202,6 +1202,9 @@ void hostapd_acs_channel_selected(struct hostapd_data *hapd, hapd->iconf, acs_res->vht_seg1_center_ch); hostapd_set_oper_centr_freq_seg1_idx(hapd->iconf, 0); } + + if (hapd->iface->conf->ieee80211be && acs_res->puncture_bitmap) + hapd->iconf->punct_bitmap = acs_res->puncture_bitmap; #endif /* CONFIG_IEEE80211BE */ out: diff --git a/src/drivers/driver.h b/src/drivers/driver.h index b6171dde3..8e462c8b7 100644 --- a/src/drivers/driver.h +++ b/src/drivers/driver.h @@ -6540,6 +6540,7 @@ union wpa_event_data { u8 vht_seg1_center_ch; u16 ch_width; enum hostapd_hw_mode hw_mode; + u16 puncture_bitmap; } acs_selected_channels; /** diff --git a/src/drivers/driver_nl80211_event.c b/src/drivers/driver_nl80211_event.c index 34e74da7f..e7aff260d 100644 --- a/src/drivers/driver_nl80211_event.c +++ b/src/drivers/driver_nl80211_event.c @@ -2652,15 +2652,19 @@ static void qca_nl80211_acs_select_ch(struct wpa_driver_nl80211_data *drv, if (tb[QCA_WLAN_VENDOR_ATTR_ACS_CHWIDTH]) event.acs_selected_channels.ch_width = nla_get_u16(tb[QCA_WLAN_VENDOR_ATTR_ACS_CHWIDTH]); + if (tb[QCA_WLAN_VENDOR_ATTR_ACS_PUNCTURE_BITMAP]) + event.acs_selected_channels.puncture_bitmap = + nla_get_u16(tb[QCA_WLAN_VENDOR_ATTR_ACS_PUNCTURE_BITMAP]); wpa_printf(MSG_INFO, - "nl80211: ACS Results: PFreq: %d SFreq: %d BW: %d VHT0: %d VHT1: %d HW_MODE: %d EDMGCH: %d", + "nl80211: ACS Results: PFreq: %d SFreq: %d BW: %d VHT0: %d VHT1: %d HW_MODE: %d EDMGCH: %d PUNCBITMAP: 0x%x", event.acs_selected_channels.pri_freq, event.acs_selected_channels.sec_freq, event.acs_selected_channels.ch_width, event.acs_selected_channels.vht_seg0_center_ch, event.acs_selected_channels.vht_seg1_center_ch, event.acs_selected_channels.hw_mode, - event.acs_selected_channels.edmg_channel); + event.acs_selected_channels.edmg_channel, + event.acs_selected_channels.puncture_bitmap); /* Ignore ACS channel list check for backwards compatibility */