ath11k: pktlog: fix sending/using the pdev id
authorAnilkumar Kolli <akolli@codeaurora.org>
Wed, 27 Nov 2019 14:08:50 +0000 (14:08 +0000)
committerKalle Valo <kvalo@codeaurora.org>
Fri, 29 Nov 2019 07:47:16 +0000 (09:47 +0200)
Fixes sending the pdev id(0,1,2 for mac0, mac1, mac2)
to FW in wmi cmd pktlog enable/disable.

Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/ath/ath11k/dp_rx.c
drivers/net/wireless/ath/ath11k/wmi.c

index acad746..67efa24 100644 (file)
@@ -1265,7 +1265,6 @@ static void ath11k_htt_pktlog(struct ath11k_base *ab, struct sk_buff *skb)
        u8 pdev_id;
 
        len = FIELD_GET(HTT_T2H_PPDU_STATS_INFO_PAYLOAD_SIZE, data->hdr);
-
        if (len > ATH11K_HTT_PKTLOG_MAX_SIZE) {
                ath11k_warn(ab, "htt pktlog buffer size %d, expected < %d\n",
                            len,
@@ -1274,8 +1273,11 @@ static void ath11k_htt_pktlog(struct ath11k_base *ab, struct sk_buff *skb)
        }
 
        pdev_id = FIELD_GET(HTT_T2H_PPDU_STATS_INFO_PDEV_ID, data->hdr);
-       pdev_id = DP_HW2SW_MACID(pdev_id);
-       ar = ab->pdevs[pdev_id].ar;
+       ar = ath11k_mac_get_ar_by_pdev_id(ab, pdev_id);
+       if (!ar) {
+               ath11k_warn(ab, "invalid pdev id %d on htt pktlog\n", pdev_id);
+               return;
+       }
 
        trace_ath11k_htt_pktlog(ar, data->payload, len);
 }
index aae6e76..f349bf2 100644 (file)
@@ -2321,7 +2321,7 @@ int ath11k_wmi_pdev_peer_pktlog_filter(struct ath11k *ar, u8 *addr, u8 enable)
        cmd->tlv_header = FIELD_PREP(WMI_TLV_TAG, WMI_TAG_PDEV_PEER_PKTLOG_FILTER_CMD) |
                          FIELD_PREP(WMI_TLV_LEN, sizeof(*cmd) - TLV_HDR_SIZE);
 
-       cmd->pdev_id = ar->pdev->pdev_id;
+       cmd->pdev_id = DP_HW2SW_MACID(ar->pdev->pdev_id);
        cmd->num_mac = 1;
        cmd->enable = enable;
 
@@ -2419,7 +2419,7 @@ int ath11k_wmi_pdev_pktlog_enable(struct ath11k *ar, u32 pktlog_filter)
        cmd->tlv_header = FIELD_PREP(WMI_TLV_TAG, WMI_TAG_PDEV_PKTLOG_ENABLE_CMD) |
                          FIELD_PREP(WMI_TLV_LEN, sizeof(*cmd) - TLV_HDR_SIZE);
 
-       cmd->pdev_id = ar->pdev->pdev_id;
+       cmd->pdev_id = DP_HW2SW_MACID(ar->pdev->pdev_id);
        cmd->evlist = pktlog_filter;
        cmd->enable = ATH11K_WMI_PKTLOG_ENABLE_FORCE;
 
@@ -2449,7 +2449,7 @@ int ath11k_wmi_pdev_pktlog_disable(struct ath11k *ar)
        cmd->tlv_header = FIELD_PREP(WMI_TLV_TAG, WMI_TAG_PDEV_PKTLOG_DISABLE_CMD) |
                          FIELD_PREP(WMI_TLV_LEN, sizeof(*cmd) - TLV_HDR_SIZE);
 
-       cmd->pdev_id = ar->pdev->pdev_id;
+       cmd->pdev_id = DP_HW2SW_MACID(ar->pdev->pdev_id);
 
        ret = ath11k_wmi_cmd_send(wmi, skb,
                                  WMI_PDEV_PKTLOG_DISABLE_CMDID);