Commit dfce95f5 authored by Kalle Valo's avatar Kalle Valo Committed by John W. Linville

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: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 4890e3be
...@@ -1142,6 +1142,9 @@ struct wiphy { ...@@ -1142,6 +1142,9 @@ struct wiphy {
u32 frag_threshold; u32 frag_threshold;
u32 rts_threshold; u32 rts_threshold;
char fw_version[ETHTOOL_BUSINFO_LEN];
u32 hw_version;
/* If multiple wiphys are registered and you're handed e.g. /* If multiple wiphys are registered and you're handed e.g.
* a regular netdev with assigned ieee80211_ptr, you won't * a regular netdev with assigned ieee80211_ptr, you won't
* know whether it points to a wiphy your driver has registered * know whether it points to a wiphy your driver has registered
......
...@@ -12,13 +12,34 @@ static void cfg80211_get_drvinfo(struct net_device *dev, ...@@ -12,13 +12,34 @@ static void cfg80211_get_drvinfo(struct net_device *dev,
strlcpy(info->version, init_utsname()->release, sizeof(info->version)); strlcpy(info->version, init_utsname()->release, sizeof(info->version));
strlcpy(info->fw_version, "N/A", sizeof(info->fw_version)); if (wdev->wiphy->fw_version[0])
strncpy(info->fw_version, wdev->wiphy->fw_version,
sizeof(info->fw_version));
else
strncpy(info->fw_version, "N/A", sizeof(info->fw_version));
strlcpy(info->bus_info, dev_name(wiphy_dev(wdev->wiphy)), strlcpy(info->bus_info, dev_name(wiphy_dev(wdev->wiphy)),
sizeof(info->bus_info)); sizeof(info->bus_info));
} }
static int cfg80211_get_regs_len(struct net_device *dev)
{
/* For now, return 0... */
return 0;
}
static void cfg80211_get_regs(struct net_device *dev, struct ethtool_regs *regs,
void *data)
{
struct wireless_dev *wdev = dev->ieee80211_ptr;
regs->version = wdev->wiphy->hw_version;
regs->len = 0;
}
const struct ethtool_ops cfg80211_ethtool_ops = { const struct ethtool_ops cfg80211_ethtool_ops = {
.get_drvinfo = cfg80211_get_drvinfo, .get_drvinfo = cfg80211_get_drvinfo,
.get_regs_len = cfg80211_get_regs_len,
.get_regs = cfg80211_get_regs,
.get_link = ethtool_op_get_link, .get_link = ethtool_op_get_link,
}; };
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