|
@@ -2198,6 +2198,16 @@ dp_check_mgmt_ctrl_ppdu(struct dp_pdev *pdev,
|
|
subtype = 0;
|
|
subtype = 0;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ switch (ppdu_desc->htt_frame_type) {
|
|
|
|
+ case HTT_STATS_FTYPE_TIDQ_DATA_SU:
|
|
|
|
+ case HTT_STATS_FTYPE_TIDQ_DATA_MU:
|
|
|
|
+ is_sgen_pkt = false;
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ is_sgen_pkt = true;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+
|
|
retries_q = &pdev->tx_capture.retries_ctl_mgmt_q[type][subtype];
|
|
retries_q = &pdev->tx_capture.retries_ctl_mgmt_q[type][subtype];
|
|
get_mgmt_pkt_from_queue:
|
|
get_mgmt_pkt_from_queue:
|
|
qdf_spin_lock_bh(
|
|
qdf_spin_lock_bh(
|
|
@@ -2256,6 +2266,11 @@ get_mgmt_pkt_from_queue:
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /*
|
|
|
|
+ * only for the packets send over the air are handled
|
|
|
|
+ * packets drop by firmware is not handled in this
|
|
|
|
+ * feature
|
|
|
|
+ */
|
|
if (ppdu_desc->user[0].completion_status ==
|
|
if (ppdu_desc->user[0].completion_status ==
|
|
HTT_PPDU_STATS_USER_STATUS_FILTERED) {
|
|
HTT_PPDU_STATS_USER_STATUS_FILTERED) {
|
|
qdf_nbuf_free(nbuf_ppdu_desc);
|
|
qdf_nbuf_free(nbuf_ppdu_desc);
|
|
@@ -2286,6 +2301,11 @@ get_mgmt_pkt_from_queue:
|
|
uint16_t frame_ctrl_le;
|
|
uint16_t frame_ctrl_le;
|
|
struct ieee80211_frame *wh;
|
|
struct ieee80211_frame *wh;
|
|
|
|
|
|
|
|
+ /*
|
|
|
|
+ * only for the packets send over the air are handled
|
|
|
|
+ * packets drop by firmware is not handled in this
|
|
|
|
+ * feature
|
|
|
|
+ */
|
|
if (ppdu_desc->user[0].completion_status ==
|
|
if (ppdu_desc->user[0].completion_status ==
|
|
HTT_PPDU_STATS_USER_STATUS_FILTERED) {
|
|
HTT_PPDU_STATS_USER_STATUS_FILTERED) {
|
|
qdf_nbuf_free(nbuf_ppdu_desc);
|
|
qdf_nbuf_free(nbuf_ppdu_desc);
|
|
@@ -2372,10 +2392,32 @@ get_mgmt_pkt_from_queue:
|
|
&tx_capture_info,
|
|
&tx_capture_info,
|
|
mgmt_ctl_nbuf, true);
|
|
mgmt_ctl_nbuf, true);
|
|
}
|
|
}
|
|
|
|
+ } else if (!is_sgen_pkt) {
|
|
|
|
+ /*
|
|
|
|
+ * only for the packets send over the air are handled
|
|
|
|
+ * packets drop by firmware is not handled in this
|
|
|
|
+ * feature
|
|
|
|
+ */
|
|
|
|
+ if (ppdu_desc->user[0].completion_status ==
|
|
|
|
+ HTT_PPDU_STATS_USER_STATUS_FILTERED) {
|
|
|
|
+ qdf_nbuf_free(nbuf_ppdu_desc);
|
|
|
|
+ status = 0;
|
|
|
|
+ goto free_ppdu_desc;
|
|
|
|
+ }
|
|
|
|
+ /*
|
|
|
|
+ * add the ppdu_desc into retry queue
|
|
|
|
+ */
|
|
|
|
+ qdf_nbuf_queue_add(retries_q, nbuf_ppdu_desc);
|
|
|
|
+ status = 0;
|
|
} else if ((ppdu_desc->frame_ctrl &
|
|
} else if ((ppdu_desc->frame_ctrl &
|
|
IEEE80211_FC0_TYPE_MASK) ==
|
|
IEEE80211_FC0_TYPE_MASK) ==
|
|
IEEE80211_FC0_TYPE_CTL) {
|
|
IEEE80211_FC0_TYPE_CTL) {
|
|
|
|
|
|
|
|
+ /*
|
|
|
|
+ * only for the packets send over the air are handled
|
|
|
|
+ * packets drop by firmware is not handled in this
|
|
|
|
+ * feature
|
|
|
|
+ */
|
|
if (ppdu_desc->user[0].completion_status ==
|
|
if (ppdu_desc->user[0].completion_status ==
|
|
HTT_PPDU_STATS_USER_STATUS_FILTERED) {
|
|
HTT_PPDU_STATS_USER_STATUS_FILTERED) {
|
|
qdf_nbuf_free(nbuf_ppdu_desc);
|
|
qdf_nbuf_free(nbuf_ppdu_desc);
|