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:

committed by
Madan Koyyalamudi

parent
e04b80efc6
commit
5f37239c73
@@ -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);
|
||||
|
Reference in New Issue
Block a user