nl80211: Allow compilation with both vendor do_acs() handlers
Use a helper function as the do_acs() callback to allow builds to pull in all the vendor specific operations into a single binary. Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
61a258e784
commit
205c35ceff
3 changed files with 31 additions and 10 deletions
|
@ -10926,10 +10926,9 @@ static int add_acs_freq_list(struct nl_msg *msg, const int *freq_list)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int wpa_driver_do_acs(void *priv, struct drv_acs_params *params)
|
static int nl80211_qca_do_acs(struct wpa_driver_nl80211_data *drv,
|
||||||
|
struct drv_acs_params *params)
|
||||||
{
|
{
|
||||||
struct i802_bss *bss = priv;
|
|
||||||
struct wpa_driver_nl80211_data *drv = bss->drv;
|
|
||||||
struct nl_msg *msg;
|
struct nl_msg *msg;
|
||||||
struct nlattr *data;
|
struct nlattr *data;
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -11607,10 +11606,9 @@ fail:
|
||||||
|
|
||||||
|
|
||||||
#ifdef CONFIG_DRIVER_NL80211_BRCM
|
#ifdef CONFIG_DRIVER_NL80211_BRCM
|
||||||
static int wpa_driver_do_broadcom_acs(void *priv, struct drv_acs_params *params)
|
static int wpa_driver_do_broadcom_acs(struct wpa_driver_nl80211_data *drv,
|
||||||
|
struct drv_acs_params *params)
|
||||||
{
|
{
|
||||||
struct i802_bss *bss = priv;
|
|
||||||
struct wpa_driver_nl80211_data *drv = bss->drv;
|
|
||||||
struct nl_msg *msg;
|
struct nl_msg *msg;
|
||||||
struct nlattr *data;
|
struct nlattr *data;
|
||||||
int freq_list_len;
|
int freq_list_len;
|
||||||
|
@ -11660,6 +11658,27 @@ fail:
|
||||||
#endif /* CONFIG_DRIVER_NL80211_BRCM */
|
#endif /* CONFIG_DRIVER_NL80211_BRCM */
|
||||||
|
|
||||||
|
|
||||||
|
static int nl80211_do_acs(void *priv, struct drv_acs_params *params)
|
||||||
|
{
|
||||||
|
#if defined(CONFIG_DRIVER_NL80211_QCA) || defined(CONFIG_DRIVER_NL80211_BRCM)
|
||||||
|
struct i802_bss *bss = priv;
|
||||||
|
struct wpa_driver_nl80211_data *drv = bss->drv;
|
||||||
|
#endif /* CONFIG_DRIVER_NL80211_QCA || CONFIG_DRIVER_NL80211_BRCM */
|
||||||
|
|
||||||
|
#ifdef CONFIG_DRIVER_NL80211_QCA
|
||||||
|
if (drv->qca_do_acs)
|
||||||
|
return nl80211_qca_do_acs(drv, params);
|
||||||
|
#endif /* CONFIG_DRIVER_NL80211_QCA */
|
||||||
|
|
||||||
|
#ifdef CONFIG_DRIVER_NL80211_BRCM
|
||||||
|
if (drv->brcm_do_acs)
|
||||||
|
return wpa_driver_do_broadcom_acs(drv, params);
|
||||||
|
#endif /* CONFIG_DRIVER_NL80211_BRCM */
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int nl80211_write_to_file(const char *name, unsigned int val)
|
static int nl80211_write_to_file(const char *name, unsigned int val)
|
||||||
{
|
{
|
||||||
int fd, len;
|
int fd, len;
|
||||||
|
@ -12090,7 +12109,6 @@ const struct wpa_driver_ops wpa_driver_nl80211_ops = {
|
||||||
#ifdef CONFIG_DRIVER_NL80211_QCA
|
#ifdef CONFIG_DRIVER_NL80211_QCA
|
||||||
.roaming = nl80211_roaming,
|
.roaming = nl80211_roaming,
|
||||||
.disable_fils = nl80211_disable_fils,
|
.disable_fils = nl80211_disable_fils,
|
||||||
.do_acs = wpa_driver_do_acs,
|
|
||||||
.set_band = nl80211_set_band,
|
.set_band = nl80211_set_band,
|
||||||
.get_pref_freq_list = nl80211_get_pref_freq_list,
|
.get_pref_freq_list = nl80211_get_pref_freq_list,
|
||||||
.set_prob_oper_freq = nl80211_set_prob_oper_freq,
|
.set_prob_oper_freq = nl80211_set_prob_oper_freq,
|
||||||
|
@ -12105,9 +12123,7 @@ const struct wpa_driver_ops wpa_driver_nl80211_ops = {
|
||||||
.set_bssid_tmp_disallow = nl80211_set_bssid_tmp_disallow,
|
.set_bssid_tmp_disallow = nl80211_set_bssid_tmp_disallow,
|
||||||
.add_sta_node = nl80211_add_sta_node,
|
.add_sta_node = nl80211_add_sta_node,
|
||||||
#endif /* CONFIG_DRIVER_NL80211_QCA */
|
#endif /* CONFIG_DRIVER_NL80211_QCA */
|
||||||
#ifdef CONFIG_DRIVER_NL80211_BRCM
|
.do_acs = nl80211_do_acs,
|
||||||
.do_acs = wpa_driver_do_broadcom_acs,
|
|
||||||
#endif /* CONFIG_DRIVER_NL80211_BRCM */
|
|
||||||
.configure_data_frame_filters = nl80211_configure_data_frame_filters,
|
.configure_data_frame_filters = nl80211_configure_data_frame_filters,
|
||||||
.get_ext_capab = nl80211_get_ext_capab,
|
.get_ext_capab = nl80211_get_ext_capab,
|
||||||
.update_connect_params = nl80211_update_connection_params,
|
.update_connect_params = nl80211_update_connection_params,
|
||||||
|
|
|
@ -177,6 +177,8 @@ struct wpa_driver_nl80211_data {
|
||||||
unsigned int get_sta_info_vendor_cmd_avail:1;
|
unsigned int get_sta_info_vendor_cmd_avail:1;
|
||||||
unsigned int fils_discovery:1;
|
unsigned int fils_discovery:1;
|
||||||
unsigned int unsol_bcast_probe_resp:1;
|
unsigned int unsol_bcast_probe_resp:1;
|
||||||
|
unsigned int qca_do_acs:1;
|
||||||
|
unsigned int brcm_do_acs:1;
|
||||||
|
|
||||||
u64 vendor_scan_cookie;
|
u64 vendor_scan_cookie;
|
||||||
u64 remain_on_chan_cookie;
|
u64 remain_on_chan_cookie;
|
||||||
|
|
|
@ -996,6 +996,7 @@ static int wiphy_info_handler(struct nl_msg *msg, void *arg)
|
||||||
case QCA_NL80211_VENDOR_SUBCMD_DO_ACS:
|
case QCA_NL80211_VENDOR_SUBCMD_DO_ACS:
|
||||||
drv->capa.flags |=
|
drv->capa.flags |=
|
||||||
WPA_DRIVER_FLAGS_ACS_OFFLOAD;
|
WPA_DRIVER_FLAGS_ACS_OFFLOAD;
|
||||||
|
drv->qca_do_acs = 1;
|
||||||
break;
|
break;
|
||||||
case QCA_NL80211_VENDOR_SUBCMD_SETBAND:
|
case QCA_NL80211_VENDOR_SUBCMD_SETBAND:
|
||||||
drv->setband_vendor_cmd_avail = 1;
|
drv->setband_vendor_cmd_avail = 1;
|
||||||
|
@ -1028,6 +1029,8 @@ static int wiphy_info_handler(struct nl_msg *msg, void *arg)
|
||||||
WPA_DRIVER_FLAGS_ACS_OFFLOAD;
|
WPA_DRIVER_FLAGS_ACS_OFFLOAD;
|
||||||
wpa_printf(MSG_DEBUG,
|
wpa_printf(MSG_DEBUG,
|
||||||
"Enabled BRCM ACS");
|
"Enabled BRCM ACS");
|
||||||
|
drv->brcm_do_acs = 1;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_DRIVER_NL80211_BRCM */
|
#endif /* CONFIG_DRIVER_NL80211_BRCM */
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue