Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5ec5b532 authored by Vasily Ulyanov's avatar Vasily Ulyanov Committed by Kalle Valo
Browse files

qtnfmac: get more hardware info from card



Various bits of hardware and firmware versions are useful for debug
and troubleshooting. Get more information from the wireless card.

Signed-off-by: default avatarVasily Ulyanov <vulyanov@quantenna.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent 04b01aff
Loading
Loading
Loading
Loading
+50 −0
Original line number Diff line number Diff line
@@ -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;
}

+11 −1
Original line number Diff line number Diff line
@@ -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 {