mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 03:36:19 +00:00
wireless: implement basic ethtool support for cfg80211 devices
Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
f41bb897f2
commit
4890e3bedd
4 changed files with 36 additions and 1 deletions
|
@ -10,7 +10,7 @@ obj-$(CONFIG_WEXT_SPY) += wext-spy.o
|
||||||
obj-$(CONFIG_WEXT_PRIV) += wext-priv.o
|
obj-$(CONFIG_WEXT_PRIV) += wext-priv.o
|
||||||
|
|
||||||
cfg80211-y += core.o sysfs.o radiotap.o util.o reg.o scan.o nl80211.o
|
cfg80211-y += core.o sysfs.o radiotap.o util.o reg.o scan.o nl80211.o
|
||||||
cfg80211-y += mlme.o ibss.o sme.o chan.o
|
cfg80211-y += mlme.o ibss.o sme.o chan.o ethtool.o
|
||||||
cfg80211-$(CONFIG_CFG80211_DEBUGFS) += debugfs.o
|
cfg80211-$(CONFIG_CFG80211_DEBUGFS) += debugfs.o
|
||||||
cfg80211-$(CONFIG_CFG80211_WEXT) += wext-compat.o wext-sme.o
|
cfg80211-$(CONFIG_CFG80211_WEXT) += wext-compat.o wext-sme.o
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include "sysfs.h"
|
#include "sysfs.h"
|
||||||
#include "debugfs.h"
|
#include "debugfs.h"
|
||||||
#include "wext-compat.h"
|
#include "wext-compat.h"
|
||||||
|
#include "ethtool.h"
|
||||||
|
|
||||||
/* name for sysfs, %d is appended */
|
/* name for sysfs, %d is appended */
|
||||||
#define PHY_NAME "phy"
|
#define PHY_NAME "phy"
|
||||||
|
@ -690,6 +691,8 @@ static int cfg80211_netdev_notifier_call(struct notifier_block * nb,
|
||||||
wdev->wext.ps = false;
|
wdev->wext.ps = false;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
if (!dev->ethtool_ops)
|
||||||
|
dev->ethtool_ops = &cfg80211_ethtool_ops;
|
||||||
break;
|
break;
|
||||||
case NETDEV_GOING_DOWN:
|
case NETDEV_GOING_DOWN:
|
||||||
switch (wdev->iftype) {
|
switch (wdev->iftype) {
|
||||||
|
|
24
net/wireless/ethtool.c
Normal file
24
net/wireless/ethtool.c
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
#include <linux/utsname.h>
|
||||||
|
#include <net/cfg80211.h>
|
||||||
|
#include "ethtool.h"
|
||||||
|
|
||||||
|
static void cfg80211_get_drvinfo(struct net_device *dev,
|
||||||
|
struct ethtool_drvinfo *info)
|
||||||
|
{
|
||||||
|
struct wireless_dev *wdev = dev->ieee80211_ptr;
|
||||||
|
|
||||||
|
strlcpy(info->driver, wiphy_dev(wdev->wiphy)->driver->name,
|
||||||
|
sizeof(info->driver));
|
||||||
|
|
||||||
|
strlcpy(info->version, init_utsname()->release, sizeof(info->version));
|
||||||
|
|
||||||
|
strlcpy(info->fw_version, "N/A", sizeof(info->fw_version));
|
||||||
|
|
||||||
|
strlcpy(info->bus_info, dev_name(wiphy_dev(wdev->wiphy)),
|
||||||
|
sizeof(info->bus_info));
|
||||||
|
}
|
||||||
|
|
||||||
|
const struct ethtool_ops cfg80211_ethtool_ops = {
|
||||||
|
.get_drvinfo = cfg80211_get_drvinfo,
|
||||||
|
.get_link = ethtool_op_get_link,
|
||||||
|
};
|
8
net/wireless/ethtool.h
Normal file
8
net/wireless/ethtool.h
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
#ifndef __CFG80211_ETHTOOL__
|
||||||
|
#define __CFG80211_ETHTOOL__
|
||||||
|
|
||||||
|
#include <linux/ethtool.h>
|
||||||
|
|
||||||
|
extern const struct ethtool_ops cfg80211_ethtool_ops;
|
||||||
|
|
||||||
|
#endif /* __CFG80211_ETHTOOL__ */
|
Loading…
Reference in a new issue