qcacmn: Use converged packetdump API to avoid corrupting dp_pdev

Packetdump invokes legacy data path API directly without
considering underlying HW:
1. ol_register_packetdump_callback
2. ol_deregister_packetdump_callback
Global pointer pdev_txrx_ctx will be casted to struct ol_txrx_pdev_t
always even Lithium (use struct dp_pdev) underlying, that leads to
struct dp_pdev be overwritten unexpectly.

Wrap with cdp API to avoid.

About packet-dump feature:
It is one debug feature/requirement for Android N, to track/dump
TX/RX data/mgmt. packets during connection. This enhancement can help
in debugging connection related issues.
This change only touches its data packet callback register API.

Change-Id: Ie63fd2dfa909f89741ccf0c5131f6d3305093a3e
CRs-Fixed: 2366334
このコミットが含まれているのは:
Lin Bai
2018-12-13 16:13:24 +08:00
committed by nshrivas
コミット 324f49155b
3個のファイルの変更59行の追加1行の削除

ファイルの表示

@@ -570,4 +570,51 @@ static inline int cdp_get_num_rx_contexts(ol_txrx_soc_handle soc)
return 0;
}
/**
* cdp_register_packetdump_cb() - API to register packetdump callback
*
* Register TX/RX callback for data packets, during connection. And per packet
* stats will be passed to user-space by @tx_cb/@rx_cb.
*
* @soc: soc handle
* @tx_cb: tx packet callback
* @rx_cb: rx packet callback
*
* Return: void
*/
static inline void cdp_register_packetdump_cb(ol_txrx_soc_handle soc,
ol_txrx_pktdump_cb tx_cb,
ol_txrx_pktdump_cb rx_cb)
{
if (!soc || !soc->ops || !soc->ops->misc_ops) {
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_FATAL,
"%s invalid instance", __func__);
return;
}
if (soc->ops->misc_ops->register_pktdump_cb)
return soc->ops->misc_ops->register_pktdump_cb(tx_cb, rx_cb);
}
/**
* cdp_deregister_packetdump_cb() - API to unregister packetdump callback
*
* Deregister callback for TX/RX data packets.
*
* @soc: soc handle
*
* Return: void
*/
static inline void cdp_deregister_packetdump_cb(ol_txrx_soc_handle soc)
{
if (!soc || !soc->ops || !soc->ops->misc_ops) {
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_FATAL,
"%s invalid instance", __func__);
return;
}
if (soc->ops->misc_ops->unregister_pktdump_cb)
return soc->ops->misc_ops->unregister_pktdump_cb();
}
#endif /* _CDP_TXRX_MISC_H_ */