nl80211: Set P2P multichan concurrency based on interface combinations
Use the NL80211_IFACE_COMB_NUM_CHANNELS value > 1 as a trigger for enabling support for P2P multichannel channel concurrency. This does not handle all possible details of enforcing driver capabilities, but it is a good first step for allowing nl80211 drivers to enable multichannel concurrency. Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
		
							parent
							
								
									01335e2c8d
								
							
						
					
					
						commit
						e3e234fa35
					
				
					 1 changed files with 10 additions and 1 deletions
				
			
		|  | @ -2377,7 +2377,7 @@ static int wiphy_info_handler(struct nl_msg *msg, void *arg) | ||||||
| 	struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); | 	struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); | ||||||
| 	struct wiphy_info_data *info = arg; | 	struct wiphy_info_data *info = arg; | ||||||
| 	int p2p_go_supported = 0, p2p_client_supported = 0; | 	int p2p_go_supported = 0, p2p_client_supported = 0; | ||||||
| 	int p2p_concurrent = 0; | 	int p2p_concurrent = 0, p2p_multichan_concurrent = 0; | ||||||
| 	int auth_supported = 0, connect_supported = 0; | 	int auth_supported = 0, connect_supported = 0; | ||||||
| 	struct wpa_driver_capa *capa = info->capa; | 	struct wpa_driver_capa *capa = info->capa; | ||||||
| 	static struct nla_policy | 	static struct nla_policy | ||||||
|  | @ -2478,6 +2478,8 @@ static int wiphy_info_handler(struct nl_msg *msg, void *arg) | ||||||
| 
 | 
 | ||||||
| 			if (combination_has_p2p && combination_has_mgd) { | 			if (combination_has_p2p && combination_has_mgd) { | ||||||
| 				p2p_concurrent = 1; | 				p2p_concurrent = 1; | ||||||
|  | 				if (nla_get_u32(tb_comb[NL80211_IFACE_COMB_NUM_CHANNELS]) > 1) | ||||||
|  | 					p2p_multichan_concurrent = 1; | ||||||
| 				break; | 				break; | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
|  | @ -2545,6 +2547,13 @@ broken_combination: | ||||||
| 			   "interface (driver advertised support)"); | 			   "interface (driver advertised support)"); | ||||||
| 		capa->flags |= WPA_DRIVER_FLAGS_P2P_CONCURRENT; | 		capa->flags |= WPA_DRIVER_FLAGS_P2P_CONCURRENT; | ||||||
| 		capa->flags |= WPA_DRIVER_FLAGS_P2P_MGMT_AND_NON_P2P; | 		capa->flags |= WPA_DRIVER_FLAGS_P2P_MGMT_AND_NON_P2P; | ||||||
|  | 
 | ||||||
|  | 		if (p2p_multichan_concurrent) { | ||||||
|  | 			wpa_printf(MSG_DEBUG, "nl80211: Enable multi-channel " | ||||||
|  | 				   "concurrent (driver advertised support)"); | ||||||
|  | 			capa->flags |= | ||||||
|  | 				WPA_DRIVER_FLAGS_MULTI_CHANNEL_CONCURRENT; | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if (tb[NL80211_ATTR_TDLS_SUPPORT]) { | 	if (tb[NL80211_ATTR_TDLS_SUPPORT]) { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Wei-Jen Lin
						Wei-Jen Lin