mac80211: provide SSID in IBSS mode
Some drivers need SSID in AP and IBSS mode. AP SSID is provided through BSS_CHANGED_SSID notification. There was no easy way to do the same for IBSS. In IBSS mode SSID is known but was not stored in BSS configuration. Extend the AP-mode functionality to also work in IBSS mode. Signed-off-by: Marek Puzyniak <marek.puzyniak@tieto.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
		
					parent
					
						
							
								a21a4d3e8a
							
						
					
				
			
			
				commit
				
					
						0ca54f6c5f
					
				
			
		
					 2 changed files with 6 additions and 2 deletions
				
			
		|  | @ -209,7 +209,7 @@ struct ieee80211_chanctx_conf { | ||||||
|  * @BSS_CHANGED_QOS: QoS for this association was enabled/disabled. Note |  * @BSS_CHANGED_QOS: QoS for this association was enabled/disabled. Note | ||||||
|  *	that it is only ever disabled for station mode. |  *	that it is only ever disabled for station mode. | ||||||
|  * @BSS_CHANGED_IDLE: Idle changed for this BSS/interface. |  * @BSS_CHANGED_IDLE: Idle changed for this BSS/interface. | ||||||
|  * @BSS_CHANGED_SSID: SSID changed for this BSS (AP mode) |  * @BSS_CHANGED_SSID: SSID changed for this BSS (AP and IBSS mode) | ||||||
|  * @BSS_CHANGED_AP_PROBE_RESP: Probe Response changed for this BSS (AP mode) |  * @BSS_CHANGED_AP_PROBE_RESP: Probe Response changed for this BSS (AP mode) | ||||||
|  * @BSS_CHANGED_PS: PS changed for this BSS (STA mode) |  * @BSS_CHANGED_PS: PS changed for this BSS (STA mode) | ||||||
|  * @BSS_CHANGED_TXPOWER: TX power setting changed for this interface |  * @BSS_CHANGED_TXPOWER: TX power setting changed for this interface | ||||||
|  | @ -326,7 +326,7 @@ enum ieee80211_rssi_event { | ||||||
|  *	your driver/device needs to do. |  *	your driver/device needs to do. | ||||||
|  * @ps: power-save mode (STA only). This flag is NOT affected by |  * @ps: power-save mode (STA only). This flag is NOT affected by | ||||||
|  *	offchannel/dynamic_ps operations. |  *	offchannel/dynamic_ps operations. | ||||||
|  * @ssid: The SSID of the current vif. Only valid in AP-mode. |  * @ssid: The SSID of the current vif. Valid in AP and IBSS mode. | ||||||
|  * @ssid_len: Length of SSID given in @ssid. |  * @ssid_len: Length of SSID given in @ssid. | ||||||
|  * @hidden_ssid: The SSID of the current vif is hidden. Only valid in AP-mode. |  * @hidden_ssid: The SSID of the current vif is hidden. Only valid in AP-mode. | ||||||
|  * @txpower: TX power in dBm |  * @txpower: TX power in dBm | ||||||
|  |  | ||||||
|  | @ -209,6 +209,8 @@ static void __ieee80211_sta_join_ibss(struct ieee80211_sub_if_data *sdata, | ||||||
| 	sdata->vif.bss_conf.enable_beacon = true; | 	sdata->vif.bss_conf.enable_beacon = true; | ||||||
| 	sdata->vif.bss_conf.beacon_int = beacon_int; | 	sdata->vif.bss_conf.beacon_int = beacon_int; | ||||||
| 	sdata->vif.bss_conf.basic_rates = basic_rates; | 	sdata->vif.bss_conf.basic_rates = basic_rates; | ||||||
|  | 	sdata->vif.bss_conf.ssid_len = ifibss->ssid_len; | ||||||
|  | 	memcpy(sdata->vif.bss_conf.ssid, ifibss->ssid, ifibss->ssid_len); | ||||||
| 	bss_change = BSS_CHANGED_BEACON_INT; | 	bss_change = BSS_CHANGED_BEACON_INT; | ||||||
| 	bss_change |= ieee80211_reset_erp_info(sdata); | 	bss_change |= ieee80211_reset_erp_info(sdata); | ||||||
| 	bss_change |= BSS_CHANGED_BSSID; | 	bss_change |= BSS_CHANGED_BSSID; | ||||||
|  | @ -217,6 +219,7 @@ static void __ieee80211_sta_join_ibss(struct ieee80211_sub_if_data *sdata, | ||||||
| 	bss_change |= BSS_CHANGED_BASIC_RATES; | 	bss_change |= BSS_CHANGED_BASIC_RATES; | ||||||
| 	bss_change |= BSS_CHANGED_HT; | 	bss_change |= BSS_CHANGED_HT; | ||||||
| 	bss_change |= BSS_CHANGED_IBSS; | 	bss_change |= BSS_CHANGED_IBSS; | ||||||
|  | 	bss_change |= BSS_CHANGED_SSID; | ||||||
| 
 | 
 | ||||||
| 	/*
 | 	/*
 | ||||||
| 	 * In 5 GHz/802.11a, we can always use short slot time. | 	 * In 5 GHz/802.11a, we can always use short slot time. | ||||||
|  | @ -1159,6 +1162,7 @@ int ieee80211_ibss_leave(struct ieee80211_sub_if_data *sdata) | ||||||
| 	sdata->vif.bss_conf.ibss_joined = false; | 	sdata->vif.bss_conf.ibss_joined = false; | ||||||
| 	sdata->vif.bss_conf.ibss_creator = false; | 	sdata->vif.bss_conf.ibss_creator = false; | ||||||
| 	sdata->vif.bss_conf.enable_beacon = false; | 	sdata->vif.bss_conf.enable_beacon = false; | ||||||
|  | 	sdata->vif.bss_conf.ssid_len = 0; | ||||||
| 	clear_bit(SDATA_STATE_OFFCHANNEL_BEACON_STOPPED, &sdata->state); | 	clear_bit(SDATA_STATE_OFFCHANNEL_BEACON_STOPPED, &sdata->state); | ||||||
| 	ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BEACON_ENABLED | | 	ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BEACON_ENABLED | | ||||||
| 						BSS_CHANGED_IBSS); | 						BSS_CHANGED_IBSS); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Marek Puzyniak
				Marek Puzyniak