qtnfmac: report hardware/firmware information via ethtool
authorVasily Ulyanov <vulyanov@quantenna.com>
Mon, 22 Jan 2018 12:46:28 +0000 (15:46 +0300)
committerKalle Valo <kvalo@codeaurora.org>
Wed, 24 Jan 2018 16:00:34 +0000 (18:00 +0200)
Enable reporting of qtnfmac hardware and firmware details
using ethtool command.

Signed-off-by: Vasily Ulyanov <vulyanov@quantenna.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/quantenna/qtnfmac/cfg80211.c
drivers/net/wireless/quantenna/qtnfmac/commands.c
drivers/net/wireless/quantenna/qtnfmac/core.c
drivers/net/wireless/quantenna/qtnfmac/core.h

index c417a67..03f8190 100644 (file)
@@ -972,6 +972,10 @@ int qtnf_wiphy_register(struct qtnf_hw_info *hw_info, struct qtnf_wmac *mac)
                wiphy->regulatory_flags |= REGULATORY_WIPHY_SELF_MANAGED;
        }
 
+       strlcpy(wiphy->fw_version, hw_info->fw_version,
+               sizeof(wiphy->fw_version));
+       wiphy->hw_version = hw_info->hw_version;
+
        ret = wiphy_register(wiphy);
        if (ret < 0)
                goto out;
index d6bfb25..2017532 100644 (file)
@@ -1107,6 +1107,9 @@ qtnf_cmd_resp_proc_hw_info(struct qtnf_bus *bus,
                (unsigned long)plat_id,
                hw_id, calibration_ver, uboot_ver, hw_ver);
 
+       strlcpy(hwinfo->fw_version, bld_label, sizeof(hwinfo->fw_version));
+       hwinfo->hw_version = hw_ver;
+
        return 0;
 }
 
index c10f24f..1acbe30 100644 (file)
@@ -331,6 +331,10 @@ static struct qtnf_wmac *qtnf_core_mac_alloc(struct qtnf_bus *bus,
        return mac;
 }
 
+static const struct ethtool_ops qtnf_ethtool_ops = {
+       .get_drvinfo = cfg80211_get_drvinfo,
+};
+
 int qtnf_core_net_attach(struct qtnf_wmac *mac, struct qtnf_vif *vif,
                         const char *name, unsigned char name_assign_type)
 {
@@ -358,6 +362,7 @@ int qtnf_core_net_attach(struct qtnf_wmac *mac, struct qtnf_vif *vif,
        dev->flags |= IFF_BROADCAST | IFF_MULTICAST;
        dev->watchdog_timeo = QTNF_DEF_WDOG_TIMEOUT;
        dev->tx_queue_len = 100;
+       dev->ethtool_ops = &qtnf_ethtool_ops;
 
        qdev_vif = netdev_priv(dev);
        *((void **)qdev_vif) = vif;
index 09fa5d2..e47198c 100644 (file)
@@ -145,6 +145,8 @@ struct qtnf_hw_info {
        struct ieee80211_regdomain *rd;
        u8 total_tx_chain;
        u8 total_rx_chain;
+       char fw_version[ETHTOOL_FWVERS_LEN];
+       u32 hw_version;
 };
 
 struct qtnf_vif *qtnf_mac_get_free_vif(struct qtnf_wmac *mac);