qcacmn: Fix issue on block ACK on response to BAR

Fix the issue on block ACK on response to BAR frame.
Parse BAR frame received from monitor destination ring and
generate block ack frame from BAR frame and previous block
ACK frame.

Change-Id: Ifc242b3850630aa25827b003a1e2078a9228358a
This commit is contained in:
Kai Chen
2020-02-10 12:54:15 -08:00
committed by nshrivas
parent 928035a1a4
commit b1a940fa76
2 changed files with 44 additions and 3 deletions

View File

@@ -37,11 +37,25 @@ dp_handle_tx_capture(struct dp_soc *soc, struct dp_pdev *pdev,
{
struct hal_rx_ppdu_info *ppdu_info = &pdev->ppdu_info;
if (pdev->tx_capture_enabled != CDP_TX_ENH_CAPTURE_DISABLED &&
ppdu_info->sw_frame_group_id == HAL_MPDU_SW_FRAME_GROUP_CTRL_NDPA)
if (pdev->tx_capture_enabled
== CDP_TX_ENH_CAPTURE_DISABLED)
return;
if ((ppdu_info->sw_frame_group_id ==
HAL_MPDU_SW_FRAME_GROUP_CTRL_NDPA) ||
(ppdu_info->sw_frame_group_id ==
HAL_MPDU_SW_FRAME_GROUP_CTRL_BAR))
dp_handle_tx_capture_from_dest(soc, pdev, mon_mpdu);
}
static void
dp_tx_capture_get_user_id(struct dp_pdev *dp_pdev, void *rx_desc_tlv)
{
if (dp_pdev->tx_capture_enabled
!= CDP_TX_ENH_CAPTURE_DISABLED)
dp_pdev->ppdu_info.rx_info.user_id =
HAL_RX_HW_DESC_MPDU_USER_ID(rx_desc_tlv);
}
#else
static inline void
dp_handle_tx_capture(struct dp_soc *soc, struct dp_pdev *pdev,
@@ -49,6 +63,10 @@ dp_handle_tx_capture(struct dp_soc *soc, struct dp_pdev *pdev,
{
}
static void
dp_tx_capture_get_user_id(struct dp_pdev *dp_pdev, void *rx_desc_tlv)
{
}
#endif
@@ -299,6 +317,10 @@ dp_rx_mon_mpdu_pop(struct dp_soc *soc, uint32_t mac_id,
*ppdu_id = msdu_ppdu_id;
return rx_bufs_used;
}
dp_tx_capture_get_user_id(dp_pdev,
rx_desc_tlv);
dp_pdev->mon_last_linkdesc_paddr =
buf_info.paddr;
}