qca-wifi: Fix non-QOS Tx frame capture
Fix for missing non-QOS frames in Tx capture. Change-Id: I8f76130b894d72701e675f36caadb5b555bc2ed6
This commit is contained in:
@@ -667,7 +667,8 @@ static uint32_t dp_tx_update_80211_hdr(struct dp_pdev *pdev,
|
||||
}
|
||||
|
||||
mpdu_buf_len = sizeof(struct ieee80211_frame) + LLC_SNAP_HDR_LEN;
|
||||
mpdu_buf_len += sizeof(struct ieee80211_qoscntl);
|
||||
if (qdf_likely(ppdu_desc->user[0].tid != DP_NON_QOS_TID))
|
||||
mpdu_buf_len += sizeof(struct ieee80211_qoscntl);
|
||||
|
||||
nbuf->protocol = qdf_htons(ETH_P_802_2);
|
||||
|
||||
@@ -684,9 +685,11 @@ static uint32_t dp_tx_update_80211_hdr(struct dp_pdev *pdev,
|
||||
ptr_hdr = ptr_hdr + (sizeof(struct ieee80211_frame));
|
||||
|
||||
/* update qoscntl header */
|
||||
qdf_mem_copy(ptr_hdr, ptr_qoscntl, sizeof(struct ieee80211_qoscntl));
|
||||
|
||||
ptr_hdr = ptr_hdr + sizeof(struct ieee80211_qoscntl);
|
||||
if (qdf_likely(ppdu_desc->user[0].tid != DP_NON_QOS_TID)) {
|
||||
qdf_mem_copy(ptr_hdr, ptr_qoscntl,
|
||||
sizeof(struct ieee80211_qoscntl));
|
||||
ptr_hdr = ptr_hdr + sizeof(struct ieee80211_qoscntl);
|
||||
}
|
||||
|
||||
/* update LLC */
|
||||
*ptr_hdr = LLC_SNAP_LSAP;
|
||||
@@ -1340,7 +1343,13 @@ free_ppdu_desc:
|
||||
/* missed seq number */
|
||||
seq_no = ppdu_desc->user[0].start_seq + i;
|
||||
|
||||
if (!(ppdu_desc->user[0].failed_bitmap[k] & 1 << i)) {
|
||||
/* Fill failed MPDUs in AMPDU if they're available in
|
||||
* subsequent PPDUs in current burst schedule. This
|
||||
* is not applicable for non-QoS TIDs (no AMPDUs)
|
||||
*/
|
||||
if (qdf_likely(ppdu_desc->user[0].tid !=
|
||||
DP_NON_QOS_TID) &&
|
||||
!(ppdu_desc->user[0].failed_bitmap[k] & (1 << i))) {
|
||||
QDF_TRACE(QDF_MODULE_ID_TX_CAPTURE,
|
||||
QDF_TRACE_LEVEL_ERROR,
|
||||
"%s: finding missing seq no: %d in other ppdu list cnt[%d]",
|
||||
@@ -1619,9 +1628,18 @@ void dp_tx_ppdu_stats_process(void *context)
|
||||
qdf_nbuf_free(nbuf);
|
||||
continue;
|
||||
}
|
||||
dequeue_msdu_again:
|
||||
|
||||
tid = ppdu_desc->user[0].tid;
|
||||
/* Non-QOS frames are being indicated with TID 0
|
||||
* in WBM completion path, an hence we should
|
||||
* TID 0 to reap MSDUs from completion path
|
||||
*/
|
||||
if (qdf_unlikely(ppdu_desc->user[0].tid ==
|
||||
DP_NON_QOS_TID))
|
||||
tid = 0;
|
||||
else
|
||||
tid = ppdu_desc->user[0].tid;
|
||||
|
||||
dequeue_msdu_again:
|
||||
num_msdu = ppdu_desc->user[0].num_msdu;
|
||||
start_tsf = ppdu_desc->ppdu_start_timestamp;
|
||||
end_tsf = ppdu_desc->ppdu_end_timestamp;
|
||||
|
Reference in New Issue
Block a user