Commit 0ec5408c authored by Ajay Singh's avatar Ajay Singh Committed by Kalle Valo

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: default avatarAjay Singh <ajay.kathat@microchip.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20210916164902.74629-4-ajay.kathat@microchip.com
parent 3c719fed
...@@ -1580,6 +1580,7 @@ static void wilc_set_wakeup(struct wiphy *wiphy, bool enabled) ...@@ -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); netdev_info(vif->ndev, "cfg set wake up = %d\n", enabled);
wilc_set_wowlan_trigger(vif, enabled);
srcu_read_unlock(&wl->srcu, srcu_idx); srcu_read_unlock(&wl->srcu, srcu_idx);
} }
......
...@@ -23,6 +23,10 @@ struct wilc_set_multicast { ...@@ -23,6 +23,10 @@ struct wilc_set_multicast {
u8 *mc_list; u8 *mc_list;
}; };
struct host_if_wowlan_trigger {
u8 wowlan_trigger;
};
struct wilc_del_all_sta { struct wilc_del_all_sta {
u8 assoc_sta; u8 assoc_sta;
u8 mac[WILC_MAX_NUM_STA][ETH_ALEN]; u8 mac[WILC_MAX_NUM_STA][ETH_ALEN];
...@@ -34,6 +38,7 @@ union wilc_message_body { ...@@ -34,6 +38,7 @@ union wilc_message_body {
struct wilc_set_multicast mc_info; struct wilc_set_multicast mc_info;
struct wilc_remain_ch remain_on_ch; struct wilc_remain_ch remain_on_ch;
char *data; char *data;
struct host_if_wowlan_trigger wow_trigger;
}; };
struct host_if_msg { struct host_if_msg {
...@@ -962,6 +967,25 @@ static void handle_set_mcast_filter(struct work_struct *work) ...@@ -962,6 +967,25 @@ static void handle_set_mcast_filter(struct work_struct *work)
kfree(msg); 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) static void handle_scan_timer(struct work_struct *work)
{ {
struct host_if_msg *msg = container_of(work, struct host_if_msg, 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); ...@@ -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_get_vif_idx(struct wilc_vif *vif);
int wilc_set_tx_power(struct wilc_vif *vif, u8 tx_power); int wilc_set_tx_power(struct wilc_vif *vif, u8 tx_power);
int wilc_get_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_scan_complete_received(struct wilc *wilc, u8 *buffer, u32 length);
void wilc_network_info_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); 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[] = { ...@@ -22,6 +22,7 @@ static const struct wilc_cfg_byte g_cfg_byte[] = {
{WID_STATUS, 0}, {WID_STATUS, 0},
{WID_RSSI, 0}, {WID_RSSI, 0},
{WID_LINKSPEED, 0}, {WID_LINKSPEED, 0},
{WID_WOWLAN_TRIGGER, 0},
{WID_NIL, 0} {WID_NIL, 0}
}; };
......
...@@ -662,6 +662,7 @@ enum { ...@@ -662,6 +662,7 @@ enum {
WID_LOG_TERMINAL_SWITCH = 0x00CD, WID_LOG_TERMINAL_SWITCH = 0x00CD,
WID_TX_POWER = 0x00CE, WID_TX_POWER = 0x00CE,
WID_WOWLAN_TRIGGER = 0X00CF,
/* EMAC Short WID list */ /* EMAC Short WID list */
/* RTS Threshold */ /* RTS Threshold */
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment