qcacmn: fix TX packet logging issue

Packet logging buffer is only 2048 bytes, if copy non-linear
TX packet with skb->len (like TSO) which is likely > 2048,
this will lead to skb panic as packet logging buffer can not
accommodate it.

Only support TX packet logging with single linear buffer.

Change-Id: I1d15f9ab80fcc1720fdb3f7fe8c89e7f5e3c0a79
CRs-Fixed: 3242090
This commit is contained in:
Jinwei Chen
2022-07-13 06:41:53 -07:00
committed by Madan Koyyalamudi
parent 38b8236ddc
commit 694a2eb657
2 changed files with 6 additions and 2 deletions

View File

@@ -3775,6 +3775,7 @@ dp_get_peer_telemetry_stats(struct cdp_soc_t *soc_hdl, uint8_t *addr,
* dp_tx_send_pktlog() - send tx packet log
* @soc: soc handle
* @pdev: pdev handle
* @tx_desc: TX software descriptor
* @nbuf: nbuf
* @status: status of tx packet
*
@@ -3785,11 +3786,13 @@ dp_get_peer_telemetry_stats(struct cdp_soc_t *soc_hdl, uint8_t *addr,
*/
static inline
void dp_tx_send_pktlog(struct dp_soc *soc, struct dp_pdev *pdev,
struct dp_tx_desc_s *tx_desc,
qdf_nbuf_t nbuf, enum qdf_dp_tx_rx_status status)
{
ol_txrx_pktdump_cb packetdump_cb = pdev->dp_tx_packetdump_cb;
if (qdf_unlikely(packetdump_cb)) {
if (qdf_unlikely(packetdump_cb) &&
dp_tx_frm_std == tx_desc->frm_type) {
packetdump_cb((ol_txrx_soc_handle)soc, pdev->pdev_id,
QDF_NBUF_CB_TX_VDEV_CTX(nbuf),
nbuf, status, QDF_TX_DATA_PKT);
@@ -3823,6 +3826,7 @@ void dp_rx_send_pktlog(struct dp_soc *soc, struct dp_pdev *pdev,
#else
static inline
void dp_tx_send_pktlog(struct dp_soc *soc, struct dp_pdev *pdev,
struct dp_tx_desc_s *tx_desc,
qdf_nbuf_t nbuf, enum qdf_dp_tx_rx_status status)
{
}

View File

@@ -4758,7 +4758,7 @@ void dp_tx_comp_process_tx_status(struct dp_soc *soc,
dp_tx_update_peer_delay_stats(txrx_peer, tx_desc, ts->tid, ring_id);
dp_tx_update_peer_sawf_stats(soc, vdev, txrx_peer, tx_desc,
ts, ts->tid);
dp_tx_send_pktlog(soc, vdev->pdev, nbuf, dp_status);
dp_tx_send_pktlog(soc, vdev->pdev, tx_desc, nbuf, dp_status);
#ifdef QCA_SUPPORT_RDK_STATS
if (soc->peerstats_enabled)