diff options
author | Kalle Valo <kalle.valo@nokia.com> | 2009-09-24 14:02:42 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-10-07 16:39:46 -0400 |
commit | dfce95f51fe34fa18c87a7d0bea53594b9bf1b9a (patch) | |
tree | 2a5ad730134289b6a792af8a2cbd9d1aa3507f55 /net/wireless/ethtool.c | |
parent | 4890e3beddfb4a6859c4bb782c9cd05dd94ead82 (diff) |
cfg80211: add firmware and hardware version to wiphy
It's useful to provide firmware and hardware version to user space and have a
generic interface to retrieve them. Users can provide the version information
in bug reports etc.
Add fields for firmware and hardware version to struct wiphy.
(Dropped nl80211 bits for now and modified remaining bits in favor of
ethtool. -- JWL)
Cc: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/wireless/ethtool.c')
-rw-r--r-- | net/wireless/ethtool.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/net/wireless/ethtool.c b/net/wireless/ethtool.c index 80d6d0d31f12..ca4c825be93d 100644 --- a/net/wireless/ethtool.c +++ b/net/wireless/ethtool.c | |||
@@ -12,13 +12,34 @@ static void cfg80211_get_drvinfo(struct net_device *dev, | |||
12 | 12 | ||
13 | strlcpy(info->version, init_utsname()->release, sizeof(info->version)); | 13 | strlcpy(info->version, init_utsname()->release, sizeof(info->version)); |
14 | 14 | ||
15 | strlcpy(info->fw_version, "N/A", sizeof(info->fw_version)); | 15 | if (wdev->wiphy->fw_version[0]) |
16 | strncpy(info->fw_version, wdev->wiphy->fw_version, | ||
17 | sizeof(info->fw_version)); | ||
18 | else | ||
19 | strncpy(info->fw_version, "N/A", sizeof(info->fw_version)); | ||
16 | 20 | ||
17 | strlcpy(info->bus_info, dev_name(wiphy_dev(wdev->wiphy)), | 21 | strlcpy(info->bus_info, dev_name(wiphy_dev(wdev->wiphy)), |
18 | sizeof(info->bus_info)); | 22 | sizeof(info->bus_info)); |
19 | } | 23 | } |
20 | 24 | ||
25 | static int cfg80211_get_regs_len(struct net_device *dev) | ||
26 | { | ||
27 | /* For now, return 0... */ | ||
28 | return 0; | ||
29 | } | ||
30 | |||
31 | static void cfg80211_get_regs(struct net_device *dev, struct ethtool_regs *regs, | ||
32 | void *data) | ||
33 | { | ||
34 | struct wireless_dev *wdev = dev->ieee80211_ptr; | ||
35 | |||
36 | regs->version = wdev->wiphy->hw_version; | ||
37 | regs->len = 0; | ||
38 | } | ||
39 | |||
21 | const struct ethtool_ops cfg80211_ethtool_ops = { | 40 | const struct ethtool_ops cfg80211_ethtool_ops = { |
22 | .get_drvinfo = cfg80211_get_drvinfo, | 41 | .get_drvinfo = cfg80211_get_drvinfo, |
42 | .get_regs_len = cfg80211_get_regs_len, | ||
43 | .get_regs = cfg80211_get_regs, | ||
23 | .get_link = ethtool_op_get_link, | 44 | .get_link = ethtool_op_get_link, |
24 | }; | 45 | }; |