Advertise QoS Map support based on driver capability
Do not assume the driver supports QoS Mapping, but instead, advertise support for this only if CONFIG_INTERWORKING is defined and driver indicates support for configuring QoS Map. Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
parent
049105b486
commit
429dd9aff1
3 changed files with 10 additions and 1 deletions
|
@ -910,6 +910,8 @@ struct wpa_driver_capa {
|
||||||
#define WPA_DRIVER_FLAGS_RADAR 0x10000000
|
#define WPA_DRIVER_FLAGS_RADAR 0x10000000
|
||||||
/* Driver supports a dedicated interface for P2P Device */
|
/* Driver supports a dedicated interface for P2P Device */
|
||||||
#define WPA_DRIVER_FLAGS_DEDICATED_P2P_DEVICE 0x20000000
|
#define WPA_DRIVER_FLAGS_DEDICATED_P2P_DEVICE 0x20000000
|
||||||
|
/* Driver supports QoS Mapping */
|
||||||
|
#define WPA_DRIVER_FLAGS_QOS_MAPPING 0x40000000
|
||||||
unsigned int flags;
|
unsigned int flags;
|
||||||
|
|
||||||
int max_scan_ssids;
|
int max_scan_ssids;
|
||||||
|
|
|
@ -3105,6 +3105,7 @@ struct wiphy_info_data {
|
||||||
unsigned int p2p_client_supported:1;
|
unsigned int p2p_client_supported:1;
|
||||||
unsigned int p2p_concurrent:1;
|
unsigned int p2p_concurrent:1;
|
||||||
unsigned int channel_switch_supported:1;
|
unsigned int channel_switch_supported:1;
|
||||||
|
unsigned int set_qos_map_supported:1;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -3265,6 +3266,9 @@ static void wiphy_info_supp_cmds(struct wiphy_info_data *info,
|
||||||
case NL80211_CMD_CHANNEL_SWITCH:
|
case NL80211_CMD_CHANNEL_SWITCH:
|
||||||
info->channel_switch_supported = 1;
|
info->channel_switch_supported = 1;
|
||||||
break;
|
break;
|
||||||
|
case NL80211_CMD_SET_QOS_MAP:
|
||||||
|
info->set_qos_map_supported = 1;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3527,6 +3531,8 @@ static int wpa_driver_nl80211_capa(struct wpa_driver_nl80211_data *drv)
|
||||||
drv->poll_command_supported = info.poll_command_supported;
|
drv->poll_command_supported = info.poll_command_supported;
|
||||||
drv->data_tx_status = info.data_tx_status;
|
drv->data_tx_status = info.data_tx_status;
|
||||||
drv->channel_switch_supported = info.channel_switch_supported;
|
drv->channel_switch_supported = info.channel_switch_supported;
|
||||||
|
if (info.set_qos_map_supported)
|
||||||
|
drv->capa.flags |= WPA_DRIVER_FLAGS_QOS_MAPPING;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If poll command and tx status are supported, mac80211 is new enough
|
* If poll command and tx status are supported, mac80211 is new enough
|
||||||
|
|
|
@ -1229,7 +1229,8 @@ static void wpas_ext_capab_byte(struct wpa_supplicant *wpa_s, u8 *pos, int idx)
|
||||||
break;
|
break;
|
||||||
case 4: /* Bits 32-39 */
|
case 4: /* Bits 32-39 */
|
||||||
#ifdef CONFIG_INTERWORKING
|
#ifdef CONFIG_INTERWORKING
|
||||||
*pos |= 0x01; /* Bit 32 - QoS Map */
|
if (wpa_s->drv_flags / WPA_DRIVER_FLAGS_QOS_MAPPING)
|
||||||
|
*pos |= 0x01; /* Bit 32 - QoS Map */
|
||||||
#endif /* CONFIG_INTERWORKING */
|
#endif /* CONFIG_INTERWORKING */
|
||||||
break;
|
break;
|
||||||
case 5: /* Bits 40-47 */
|
case 5: /* Bits 40-47 */
|
||||||
|
|
Loading…
Reference in a new issue