Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4890e3be authored by John W. Linville's avatar John W. Linville
Browse files

wireless: implement basic ethtool support for cfg80211 devices

parent f41bb897
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -10,7 +10,7 @@ obj-$(CONFIG_WEXT_SPY) += wext-spy.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 += 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_WEXT) += wext-compat.o wext-sme.o

+3 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@
#include "sysfs.h"
#include "debugfs.h"
#include "wext-compat.h"
#include "ethtool.h"

/* name for sysfs, %d is appended */
#define PHY_NAME "phy"
@@ -690,6 +691,8 @@ static int cfg80211_netdev_notifier_call(struct notifier_block * nb,
				wdev->wext.ps = false;
			}
#endif
		if (!dev->ethtool_ops)
			dev->ethtool_ops = &cfg80211_ethtool_ops;
		break;
	case NETDEV_GOING_DOWN:
		switch (wdev->iftype) {

net/wireless/ethtool.c

0 → 100644
+24 −0
Original line number Diff line number Diff line
#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,
};

net/wireless/ethtool.h

0 → 100644
+8 −0
Original line number Diff line number Diff line
#ifndef __CFG80211_ETHTOOL__
#define __CFG80211_ETHTOOL__

#include <linux/ethtool.h>

extern const struct ethtool_ops cfg80211_ethtool_ops;

#endif /* __CFG80211_ETHTOOL__ */