summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@quicinc.com>2017-11-30 03:23:36 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2017-11-30 03:23:35 -0800
commit39312eaf10f92d449fe51880ffc4567c832378a0 (patch)
tree39c83007002423642018381ac64b9ebce6237e8f
parentc414a49eded39536e4e1a0c7ad7ab4370212dc22 (diff)
parent8be2a9ef5deacee308b8c36451ebc1fdfa08c8ea (diff)
Merge "ath10k: Add phyerr event changes for HL1.0"
-rw-r--r--drivers/net/wireless/ath/ath10k/wmi-tlv.c5
-rw-r--r--drivers/net/wireless/ath/ath10k/wmi-tlv.h4
-rw-r--r--drivers/net/wireless/ath/ath10k/wmi.c19
-rw-r--r--drivers/net/wireless/ath/ath10k/wmi.h6
4 files changed, 25 insertions, 9 deletions
diff --git a/drivers/net/wireless/ath/ath10k/wmi-tlv.c b/drivers/net/wireless/ath/ath10k/wmi-tlv.c
index aeeccade58b9..ad27abc61deb 100644
--- a/drivers/net/wireless/ath/ath10k/wmi-tlv.c
+++ b/drivers/net/wireless/ath/ath10k/wmi-tlv.c
@@ -923,6 +923,11 @@ static int ath10k_wmi_tlv_op_pull_phyerr_ev_hdr(struct ath10k *ar,
arg->buf_len = __le32_to_cpu(ev->buf_len);
arg->phyerrs = phyerrs;
+ if (QCA_REV_WCN3990(ar)) {
+ arg->phy_err_mask0 = __le32_to_cpu(ev->rs_phy_err_mask0);
+ arg->phy_err_mask1 = __le32_to_cpu(ev->rs_phy_err_mask1);
+ }
+
kfree(tb);
return 0;
}
diff --git a/drivers/net/wireless/ath/ath10k/wmi-tlv.h b/drivers/net/wireless/ath/ath10k/wmi-tlv.h
index 1d4aed14fbb4..39951d273244 100644
--- a/drivers/net/wireless/ath/ath10k/wmi-tlv.h
+++ b/drivers/net/wireless/ath/ath10k/wmi-tlv.h
@@ -1399,6 +1399,10 @@ struct wmi_tlv_phyerr_ev {
__le32 tsf_l32;
__le32 tsf_u32;
__le32 buf_len;
+ __le32 pdev_id;
+ __le32 rs_phy_err_mask0;
+ __le32 rs_phy_err_mask1;
+ __le32 rs_phy_err_mask2;
} __packed;
enum wmi_tlv_dbglog_param {
diff --git a/drivers/net/wireless/ath/ath10k/wmi.c b/drivers/net/wireless/ath/ath10k/wmi.c
index 86aedff096f6..d9365245da0a 100644
--- a/drivers/net/wireless/ath/ath10k/wmi.c
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
@@ -4076,19 +4076,20 @@ void ath10k_wmi_event_phyerr(struct ath10k *ar, struct sk_buff *skb)
left_len -= buf_len;
- switch (phy_err_code) {
- case PHY_ERROR_RADAR:
+ if ((phy_err_code == PHY_ERROR_RADAR) ||
+ (hdr_arg.phy_err_mask0 &
+ WMI_PHY_ERROR_MASK0_RADAR)) {
ath10k_wmi_event_dfs(ar, &phyerr_arg, tsf);
- break;
- case PHY_ERROR_SPECTRAL_SCAN:
+ } else if ((phy_err_code ==
+ WMI_PHY_ERROR_MASK0_SPECTRAL_SCAN) ||
+ (hdr_arg.phy_err_mask0 &
+ WMI_PHY_ERROR_MASK0_SPECTRAL_SCAN)) {
ath10k_wmi_event_spectral_scan(ar, &phyerr_arg, tsf);
- break;
- case PHY_ERROR_FALSE_RADAR_EXT:
+ } else if ((phy_err_code == PHY_ERROR_FALSE_RADAR_EXT) ||
+ (hdr_arg.phy_err_mask0 &
+ WMI_PHY_ERROR_MASK0_FALSE_RADAR_EXT)) {
ath10k_wmi_event_dfs(ar, &phyerr_arg, tsf);
ath10k_wmi_event_spectral_scan(ar, &phyerr_arg, tsf);
- break;
- default:
- break;
}
phyerr = phyerr + phyerr_arg.hdr_len + buf_len;
diff --git a/drivers/net/wireless/ath/ath10k/wmi.h b/drivers/net/wireless/ath/ath10k/wmi.h
index 9b17ef150303..44c237eec157 100644
--- a/drivers/net/wireless/ath/ath10k/wmi.h
+++ b/drivers/net/wireless/ath/ath10k/wmi.h
@@ -3165,6 +3165,10 @@ struct wmi_mgmt_rx_ext_info {
#define PHY_ERROR_10_4_RADAR_MASK 0x4
#define PHY_ERROR_10_4_SPECTRAL_SCAN_MASK 0x4000000
+#define WMI_PHY_ERROR_MASK0_RADAR BIT(2)
+#define WMI_PHY_ERROR_MASK0_FALSE_RADAR_EXT BIT(24)
+#define WMI_PHY_ERROR_MASK0_SPECTRAL_SCAN BIT(26)
+
enum phy_err_type {
PHY_ERROR_UNKNOWN,
PHY_ERROR_SPECTRAL_SCAN,
@@ -6352,6 +6356,8 @@ struct wmi_phyerr_hdr_arg {
u32 tsf_u32;
u32 buf_len;
const void *phyerrs;
+ u32 phy_err_mask0;
+ u32 phy_err_mask1;
};
struct wmi_svc_rdy_ev_arg {