qcacmn: Fix SAP DHCP ACK no TX Comp notify issue

When TX completion is released from FW, dp_tx_notify_completion()
will not be invoked, then TX DCHP ACK will miss
hdd_softap_notify_tx_compl_cbk() which then
WMI_PEER_CRIT_PROTO_HINT_ENABLED with value 0 will not send to FW.

(1) move dp_tx_notify_completion() from dp_tx_comp_process_desc_list()
to dp_tx_comp_process_tx_status(), so that both TX completion release
source FW or TQM case will call it.
(2) clear TX notify flag for intra-bss forwarding BC/MC to avoid
unnecessary TX completion notify.
(3) Set ts.status for release source FW case otherwise it will be value
0 always.

Change-Id: I2bf9900a3d16ba162a83b061f0b96e7d2f79423a
CRs-Fixed: 3178423
This commit is contained in:
Jinwei Chen
2022-04-20 07:17:09 -07:00
committed by Madan Koyyalamudi
parent e04b80efc6
commit 5f37239c73
4 changed files with 13 additions and 7 deletions

View File

@@ -4667,6 +4667,11 @@ void dp_tx_comp_process_tx_status(struct dp_soc *soc,
dp_tx_update_connectivity_stats(soc, vdev, tx_desc, ts->status);
dp_tx_update_uplink_delay(soc, vdev, ts);
/* check tx complete notification */
if (qdf_nbuf_tx_notify_comp_get(nbuf))
dp_tx_notify_completion(soc, vdev, tx_desc,
nbuf, ts->status);
/* Update per-packet stats for mesh mode */
if (qdf_unlikely(vdev->mesh_vdev) &&
!(tx_desc->flags & DP_TX_DESC_FLAG_TO_FW))
@@ -4855,7 +4860,6 @@ dp_tx_comp_process_desc_list(struct dp_soc *soc,
struct hal_tx_completion_status ts;
struct dp_txrx_peer *txrx_peer = NULL;
uint16_t peer_id = DP_INVALID_PEER;
qdf_nbuf_t netbuf;
dp_txrx_ref_handle txrx_ref_handle = NULL;
desc = comp_head;
@@ -4908,12 +4912,6 @@ dp_tx_comp_process_desc_list(struct dp_soc *soc,
dp_tx_comp_process_tx_status(soc, desc, &ts, txrx_peer,
ring_id);
netbuf = desc->nbuf;
/* check tx complete notification */
if (txrx_peer && qdf_nbuf_tx_notify_comp_get(netbuf))
dp_tx_notify_completion(soc, txrx_peer->vdev, desc,
netbuf, ts.status);
dp_tx_comp_process_desc(soc, desc, &ts, txrx_peer);
dp_tx_desc_release(desc, desc->pool_id);