qcacmn: fix STA + SAP IPA de-frag issue
Currently wlan host will re-inject defrag data with RBM 6 to REO, this data buffer will go to REO-->REO2SW4-->IPA-->FW2RXDMA, fix below issue introduced by this RX buffer path. a. FW assert due to FW2RXDMA DMA address not 4 bytes aligned. b. host skb double allocation due to qdf_nbuf_linearize() for frag skb. c. Invalid RBM 6 for fragment RX due to RX buffer resue. Change-Id: I36d831fc14b6b9aa0cea32682823de348f7eecd3 CRs-Fixed: 2591453
This commit is contained in:
@@ -1026,13 +1026,23 @@ static QDF_STATUS dp_rx_defrag_reo_reinject(struct dp_peer *peer,
|
||||
peer->rx_tid[tid].dst_ring_desc;
|
||||
hal_ring_handle_t hal_srng = soc->reo_reinject_ring.hal_srng;
|
||||
struct dp_rx_desc *rx_desc = peer->rx_tid[tid].head_frag_desc;
|
||||
struct dp_rx_reorder_array_elem *rx_reorder_array_elem =
|
||||
peer->rx_tid[tid].array;
|
||||
qdf_nbuf_t nbuf_head;
|
||||
|
||||
head = dp_ipa_handle_rx_reo_reinject(soc, head);
|
||||
if (qdf_unlikely(!head)) {
|
||||
nbuf_head = dp_ipa_handle_rx_reo_reinject(soc, head);
|
||||
if (qdf_unlikely(!nbuf_head)) {
|
||||
dp_err_rl("IPA RX REO reinject failed");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
/* update new allocated skb in case IPA is enabled */
|
||||
if (nbuf_head != head) {
|
||||
head = nbuf_head;
|
||||
rx_desc->nbuf = head;
|
||||
rx_reorder_array_elem->head = head;
|
||||
}
|
||||
|
||||
ent_ring_desc = hal_srng_src_get_next(soc->hal_soc, hal_srng);
|
||||
if (!ent_ring_desc) {
|
||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
|
||||
|
Reference in New Issue
Block a user