Make get_pri_sec_chan() common
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
This commit is contained in:
		
							parent
							
								
									514427437a
								
							
						
					
					
						commit
						6d5d098f77
					
				
					 3 changed files with 28 additions and 19 deletions
				
			
		|  | @ -252,25 +252,7 @@ static void ieee80211n_switch_pri_sec(struct hostapd_iface *iface) | ||||||
| static void ieee80211n_get_pri_sec_chan(struct wpa_scan_res *bss, | static void ieee80211n_get_pri_sec_chan(struct wpa_scan_res *bss, | ||||||
| 					int *pri_chan, int *sec_chan) | 					int *pri_chan, int *sec_chan) | ||||||
| { | { | ||||||
| 	struct ieee80211_ht_operation *oper; | 	return get_pri_sec_chan(bss, pri_chan, sec_chan); | ||||||
| 	struct ieee802_11_elems elems; |  | ||||||
| 
 |  | ||||||
| 	*pri_chan = *sec_chan = 0; |  | ||||||
| 
 |  | ||||||
| 	ieee802_11_parse_elems((u8 *) (bss + 1), bss->ie_len, &elems, 0); |  | ||||||
| 	if (elems.ht_operation && |  | ||||||
| 	    elems.ht_operation_len >= sizeof(*oper)) { |  | ||||||
| 		oper = (struct ieee80211_ht_operation *) elems.ht_operation; |  | ||||||
| 		*pri_chan = oper->primary_chan; |  | ||||||
| 		if (oper->ht_param & HT_INFO_HT_PARAM_STA_CHNL_WIDTH) { |  | ||||||
| 			int sec = oper->ht_param & |  | ||||||
| 				HT_INFO_HT_PARAM_SECONDARY_CHNL_OFF_MASK; |  | ||||||
| 			if (sec == HT_INFO_HT_PARAM_SECONDARY_CHNL_ABOVE) |  | ||||||
| 				*sec_chan = *pri_chan + 4; |  | ||||||
| 			else if (sec == HT_INFO_HT_PARAM_SECONDARY_CHNL_BELOW) |  | ||||||
| 				*sec_chan = *pri_chan - 4; |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -11,6 +11,8 @@ | ||||||
| 
 | 
 | ||||||
| #include "common.h" | #include "common.h" | ||||||
| #include "defs.h" | #include "defs.h" | ||||||
|  | #include "ieee802_11_defs.h" | ||||||
|  | #include "ieee802_11_common.h" | ||||||
| #include "hw_features_common.h" | #include "hw_features_common.h" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -140,3 +142,27 @@ int allowed_ht40_channel_pair(struct hostapd_hw_modes *mode, int pri_chan, | ||||||
| 
 | 
 | ||||||
| 	return 1; | 	return 1; | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | void get_pri_sec_chan(struct wpa_scan_res *bss, int *pri_chan, int *sec_chan) | ||||||
|  | { | ||||||
|  | 	struct ieee80211_ht_operation *oper; | ||||||
|  | 	struct ieee802_11_elems elems; | ||||||
|  | 
 | ||||||
|  | 	*pri_chan = *sec_chan = 0; | ||||||
|  | 
 | ||||||
|  | 	ieee802_11_parse_elems((u8 *) (bss + 1), bss->ie_len, &elems, 0); | ||||||
|  | 	if (elems.ht_operation && | ||||||
|  | 	    elems.ht_operation_len >= sizeof(*oper)) { | ||||||
|  | 		oper = (struct ieee80211_ht_operation *) elems.ht_operation; | ||||||
|  | 		*pri_chan = oper->primary_chan; | ||||||
|  | 		if (oper->ht_param & HT_INFO_HT_PARAM_STA_CHNL_WIDTH) { | ||||||
|  | 			int sec = oper->ht_param & | ||||||
|  | 				HT_INFO_HT_PARAM_SECONDARY_CHNL_OFF_MASK; | ||||||
|  | 			if (sec == HT_INFO_HT_PARAM_SECONDARY_CHNL_ABOVE) | ||||||
|  | 				*sec_chan = *pri_chan + 4; | ||||||
|  | 			else if (sec == HT_INFO_HT_PARAM_SECONDARY_CHNL_BELOW) | ||||||
|  | 				*sec_chan = *pri_chan - 4; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -22,5 +22,6 @@ int hw_get_chan(struct hostapd_hw_modes *mode, int freq); | ||||||
| 
 | 
 | ||||||
| int allowed_ht40_channel_pair(struct hostapd_hw_modes *mode, int pri_chan, | int allowed_ht40_channel_pair(struct hostapd_hw_modes *mode, int pri_chan, | ||||||
| 			      int sec_chan); | 			      int sec_chan); | ||||||
|  | void get_pri_sec_chan(struct wpa_scan_res *bss, int *pri_chan, int *sec_chan); | ||||||
| 
 | 
 | ||||||
| #endif /* HW_FEATURES_COMMON_H */ | #endif /* HW_FEATURES_COMMON_H */ | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Janusz Dziedzic
						Janusz Dziedzic