Message ID | 20190828154733.3910-1-zajec5@gmail.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Kalle Valo |
Headers | show |
Series | brcmfmac: add "reset" debugfs entry for testing reset | expand |
On 28.08.2019 17:47, Rafał Miłecki wrote: > From: Rafał Miłecki <rafal@milecki.pl> > > This is a trivial debugfs entry for triggering reset just like in case > of firmware crash. It works by writing 1 to it: > echo 1 > reset > > Signed-off-by: Rafał Miłecki <rafal@milecki.pl> Please drop this patch drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c: In function 'brcmf_bus_started': drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c:1187:37: error: implicit declaration of function 'brcmf_debugfs_get_devdir'; did you mean 'brcmf_debugfs_add_entry'? [-Werror=implicit-function-declaration] debugfs_create_file("reset", 0600, brcmf_debugfs_get_devdir(drvr), drvr, ^~~~~~~~~~~~~~~~~~~~~~~~ brcmf_debugfs_add_entry
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c index 705b8cc53c3e..21e07d1ceeae 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c @@ -1086,6 +1086,29 @@ static void brcmf_core_bus_reset(struct work_struct *work) brcmf_bus_reset(drvr->bus_if); } +static ssize_t bus_reset_write(struct file *file, const char __user *user_buf, + size_t count, loff_t *ppos) +{ + struct brcmf_pub *drvr = file->private_data; + u8 value; + + if (kstrtou8_from_user(user_buf, count, 0, &value)) + return -EINVAL; + + if (value != 1) + return -EINVAL; + + schedule_work(&drvr->bus_reset); + + return count; +} + +static const struct file_operations bus_reset_fops = { + .open = simple_open, + .llseek = no_llseek, + .write = bus_reset_write, +}; + static int brcmf_bus_started(struct brcmf_pub *drvr, struct cfg80211_ops *ops) { int ret = -1; @@ -1161,6 +1184,8 @@ static int brcmf_bus_started(struct brcmf_pub *drvr, struct cfg80211_ops *ops) /* populate debugfs */ brcmf_debugfs_add_entry(drvr, "revinfo", brcmf_revinfo_read); + debugfs_create_file("reset", 0600, brcmf_debugfs_get_devdir(drvr), drvr, + &bus_reset_fops); brcmf_feat_debugfs_create(drvr); brcmf_proto_debugfs_create(drvr); brcmf_bus_debugfs_create(bus_if);