Skip to content

Commit

Permalink
cfg80211: add firmware and hardware version to wiphy
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Kalle Valo authored and John W. Linville committed Oct 7, 2009
1 parent 4890e3b commit dfce95f
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 1 deletion.
3 changes: 3 additions & 0 deletions include/net/cfg80211.h
Original file line number Diff line number Diff line change
Expand Up @@ -1142,6 +1142,9 @@ struct wiphy {
u32 frag_threshold;
u32 rts_threshold;

char fw_version[ETHTOOL_BUSINFO_LEN];
u32 hw_version;

/* If multiple wiphys are registered and you're handed e.g.
* a regular netdev with assigned ieee80211_ptr, you won't
* know whether it points to a wiphy your driver has registered
Expand Down
23 changes: 22 additions & 1 deletion net/wireless/ethtool.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,34 @@ static void cfg80211_get_drvinfo(struct net_device *dev,

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)),
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 = {
.get_drvinfo = cfg80211_get_drvinfo,
.get_regs_len = cfg80211_get_regs_len,
.get_regs = cfg80211_get_regs,
.get_link = ethtool_op_get_link,
};

0 comments on commit dfce95f

Please sign in to comment.