mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 16:54:21 +00:00 
			
		
		
		
	wilc1000: add new WID to pass wake_enable information to firmware
Add new WID(WID_WOWLAN_TRIGGER) to send wake_enable information to firmware. In 'set_wakeup' cfg80211_ops callback, the enable information was not passed to firmware which is required to handle WOWLan trigger notification from firmware. Signed-off-by: Ajay Singh <ajay.kathat@microchip.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org> Link: https://lore.kernel.org/r/20210916164902.74629-4-ajay.kathat@microchip.com
This commit is contained in:
		
							parent
							
								
									3c719fed0f
								
							
						
					
					
						commit
						0ec5408cd4
					
				
					 5 changed files with 28 additions and 0 deletions
				
			
		|  | @ -1580,6 +1580,7 @@ static void wilc_set_wakeup(struct wiphy *wiphy, bool enabled) | |||
| 	} | ||||
| 
 | ||||
| 	netdev_info(vif->ndev, "cfg set wake up = %d\n", enabled); | ||||
| 	wilc_set_wowlan_trigger(vif, enabled); | ||||
| 	srcu_read_unlock(&wl->srcu, srcu_idx); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -23,6 +23,10 @@ struct wilc_set_multicast { | |||
| 	u8 *mc_list; | ||||
| }; | ||||
| 
 | ||||
| struct host_if_wowlan_trigger { | ||||
| 	u8 wowlan_trigger; | ||||
| }; | ||||
| 
 | ||||
| struct wilc_del_all_sta { | ||||
| 	u8 assoc_sta; | ||||
| 	u8 mac[WILC_MAX_NUM_STA][ETH_ALEN]; | ||||
|  | @ -34,6 +38,7 @@ union wilc_message_body { | |||
| 	struct wilc_set_multicast mc_info; | ||||
| 	struct wilc_remain_ch remain_on_ch; | ||||
| 	char *data; | ||||
| 	struct host_if_wowlan_trigger wow_trigger; | ||||
| }; | ||||
| 
 | ||||
| struct host_if_msg { | ||||
|  | @ -962,6 +967,25 @@ error: | |||
| 	kfree(msg); | ||||
| } | ||||
| 
 | ||||
| void wilc_set_wowlan_trigger(struct wilc_vif *vif, bool enabled) | ||||
| { | ||||
| 	int ret; | ||||
| 	struct wid wid; | ||||
| 	u8 wowlan_trigger = 0; | ||||
| 
 | ||||
| 	if (enabled) | ||||
| 		wowlan_trigger = 1; | ||||
| 
 | ||||
| 	wid.id = WID_WOWLAN_TRIGGER; | ||||
| 	wid.type = WID_CHAR; | ||||
| 	wid.val = &wowlan_trigger; | ||||
| 	wid.size = sizeof(char); | ||||
| 
 | ||||
| 	ret = wilc_send_config_pkt(vif, WILC_SET_CFG, &wid, 1); | ||||
| 	if (ret) | ||||
| 		pr_err("Failed to send wowlan trigger config packet\n"); | ||||
| } | ||||
| 
 | ||||
| static void handle_scan_timer(struct work_struct *work) | ||||
| { | ||||
| 	struct host_if_msg *msg = container_of(work, struct host_if_msg, work); | ||||
|  |  | |||
|  | @ -207,6 +207,7 @@ int wilc_get_statistics(struct wilc_vif *vif, struct rf_info *stats); | |||
| int wilc_get_vif_idx(struct wilc_vif *vif); | ||||
| int wilc_set_tx_power(struct wilc_vif *vif, u8 tx_power); | ||||
| int wilc_get_tx_power(struct wilc_vif *vif, u8 *tx_power); | ||||
| void wilc_set_wowlan_trigger(struct wilc_vif *vif, bool enabled); | ||||
| void wilc_scan_complete_received(struct wilc *wilc, u8 *buffer, u32 length); | ||||
| void wilc_network_info_received(struct wilc *wilc, u8 *buffer, u32 length); | ||||
| void wilc_gnrl_async_info_received(struct wilc *wilc, u8 *buffer, u32 length); | ||||
|  |  | |||
|  | @ -22,6 +22,7 @@ static const struct wilc_cfg_byte g_cfg_byte[] = { | |||
| 	{WID_STATUS, 0}, | ||||
| 	{WID_RSSI, 0}, | ||||
| 	{WID_LINKSPEED, 0}, | ||||
| 	{WID_WOWLAN_TRIGGER, 0}, | ||||
| 	{WID_NIL, 0} | ||||
| }; | ||||
| 
 | ||||
|  |  | |||
|  | @ -662,6 +662,7 @@ enum { | |||
| 
 | ||||
| 	WID_LOG_TERMINAL_SWITCH		= 0x00CD, | ||||
| 	WID_TX_POWER			= 0x00CE, | ||||
| 	WID_WOWLAN_TRIGGER		= 0X00CF, | ||||
| 	/*  EMAC Short WID list */ | ||||
| 	/*  RTS Threshold */ | ||||
| 	/*
 | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Ajay Singh
						Ajay Singh