mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-25 11:55:37 +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 @@ static void handle_set_mcast_filter(struct work_struct *work)
|
|||
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…
Reference in a new issue