mirror of
				https://git.kernel.org/pub/scm/network/wireless/iwd.git
				synced 2025-10-31 21:27:30 +01:00 
			
		
		
		
	vendor_quirks: implement two vendor quirks
ignore_bss_tm_candidates: When a BSS requests a station roam it can optionally include a list of BSS's that can be roamed to. IWD uses this list and only scans on those frequencies. In some cases though the AP's list contains very poor options and it would be better for IWD to request a full neighbor report. replay_counter_mismatch: On some Aruba APs there is a mismatch in the replay counters between what is seen in scans versus authentications/associations. This difference is not allowed in the spec, therefore IWD will not connect. This quirk is intended to relax that check.
This commit is contained in:
		
							parent
							
								
									a1247fe46e
								
							
						
					
					
						commit
						6e9e0928b0
					
				| @ -25,6 +25,7 @@ | ||||
| #endif | ||||
| 
 | ||||
| #include <string.h> | ||||
| #include <stdio.h> | ||||
| 
 | ||||
| #include <ell/ell.h> | ||||
| 
 | ||||
| @ -34,7 +35,16 @@ static const struct { | ||||
| 	uint8_t oui[3]; | ||||
| 	struct vendor_quirk quirks; | ||||
| } oui_quirk_db[] = { | ||||
| 	{ } | ||||
| 	{ | ||||
| 		/* Cisco Meraki */ | ||||
| 		{ 0x00, 0x18, 0x0a }, | ||||
| 		{ .ignore_bss_tm_candidates = true }, | ||||
| 	}, | ||||
| 	{ | ||||
| 		/* Hewlett Packard, owns Aruba */ | ||||
| 		{ 0x00, 0x0b, 0x86 }, | ||||
| 		{ .replay_counter_mismatch = true }, | ||||
| 	}, | ||||
| }; | ||||
| 
 | ||||
| void vendor_quirks_append_for_oui(const uint8_t *oui, | ||||
| @ -58,8 +68,15 @@ void vendor_quirks_append_for_oui(const uint8_t *oui, | ||||
| const char *vendor_quirks_to_string(struct vendor_quirk quirks) | ||||
| { | ||||
| 	static char out[1024]; | ||||
| 	char *pos = out; | ||||
| 	size_t s = 0; | ||||
| 
 | ||||
| 	if (quirks.ignore_bss_tm_candidates) | ||||
| 		s += snprintf(pos, sizeof(out) - s, "IgnoreBssTmCandidateList"); | ||||
| 
 | ||||
| 	if (quirks.replay_counter_mismatch) | ||||
| 		s += snprintf(pos, sizeof(out) - s, "ReplayCounterMismatch"); | ||||
| 
 | ||||
| 	if (!s) | ||||
| 		return NULL; | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 James Prestwood
						James Prestwood