@ -1912,6 +1912,7 @@ static void wpas_start_wps_go(struct wpa_supplicant *wpa_s,
ssid - > vht = params - > vht ;
ssid - > max_oper_chwidth = params - > max_oper_chwidth ;
ssid - > vht_center_freq2 = params - > vht_center_freq2 ;
ssid - > he = params - > he ;
ssid - > ssid = os_zalloc ( params - > ssid_len + 1 ) ;
if ( ssid - > ssid ) {
os_memcpy ( ssid - > ssid , params - > ssid , params - > ssid_len ) ;
@ -3048,7 +3049,7 @@ static void wpas_invitation_received(void *ctx, const u8 *sa, const u8 *bssid,
MAC2STR ( sa ) , s - > id ) ;
}
wpas_p2p_group_add_persistent (
wpa_s , s , go , 0 , op_freq , 0 , 0 , 0 , 0 , NULL ,
wpa_s , s , go , 0 , op_freq , 0 , 0 , 0 , 0 , 0 , NULL ,
go ? P2P_MAX_INITIAL_CONN_WAIT_GO_REINVOKE : 0 ,
1 ) ;
} else if ( bssid ) {
@ -3274,6 +3275,7 @@ static void wpas_invitation_result(void *ctx, int status, const u8 *bssid,
wpa_s - > p2p_go_vht_center_freq2 ,
wpa_s - > p2p_go_ht40 , wpa_s - > p2p_go_vht ,
wpa_s - > p2p_go_max_oper_chwidth ,
wpa_s - > p2p_go_he ,
channels ,
ssid - > mode = = WPAS_MODE_P2P_GO ?
P2P_MAX_INITIAL_CONN_WAIT_GO_REINVOKE :
@ -4183,13 +4185,14 @@ static void wpas_p2ps_prov_complete(void *ctx, u8 status, const u8 *dev,
if ( response_done & & persistent_go ) {
wpas_p2p_group_add_persistent (
wpa_s , persistent_go ,
0 , 0 , freq , 0 , 0 , 0 , 0 , NULL ,
0 , 0 , freq , 0 , 0 , 0 , 0 , 0 , NULL ,
persistent_go - > mode = =
WPAS_MODE_P2P_GO ?
P2P_MAX_INITIAL_CONN_WAIT_GO_REINVOKE :
0 , 0 ) ;
} else if ( response_done ) {
wpas_p2p_group_add ( wpa_s , 1 , freq , 0 , 0 , 0 , 0 ) ;
wpas_p2p_group_add ( wpa_s , 1 , freq ,
0 , 0 , 0 , 0 , 0 ) ;
}
if ( passwd_id = = DEV_PW_P2PS_DEFAULT ) {
@ -4305,11 +4308,11 @@ static int wpas_prov_disc_resp_cb(void *ctx)
if ( persistent_go ) {
wpas_p2p_group_add_persistent (
wpa_s , persistent_go , 0 , 0 , 0 , 0 , 0 , 0 , 0 , NULL ,
wpa_s , persistent_go , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , NULL ,
persistent_go - > mode = = WPAS_MODE_P2P_GO ?
P2P_MAX_INITIAL_CONN_WAIT_GO_REINVOKE : 0 , 0 ) ;
} else {
wpas_p2p_group_add ( wpa_s , 1 , freq , 0 , 0 , 0 , 0 );
wpas_p2p_group_add ( wpa_s , 1 , freq , 0 , 0 , 0 , 0 , 0 );
}
return 1 ;
@ -4832,6 +4835,7 @@ static void wpas_p2p_scan_res_join(struct wpa_supplicant *wpa_s,
wpa_s - > p2p_go_ht40 ,
wpa_s - > p2p_go_vht ,
wpa_s - > p2p_go_max_oper_chwidth ,
wpa_s - > p2p_go_he ,
NULL , 0 ) ;
return ;
}
@ -5380,7 +5384,7 @@ int wpas_p2p_connect(struct wpa_supplicant *wpa_s, const u8 *peer_addr,
int persistent_group , int auto_join , int join , int auth ,
int go_intent , int freq , unsigned int vht_center_freq2 ,
int persistent_id , int pd , int ht40 , int vht ,
unsigned int vht_chwidth , const u8 * group_ssid ,
unsigned int vht_chwidth , int he , const u8 * group_ssid ,
size_t group_ssid_len )
{
int force_freq = 0 , pref_freq = 0 ;
@ -5425,6 +5429,7 @@ int wpas_p2p_connect(struct wpa_supplicant *wpa_s, const u8 *peer_addr,
wpa_s - > p2p_go_vht = ! ! vht ;
wpa_s - > p2p_go_vht_center_freq2 = vht_center_freq2 ;
wpa_s - > p2p_go_max_oper_chwidth = vht_chwidth ;
wpa_s - > p2p_go_he = ! ! he ;
if ( pin )
os_strlcpy ( wpa_s - > p2p_pin , pin , sizeof ( wpa_s - > p2p_pin ) ) ;
@ -5848,7 +5853,7 @@ static int wpas_same_band(int freq1, int freq2)
static int wpas_p2p_init_go_params ( struct wpa_supplicant * wpa_s ,
struct p2p_go_neg_results * params ,
int freq , int vht_center_freq2 , int ht40 ,
int vht , int max_oper_chwidth ,
int vht , int max_oper_chwidth , int he ,
const struct p2p_channels * channels )
{
struct wpa_used_freq_data * freqs ;
@ -5861,6 +5866,7 @@ static int wpas_p2p_init_go_params(struct wpa_supplicant *wpa_s,
params - > role_go = 1 ;
params - > ht40 = ht40 ;
params - > vht = vht ;
params - > he = he ;
params - > max_oper_chwidth = max_oper_chwidth ;
params - > vht_center_freq2 = vht_center_freq2 ;
@ -6217,7 +6223,7 @@ wpas_p2p_get_group_iface(struct wpa_supplicant *wpa_s, int addr_allocated,
*/
int wpas_p2p_group_add ( struct wpa_supplicant * wpa_s , int persistent_group ,
int freq , int vht_center_freq2 , int ht40 , int vht ,
int max_oper_chwidth )
int max_oper_chwidth , int he )
{
struct p2p_go_neg_results params ;
@ -6238,7 +6244,7 @@ int wpas_p2p_group_add(struct wpa_supplicant *wpa_s, int persistent_group,
}
if ( wpas_p2p_init_go_params ( wpa_s , & params , freq , vht_center_freq2 ,
ht40 , vht , max_oper_chwidth , NULL ) )
ht40 , vht , max_oper_chwidth , he , NULL ) )
return - 1 ;
p2p_go_params ( wpa_s - > global - > p2p , & params ) ;
@ -6317,7 +6323,7 @@ int wpas_p2p_group_add_persistent(struct wpa_supplicant *wpa_s,
struct wpa_ssid * ssid , int addr_allocated ,
int force_freq , int neg_freq ,
int vht_center_freq2 , int ht40 ,
int vht , int max_oper_chwidth ,
int vht , int max_oper_chwidth , int he ,
const struct p2p_channels * channels ,
int connection_timeout , int force_scan )
{
@ -6393,7 +6399,7 @@ int wpas_p2p_group_add_persistent(struct wpa_supplicant *wpa_s,
}
if ( wpas_p2p_init_go_params ( wpa_s , & params , freq , vht_center_freq2 ,
ht40 , vht , max_oper_chwidth , channels) )
ht40 , vht , max_oper_chwidth , he, channels) )
return - 1 ;
params . role_go = 1 ;
@ -6945,7 +6951,7 @@ int wpas_p2p_reject(struct wpa_supplicant *wpa_s, const u8 *addr)
int wpas_p2p_invite ( struct wpa_supplicant * wpa_s , const u8 * peer_addr ,
struct wpa_ssid * ssid , const u8 * go_dev_addr , int freq ,
int vht_center_freq2 , int ht40 , int vht , int max_chwidth ,
int pref_freq )
int pref_freq , int he )
{
enum p2p_invite_role role ;
u8 * bssid = NULL ;
@ -6963,6 +6969,7 @@ int wpas_p2p_invite(struct wpa_supplicant *wpa_s, const u8 *peer_addr,
wpa_s - > p2p_persistent_go_freq = freq ;
wpa_s - > p2p_go_ht40 = ! ! ht40 ;
wpa_s - > p2p_go_vht = ! ! vht ;
wpa_s - > p2p_go_he = ! ! he ;
wpa_s - > p2p_go_max_oper_chwidth = max_chwidth ;
wpa_s - > p2p_go_vht_center_freq2 = vht_center_freq2 ;
if ( ssid - > mode = = WPAS_MODE_P2P_GO ) {
@ -7985,7 +7992,8 @@ static int wpas_p2p_fallback_to_go_neg(struct wpa_supplicant *wpa_s,
wpa_s - > p2p_pd_before_go_neg ,
wpa_s - > p2p_go_ht40 ,
wpa_s - > p2p_go_vht ,
wpa_s - > p2p_go_max_oper_chwidth , NULL , 0 ) ;
wpa_s - > p2p_go_max_oper_chwidth ,
wpa_s - > p2p_go_he , NULL , 0 ) ;
return ret ;
}
@ -8521,6 +8529,7 @@ static int wpas_p2p_nfc_join_group(struct wpa_supplicant *wpa_s,
WPS_NFC , 0 , 0 , 1 , 0 , wpa_s - > conf - > p2p_go_intent ,
params - > go_freq , wpa_s - > p2p_go_vht_center_freq2 ,
- 1 , 0 , 1 , 1 , wpa_s - > p2p_go_max_oper_chwidth ,
wpa_s - > p2p_go_he ,
params - > go_ssid_len ? params - > go_ssid : NULL ,
params - > go_ssid_len ) ;
}
@ -8600,7 +8609,7 @@ static int wpas_p2p_nfc_init_go_neg(struct wpa_supplicant *wpa_s,
WPS_NFC , 0 , 0 , 0 , 0 , wpa_s - > conf - > p2p_go_intent ,
forced_freq , wpa_s - > p2p_go_vht_center_freq2 ,
- 1 , 0 , 1 , 1 , wpa_s - > p2p_go_max_oper_chwidth ,
NULL , 0 ) ;
wpa_s - > p2p_go_he , NULL , 0 ) ;
}
@ -8616,7 +8625,7 @@ static int wpas_p2p_nfc_resp_go_neg(struct wpa_supplicant *wpa_s,
WPS_NFC , 0 , 0 , 0 , 1 , wpa_s - > conf - > p2p_go_intent ,
forced_freq , wpa_s - > p2p_go_vht_center_freq2 ,
- 1 , 0 , 1 , 1 , wpa_s - > p2p_go_max_oper_chwidth ,
NULL , 0 ) ;
wpa_s - > p2p_go_he , NULL , 0 ) ;
if ( res )
return res ;
@ -9001,7 +9010,7 @@ static int wpas_p2p_move_go_csa(struct wpa_supplicant *wpa_s)
* TODO : This function may not always work correctly . For example ,
* when we have a running GO and a BSS on a DFS channel .
*/
if ( wpas_p2p_init_go_params ( wpa_s , & params , 0 , 0 , 0 , 0 , 0 , NULL ) ) {
if ( wpas_p2p_init_go_params ( wpa_s , & params , 0 , 0 , 0 , 0 , 0 , 0 , NULL ) ) {
wpa_dbg ( wpa_s , MSG_DEBUG ,
" P2P CSA: Failed to select new frequency for GO " ) ;
return - 1 ;
@ -9113,7 +9122,7 @@ static void wpas_p2p_move_go_no_csa(struct wpa_supplicant *wpa_s)
wpa_supplicant_ap_deinit ( wpa_s ) ;
/* Reselect the GO frequency */
if ( wpas_p2p_init_go_params ( wpa_s , & params , 0 , 0 , 0 , 0 , 0 , NULL ) ) {
if ( wpas_p2p_init_go_params ( wpa_s , & params , 0 , 0 , 0 , 0 , 0 , 0 , NULL ) ) {
wpa_dbg ( wpa_s , MSG_DEBUG , " P2P: Failed to reselect freq " ) ;
wpas_p2p_group_delete ( wpa_s ,
P2P_GROUP_REMOVAL_GO_LEAVE_CHANNEL ) ;