nl80211: Add a separate driver capability for control port RX
This is needed since the initial implementation of the control port mechanism in the kernel mixed in RSN pre-authentication ethertype unconditionally (and IMHO, incorrectly) into the control port. Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
		
							parent
							
								
									bb9e3935dd
								
							
						
					
					
						commit
						932546ac28
					
				
					 4 changed files with 10 additions and 2 deletions
				
			
		|  | @ -1838,7 +1838,7 @@ struct wpa_driver_capa { | ||||||
| #define WPA_DRIVER_FLAGS_FTM_RESPONDER		0x0100000000000000ULL | #define WPA_DRIVER_FLAGS_FTM_RESPONDER		0x0100000000000000ULL | ||||||
| /** Driver support 4-way handshake offload for WPA-Personal */ | /** Driver support 4-way handshake offload for WPA-Personal */ | ||||||
| #define WPA_DRIVER_FLAGS_4WAY_HANDSHAKE_PSK	0x0200000000000000ULL | #define WPA_DRIVER_FLAGS_4WAY_HANDSHAKE_PSK	0x0200000000000000ULL | ||||||
| /** Driver supports a separate control port for EAPOL frames */ | /** Driver supports a separate control port TX for EAPOL frames */ | ||||||
| #define WPA_DRIVER_FLAGS_CONTROL_PORT		0x0400000000000000ULL | #define WPA_DRIVER_FLAGS_CONTROL_PORT		0x0400000000000000ULL | ||||||
| /** Driver supports VLAN offload */ | /** Driver supports VLAN offload */ | ||||||
| #define WPA_DRIVER_FLAGS_VLAN_OFFLOAD		0x0800000000000000ULL | #define WPA_DRIVER_FLAGS_VLAN_OFFLOAD		0x0800000000000000ULL | ||||||
|  | @ -1852,6 +1852,8 @@ struct wpa_driver_capa { | ||||||
| #define WPA_DRIVER_FLAGS_EXTENDED_KEY_ID	0x8000000000000000ULL | #define WPA_DRIVER_FLAGS_EXTENDED_KEY_ID	0x8000000000000000ULL | ||||||
| 	u64 flags; | 	u64 flags; | ||||||
| 
 | 
 | ||||||
|  | /** Driver supports a separate control port RX for EAPOL frames */ | ||||||
|  | #define WPA_DRIVER_FLAGS2_CONTROL_PORT_RX	0x0000000000000001ULL | ||||||
| 	u64 flags2; | 	u64 flags2; | ||||||
| 
 | 
 | ||||||
| #define FULL_AP_CLIENT_STATE_SUPP(drv_flags) \ | #define FULL_AP_CLIENT_STATE_SUPP(drv_flags) \ | ||||||
|  |  | ||||||
|  | @ -327,6 +327,7 @@ const char * driver_flag2_to_string(u64 flag2) | ||||||
| { | { | ||||||
| #define DF2S(x) case WPA_DRIVER_FLAGS2_ ## x: return #x | #define DF2S(x) case WPA_DRIVER_FLAGS2_ ## x: return #x | ||||||
| 	switch (flag2) { | 	switch (flag2) { | ||||||
|  | 	DF2S(CONTROL_PORT_RX); | ||||||
| 	} | 	} | ||||||
| 	return "UNKNOWN"; | 	return "UNKNOWN"; | ||||||
| #undef DF2S | #undef DF2S | ||||||
|  |  | ||||||
|  | @ -8124,8 +8124,10 @@ static int nl80211_set_param(void *priv, const char *param) | ||||||
| 		drv->test_use_roc_tx = 1; | 		drv->test_use_roc_tx = 1; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if (os_strstr(param, "control_port=0")) | 	if (os_strstr(param, "control_port=0")) { | ||||||
| 		drv->capa.flags &= ~WPA_DRIVER_FLAGS_CONTROL_PORT; | 		drv->capa.flags &= ~WPA_DRIVER_FLAGS_CONTROL_PORT; | ||||||
|  | 		drv->capa.flags2 &= ~WPA_DRIVER_FLAGS2_CONTROL_PORT_RX; | ||||||
|  | 	} | ||||||
| 
 | 
 | ||||||
| 	if (os_strstr(param, "full_ap_client_state=0")) | 	if (os_strstr(param, "full_ap_client_state=0")) | ||||||
| 		drv->capa.flags &= ~WPA_DRIVER_FLAGS_FULL_AP_CLIENT_STATE; | 		drv->capa.flags &= ~WPA_DRIVER_FLAGS_FULL_AP_CLIENT_STATE; | ||||||
|  |  | ||||||
|  | @ -441,6 +441,9 @@ static void wiphy_info_ext_feature_flags(struct wiphy_info_data *info, | ||||||
| 	if (ext_feature_isset(ext_features, len, | 	if (ext_feature_isset(ext_features, len, | ||||||
| 			      NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211)) | 			      NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211)) | ||||||
| 		capa->flags |= WPA_DRIVER_FLAGS_CONTROL_PORT; | 		capa->flags |= WPA_DRIVER_FLAGS_CONTROL_PORT; | ||||||
|  | 	if (ext_feature_isset(ext_features, len, | ||||||
|  | 			      NL80211_EXT_FEATURE_CONTROL_PORT_NO_PREAUTH)) | ||||||
|  | 		capa->flags2 |= WPA_DRIVER_FLAGS2_CONTROL_PORT_RX; | ||||||
| 
 | 
 | ||||||
| 	if (ext_feature_isset(ext_features, len, | 	if (ext_feature_isset(ext_features, len, | ||||||
| 			      NL80211_EXT_FEATURE_VLAN_OFFLOAD)) | 			      NL80211_EXT_FEATURE_VLAN_OFFLOAD)) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Jouni Malinen
						Jouni Malinen