qcacmn: introduce simple nbuf_free API in RX path
simple Alloc is being used in RX path which avoids certain debug logic. during free of nbuf we should avoid this debug logic else it will report it as double free, this will be triggered only when debug is enabled Change-Id: Iadb40071fb733cc4de3291784df5075d5a099a8e
这个提交包含在:
@@ -260,23 +260,8 @@ more_data:
|
||||
if (QDF_IS_STATUS_ERROR(status)) {
|
||||
if (qdf_unlikely(rx_desc && rx_desc->nbuf)) {
|
||||
qdf_assert_always(!rx_desc->unmapped);
|
||||
dp_ipa_reo_ctx_buf_mapping_lock(
|
||||
soc,
|
||||
reo_ring_num);
|
||||
dp_ipa_handle_rx_buf_smmu_mapping(
|
||||
soc,
|
||||
rx_desc->nbuf,
|
||||
RX_DATA_BUFFER_SIZE,
|
||||
false);
|
||||
qdf_nbuf_unmap_nbytes_single(
|
||||
soc->osdev,
|
||||
rx_desc->nbuf,
|
||||
QDF_DMA_FROM_DEVICE,
|
||||
RX_DATA_BUFFER_SIZE);
|
||||
dp_rx_nbuf_unmap(soc, rx_desc, reo_ring_num);
|
||||
rx_desc->unmapped = 1;
|
||||
dp_ipa_reo_ctx_buf_mapping_unlock(
|
||||
soc,
|
||||
reo_ring_num);
|
||||
dp_rx_buffer_pool_nbuf_free(soc, rx_desc->nbuf,
|
||||
rx_desc->pool_id);
|
||||
dp_rx_add_to_free_desc_list(
|
||||
@@ -436,15 +421,8 @@ more_data:
|
||||
* in case double skb unmap happened.
|
||||
*/
|
||||
rx_desc_pool = &soc->rx_desc_buf[rx_desc->pool_id];
|
||||
dp_ipa_reo_ctx_buf_mapping_lock(soc, reo_ring_num);
|
||||
dp_ipa_handle_rx_buf_smmu_mapping(soc, rx_desc->nbuf,
|
||||
rx_desc_pool->buf_size,
|
||||
false);
|
||||
qdf_nbuf_unmap_nbytes_single(soc->osdev, rx_desc->nbuf,
|
||||
QDF_DMA_FROM_DEVICE,
|
||||
rx_desc_pool->buf_size);
|
||||
dp_rx_nbuf_unmap(soc, rx_desc, reo_ring_num);
|
||||
rx_desc->unmapped = 1;
|
||||
dp_ipa_reo_ctx_buf_mapping_unlock(soc, reo_ring_num);
|
||||
DP_RX_PROCESS_NBUF(soc, nbuf_head, nbuf_tail, ebuf_head,
|
||||
ebuf_tail, rx_desc);
|
||||
/*
|
||||
@@ -559,7 +537,7 @@ done:
|
||||
}
|
||||
|
||||
if (qdf_unlikely(!vdev)) {
|
||||
qdf_nbuf_free(nbuf);
|
||||
dp_rx_nbuf_free(nbuf);
|
||||
nbuf = next;
|
||||
DP_STATS_INC(soc, rx.err.invalid_vdev, 1);
|
||||
continue;
|
||||
@@ -596,7 +574,7 @@ done:
|
||||
hal_rx_dump_pkt_tlvs(hal_soc, rx_tlv_hdr,
|
||||
QDF_TRACE_LEVEL_INFO);
|
||||
tid_stats->fail_cnt[MSDU_DONE_FAILURE]++;
|
||||
qdf_nbuf_free(nbuf);
|
||||
dp_rx_nbuf_free(nbuf);
|
||||
qdf_assert(0);
|
||||
nbuf = next;
|
||||
continue;
|
||||
@@ -655,7 +633,7 @@ done:
|
||||
DP_STATS_INC(vdev->pdev, rx_raw_pkts, 1);
|
||||
DP_STATS_INC_PKT(peer, rx.raw, 1, msdu_len);
|
||||
} else {
|
||||
qdf_nbuf_free(nbuf);
|
||||
dp_rx_nbuf_free(nbuf);
|
||||
DP_STATS_INC(soc, rx.err.scatter_msdu, 1);
|
||||
dp_info_rl("scatter msdu len %d, dropped",
|
||||
msdu_len);
|
||||
@@ -678,7 +656,7 @@ done:
|
||||
if (qdf_unlikely(vdev->multipass_en)) {
|
||||
if (dp_rx_multipass_process(peer, nbuf, tid) == false) {
|
||||
DP_STATS_INC(peer, rx.multipass_rx_pkt_drop, 1);
|
||||
qdf_nbuf_free(nbuf);
|
||||
dp_rx_nbuf_free(nbuf);
|
||||
nbuf = next;
|
||||
continue;
|
||||
}
|
||||
@@ -689,7 +667,7 @@ done:
|
||||
DP_STATS_INC(peer, rx.policy_check_drop, 1);
|
||||
tid_stats->fail_cnt[POLICY_CHECK_DROP]++;
|
||||
/* Drop & free packet */
|
||||
qdf_nbuf_free(nbuf);
|
||||
dp_rx_nbuf_free(nbuf);
|
||||
/* Statistics */
|
||||
nbuf = next;
|
||||
continue;
|
||||
@@ -702,7 +680,7 @@ done:
|
||||
false))) {
|
||||
tid_stats->fail_cnt[NAWDS_MCAST_DROP]++;
|
||||
DP_STATS_INC(peer, rx.nawds_mcast_drop, 1);
|
||||
qdf_nbuf_free(nbuf);
|
||||
dp_rx_nbuf_free(nbuf);
|
||||
nbuf = next;
|
||||
continue;
|
||||
}
|
||||
@@ -718,7 +696,7 @@ done:
|
||||
if (!is_eapol) {
|
||||
DP_STATS_INC(peer,
|
||||
rx.peer_unauth_rx_pkt_drop, 1);
|
||||
qdf_nbuf_free(nbuf);
|
||||
dp_rx_nbuf_free(nbuf);
|
||||
nbuf = next;
|
||||
continue;
|
||||
}
|
||||
@@ -745,7 +723,7 @@ done:
|
||||
DP_STATS_INC(vdev->pdev, dropped.mesh_filter,
|
||||
1);
|
||||
|
||||
qdf_nbuf_free(nbuf);
|
||||
dp_rx_nbuf_free(nbuf);
|
||||
nbuf = next;
|
||||
continue;
|
||||
}
|
||||
|
在新工单中引用
屏蔽一个用户