ath10k: Add phyerr event changes for HL1.0

HL1.0 firmware sends phyerr_mask in the phyerr
event, which needs to be used to determine the
type of phyerr.

Add the phyerr_mask parameters for HL1.0 in the
phyerr wmi event.

CRs-Fixed: 2150566
Change-Id: Ib2d5286fbf45d41229e68d817d65714d18811a4e
Signed-off-by: Rakesh Pillai <pillair@codeaurora.org>
This commit is contained in:
Rakesh Pillai 2017-11-24 17:06:44 +05:30
parent 3d1779cb8d
commit 8be2a9ef5d
4 changed files with 25 additions and 9 deletions

View file

@ -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->buf_len = __le32_to_cpu(ev->buf_len);
arg->phyerrs = phyerrs; 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); kfree(tb);
return 0; return 0;
} }

View file

@ -1399,6 +1399,10 @@ struct wmi_tlv_phyerr_ev {
__le32 tsf_l32; __le32 tsf_l32;
__le32 tsf_u32; __le32 tsf_u32;
__le32 buf_len; __le32 buf_len;
__le32 pdev_id;
__le32 rs_phy_err_mask0;
__le32 rs_phy_err_mask1;
__le32 rs_phy_err_mask2;
} __packed; } __packed;
enum wmi_tlv_dbglog_param { enum wmi_tlv_dbglog_param {

View file

@ -4076,19 +4076,20 @@ void ath10k_wmi_event_phyerr(struct ath10k *ar, struct sk_buff *skb)
left_len -= buf_len; left_len -= buf_len;
switch (phy_err_code) { if ((phy_err_code == PHY_ERROR_RADAR) ||
case PHY_ERROR_RADAR: (hdr_arg.phy_err_mask0 &
WMI_PHY_ERROR_MASK0_RADAR)) {
ath10k_wmi_event_dfs(ar, &phyerr_arg, tsf); ath10k_wmi_event_dfs(ar, &phyerr_arg, tsf);
break; } else if ((phy_err_code ==
case PHY_ERROR_SPECTRAL_SCAN: 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); ath10k_wmi_event_spectral_scan(ar, &phyerr_arg, tsf);
break; } else if ((phy_err_code == PHY_ERROR_FALSE_RADAR_EXT) ||
case 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_dfs(ar, &phyerr_arg, tsf);
ath10k_wmi_event_spectral_scan(ar, &phyerr_arg, tsf); ath10k_wmi_event_spectral_scan(ar, &phyerr_arg, tsf);
break;
default:
break;
} }
phyerr = phyerr + phyerr_arg.hdr_len + buf_len; phyerr = phyerr + phyerr_arg.hdr_len + buf_len;

View file

@ -3116,6 +3116,10 @@ struct wmi_mgmt_rx_ext_info {
#define PHY_ERROR_10_4_RADAR_MASK 0x4 #define PHY_ERROR_10_4_RADAR_MASK 0x4
#define PHY_ERROR_10_4_SPECTRAL_SCAN_MASK 0x4000000 #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 { enum phy_err_type {
PHY_ERROR_UNKNOWN, PHY_ERROR_UNKNOWN,
PHY_ERROR_SPECTRAL_SCAN, PHY_ERROR_SPECTRAL_SCAN,
@ -6303,6 +6307,8 @@ struct wmi_phyerr_hdr_arg {
u32 tsf_u32; u32 tsf_u32;
u32 buf_len; u32 buf_len;
const void *phyerrs; const void *phyerrs;
u32 phy_err_mask0;
u32 phy_err_mask1;
}; };
struct wmi_svc_rdy_ev_arg { struct wmi_svc_rdy_ev_arg {