qtnfmac: get more hardware info from card
authorVasily Ulyanov <vulyanov@quantenna.com>
Mon, 22 Jan 2018 12:46:27 +0000 (15:46 +0300)
committerKalle Valo <kvalo@codeaurora.org>
Wed, 24 Jan 2018 16:00:33 +0000 (18:00 +0200)
Various bits of hardware and firmware versions are useful for debug
and troubleshooting. Get more information from the wireless card.

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

index b47b06bd680f73900f18645c7b5a32d04fdb0628..d6bfb257cdaeb4f2c13db057d0e109d1651b2fd6 100644 (file)
@@ -949,6 +949,16 @@ qtnf_cmd_resp_proc_hw_info(struct qtnf_bus *bus,
        struct qtnf_hw_info *hwinfo = &bus->hw_info;
        const struct qlink_tlv_hdr *tlv;
        const struct qlink_tlv_reg_rule *tlv_rule;
+       const char *bld_name = NULL;
+       const char *bld_rev = NULL;
+       const char *bld_type = NULL;
+       const char *bld_label = NULL;
+       u32 bld_tmstamp = 0;
+       u32 plat_id = 0;
+       const char *hw_id = NULL;
+       const char *calibration_ver = NULL;
+       const char *uboot_ver = NULL;
+       u32 hw_ver = 0;
        struct ieee80211_reg_rule *rule;
        u16 tlv_type;
        u16 tlv_value_len;
@@ -975,6 +985,10 @@ qtnf_cmd_resp_proc_hw_info(struct qtnf_bus *bus,
        hwinfo->rd->alpha2[0] = resp->alpha2[0];
        hwinfo->rd->alpha2[1] = resp->alpha2[1];
 
+       bld_tmstamp = le32_to_cpu(resp->bld_tmstamp);
+       plat_id = le32_to_cpu(resp->plat_id);
+       hw_ver = le32_to_cpu(resp->hw_ver);
+
        switch (resp->dfs_region) {
        case QLINK_DFS_FCC:
                hwinfo->rd->dfs_region = NL80211_DFS_FCC;
@@ -1035,6 +1049,27 @@ qtnf_cmd_resp_proc_hw_info(struct qtnf_bus *bus,
                        rule->flags = qtnf_cmd_resp_reg_rule_flags_parse(
                                        le32_to_cpu(tlv_rule->flags));
                        break;
+               case QTN_TLV_ID_BUILD_NAME:
+                       bld_name = (const void *)tlv->val;
+                       break;
+               case QTN_TLV_ID_BUILD_REV:
+                       bld_rev = (const void *)tlv->val;
+                       break;
+               case QTN_TLV_ID_BUILD_TYPE:
+                       bld_type = (const void *)tlv->val;
+                       break;
+               case QTN_TLV_ID_BUILD_LABEL:
+                       bld_label = (const void *)tlv->val;
+                       break;
+               case QTN_TLV_ID_HW_ID:
+                       hw_id = (const void *)tlv->val;
+                       break;
+               case QTN_TLV_ID_CALIBRATION_VER:
+                       calibration_ver = (const void *)tlv->val;
+                       break;
+               case QTN_TLV_ID_UBOOT_VER:
+                       uboot_ver = (const void *)tlv->val;
+                       break;
                default:
                        break;
                }
@@ -1057,6 +1092,21 @@ qtnf_cmd_resp_proc_hw_info(struct qtnf_bus *bus,
                hwinfo->total_tx_chain, hwinfo->total_rx_chain,
                hwinfo->hw_capab);
 
+       pr_info("\nBuild name:            %s"  \
+               "\nBuild revision:        %s"  \
+               "\nBuild type:            %s"  \
+               "\nBuild label:           %s"  \
+               "\nBuild timestamp:       %lu" \
+               "\nPlatform ID:           %lu" \
+               "\nHardware ID:           %s"  \
+               "\nCalibration version:   %s"  \
+               "\nU-Boot version:        %s"  \
+               "\nHardware version:      0x%08x",
+               bld_name, bld_rev, bld_type, bld_label,
+               (unsigned long)bld_tmstamp,
+               (unsigned long)plat_id,
+               hw_id, calibration_ver, uboot_ver, hw_ver);
+
        return 0;
 }
 
index f4d49565161e262d425d094e08f1b020d4aca952..51cadd2a43f09e2c7aab61ddcd67e311957c6341 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <linux/ieee80211.h>
 
-#define QLINK_PROTO_VER                10
+#define QLINK_PROTO_VER                11
 
 #define QLINK_MACID_RSVD               0xFF
 #define QLINK_VIFID_RSVD               0xFF
@@ -764,6 +764,9 @@ struct qlink_resp_get_hw_info {
        struct qlink_resp rhdr;
        __le32 fw_ver;
        __le32 hw_capab;
+       __le32 bld_tmstamp;
+       __le32 plat_id;
+       __le32 hw_ver;
        __le16 ql_proto_ver;
        u8 num_mac;
        u8 mac_bitmap;
@@ -1074,6 +1077,13 @@ enum qlink_tlv_id {
        QTN_TLV_ID_IE_SET               = 0x0305,
        QTN_TLV_ID_EXT_CAPABILITY_MASK  = 0x0306,
        QTN_TLV_ID_ACL_DATA             = 0x0307,
+       QTN_TLV_ID_BUILD_NAME           = 0x0401,
+       QTN_TLV_ID_BUILD_REV            = 0x0402,
+       QTN_TLV_ID_BUILD_TYPE           = 0x0403,
+       QTN_TLV_ID_BUILD_LABEL          = 0x0404,
+       QTN_TLV_ID_HW_ID                = 0x0405,
+       QTN_TLV_ID_CALIBRATION_VER      = 0x0406,
+       QTN_TLV_ID_UBOOT_VER            = 0x0407,
 };
 
 struct qlink_tlv_hdr {