Commit cd389a34 authored by nohee ko's avatar nohee ko Committed by Greg Kroah-Hartman

staging: brcm80211: brcmfmac: add debugfs, display wi-fi statistics

Add debugfs to display wi-fi profile/statistics.
Initially some profile parameters such as dtim_period,
beacon_int will be seen at
/sys/kernel/debug/ieee80211/phy#/netdev:eth#.
This will provide users with current connection status.
Signed-off-by: default avatarNohee Ko <noheek@broadcom.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 1e0645c3
...@@ -333,6 +333,12 @@ static __used s32 wl_update_pmklist(struct net_device *dev, ...@@ -333,6 +333,12 @@ static __used s32 wl_update_pmklist(struct net_device *dev,
static void wl_set_mpc(struct net_device *ndev, int mpc); static void wl_set_mpc(struct net_device *ndev, int mpc);
/*
* debufs support
*/
static int wl_debugfs_add_netdev_params(struct wl_priv *wl);
static void wl_debugfs_remove_netdev(struct wl_priv *wl);
#define WL_PRIV_GET() \ #define WL_PRIV_GET() \
({ \ ({ \
struct wl_iface *ci; \ struct wl_iface *ci; \
...@@ -3814,6 +3820,8 @@ static s32 __wl_cfg80211_up(struct wl_priv *wl) ...@@ -3814,6 +3820,8 @@ static s32 __wl_cfg80211_up(struct wl_priv *wl)
{ {
s32 err = 0; s32 err = 0;
wl_debugfs_add_netdev_params(wl);
err = wl_config_dongle(wl, false); err = wl_config_dongle(wl, false);
if (unlikely(err)) if (unlikely(err))
return err; return err;
...@@ -3851,6 +3859,8 @@ static s32 __wl_cfg80211_down(struct wl_priv *wl) ...@@ -3851,6 +3859,8 @@ static s32 __wl_cfg80211_down(struct wl_priv *wl)
clear_bit(WL_STATUS_SCAN_ABORTING, &wl->status); clear_bit(WL_STATUS_SCAN_ABORTING, &wl->status);
clear_bit(WL_STATUS_CONNECTED, &wl->status); clear_bit(WL_STATUS_CONNECTED, &wl->status);
wl_debugfs_remove_netdev(wl);
return err; return err;
} }
...@@ -4186,3 +4196,36 @@ static void wl_set_mpc(struct net_device *ndev, int mpc) ...@@ -4186,3 +4196,36 @@ static void wl_set_mpc(struct net_device *ndev, int mpc)
} }
WL_DBG(("MPC : %d\n", mpc)); WL_DBG(("MPC : %d\n", mpc));
} }
static int wl_debugfs_add_netdev_params(struct wl_priv *wl)
{
char buf[10+IFNAMSIZ];
struct dentry *fd;
s32 err = 0;
sprintf(buf, "netdev:%s", wl_to_ndev(wl)->name);
wl->debugfsdir = debugfs_create_dir(buf, wl_to_wiphy(wl)->debugfsdir);
fd = debugfs_create_u16("beacon_int", S_IRUGO, wl->debugfsdir,
(u16 *)&wl->profile->beacon_interval);
if (!fd) {
err = -ENOMEM;
goto err_out;
}
fd = debugfs_create_u8("dtim_period", S_IRUGO, wl->debugfsdir,
(u8 *)&wl->profile->dtim_period);
if (!fd) {
err = -ENOMEM;
goto err_out;
}
err_out:
return err;
}
static void wl_debugfs_remove_netdev(struct wl_priv *wl)
{
debugfs_remove_recursive(wl->debugfsdir);
wl->debugfsdir = NULL;
}
...@@ -341,6 +341,7 @@ struct wl_priv { ...@@ -341,6 +341,7 @@ struct wl_priv {
bool scan_tried; /* indicates if first scan attempted */ bool scan_tried; /* indicates if first scan attempted */
u8 *ioctl_buf; /* ioctl buffer */ u8 *ioctl_buf; /* ioctl buffer */
u8 *extra_buf; /* maily to grab assoc information */ u8 *extra_buf; /* maily to grab assoc information */
struct dentry *debugfsdir;
u8 ci[0] __attribute__ ((__aligned__(NETDEV_ALIGN))); u8 ci[0] __attribute__ ((__aligned__(NETDEV_ALIGN)));
}; };
......
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