mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-11-01 09:13: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);
|
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 {
|
||||||
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 {
|
||||||
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 @@ error:
|
||||||
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);
|
||||||
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[] = {
|
||||||
{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 {
|
||||||
|
|
||||||
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 */
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue