qcacmn: handle IPA buffer smmu map/unmap correctly
Handle ipa buffer smmu map/unmap with below changes, (1) Do IPA smmu unmap for RX buffer received from REO exception/WBM RX release/REO DST/RXDMA DST ring. (2) Align IPA smmu map length to qdf_nbuf_map_nytes_single() with fixed length. Change-Id: I1ed46b31ed31f5b7e4e2484d519bc85d35ce1e69 CRs-Fixed: 2728644
This commit is contained in:
@@ -93,13 +93,14 @@ static void dp_ipa_reo_remap_history_add(uint32_t ix0_val, uint32_t ix2_val,
|
|||||||
|
|
||||||
static QDF_STATUS __dp_ipa_handle_buf_smmu_mapping(struct dp_soc *soc,
|
static QDF_STATUS __dp_ipa_handle_buf_smmu_mapping(struct dp_soc *soc,
|
||||||
qdf_nbuf_t nbuf,
|
qdf_nbuf_t nbuf,
|
||||||
|
uint32_t size,
|
||||||
bool create)
|
bool create)
|
||||||
{
|
{
|
||||||
qdf_mem_info_t mem_map_table = {0};
|
qdf_mem_info_t mem_map_table = {0};
|
||||||
|
|
||||||
qdf_update_mem_map_table(soc->osdev, &mem_map_table,
|
qdf_update_mem_map_table(soc->osdev, &mem_map_table,
|
||||||
qdf_nbuf_get_frag_paddr(nbuf, 0),
|
qdf_nbuf_get_frag_paddr(nbuf, 0),
|
||||||
skb_end_pointer(nbuf) - nbuf->data);
|
size);
|
||||||
|
|
||||||
if (create)
|
if (create)
|
||||||
qdf_ipa_wdi_create_smmu_mapping(1, &mem_map_table);
|
qdf_ipa_wdi_create_smmu_mapping(1, &mem_map_table);
|
||||||
@@ -111,6 +112,7 @@ static QDF_STATUS __dp_ipa_handle_buf_smmu_mapping(struct dp_soc *soc,
|
|||||||
|
|
||||||
QDF_STATUS dp_ipa_handle_rx_buf_smmu_mapping(struct dp_soc *soc,
|
QDF_STATUS dp_ipa_handle_rx_buf_smmu_mapping(struct dp_soc *soc,
|
||||||
qdf_nbuf_t nbuf,
|
qdf_nbuf_t nbuf,
|
||||||
|
uint32_t size,
|
||||||
bool create)
|
bool create)
|
||||||
{
|
{
|
||||||
struct dp_pdev *pdev;
|
struct dp_pdev *pdev;
|
||||||
@@ -129,7 +131,7 @@ QDF_STATUS dp_ipa_handle_rx_buf_smmu_mapping(struct dp_soc *soc,
|
|||||||
if (!qdf_atomic_read(&soc->ipa_pipes_enabled))
|
if (!qdf_atomic_read(&soc->ipa_pipes_enabled))
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
|
|
||||||
return __dp_ipa_handle_buf_smmu_mapping(soc, nbuf, create);
|
return __dp_ipa_handle_buf_smmu_mapping(soc, nbuf, size, create);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef RX_DESC_MULTI_PAGE_ALLOC
|
#ifdef RX_DESC_MULTI_PAGE_ALLOC
|
||||||
@@ -165,7 +167,8 @@ static QDF_STATUS dp_ipa_handle_rx_buf_pool_smmu_mapping(struct dp_soc *soc,
|
|||||||
continue;
|
continue;
|
||||||
nbuf = rx_desc->nbuf;
|
nbuf = rx_desc->nbuf;
|
||||||
|
|
||||||
__dp_ipa_handle_buf_smmu_mapping(soc, nbuf, create);
|
__dp_ipa_handle_buf_smmu_mapping(soc, nbuf,
|
||||||
|
rx_pool->buf_size, create);
|
||||||
}
|
}
|
||||||
qdf_spin_unlock_bh(&rx_pool->lock);
|
qdf_spin_unlock_bh(&rx_pool->lock);
|
||||||
|
|
||||||
@@ -195,7 +198,8 @@ static QDF_STATUS dp_ipa_handle_rx_buf_pool_smmu_mapping(struct dp_soc *soc,
|
|||||||
|
|
||||||
nbuf = rx_pool->array[i].rx_desc.nbuf;
|
nbuf = rx_pool->array[i].rx_desc.nbuf;
|
||||||
|
|
||||||
__dp_ipa_handle_buf_smmu_mapping(soc, nbuf, create);
|
__dp_ipa_handle_buf_smmu_mapping(soc, nbuf,
|
||||||
|
rx_pool->buf_size, create);
|
||||||
}
|
}
|
||||||
qdf_spin_unlock_bh(&rx_pool->lock);
|
qdf_spin_unlock_bh(&rx_pool->lock);
|
||||||
|
|
||||||
@@ -225,7 +229,10 @@ static void dp_tx_ipa_uc_detach(struct dp_soc *soc, struct dp_pdev *pdev)
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (qdf_mem_smmu_s1_enabled(soc->osdev))
|
if (qdf_mem_smmu_s1_enabled(soc->osdev))
|
||||||
__dp_ipa_handle_buf_smmu_mapping(soc, nbuf, false);
|
__dp_ipa_handle_buf_smmu_mapping(
|
||||||
|
soc, nbuf,
|
||||||
|
skb_end_pointer(nbuf) - nbuf->data,
|
||||||
|
false);
|
||||||
|
|
||||||
qdf_nbuf_unmap_single(soc->osdev, nbuf, QDF_DMA_BIDIRECTIONAL);
|
qdf_nbuf_unmap_single(soc->osdev, nbuf, QDF_DMA_BIDIRECTIONAL);
|
||||||
qdf_nbuf_free(nbuf);
|
qdf_nbuf_free(nbuf);
|
||||||
@@ -372,7 +379,10 @@ static int dp_tx_ipa_uc_attach(struct dp_soc *soc, struct dp_pdev *pdev)
|
|||||||
= (void *)nbuf;
|
= (void *)nbuf;
|
||||||
|
|
||||||
if (qdf_mem_smmu_s1_enabled(soc->osdev))
|
if (qdf_mem_smmu_s1_enabled(soc->osdev))
|
||||||
__dp_ipa_handle_buf_smmu_mapping(soc, nbuf, true);
|
__dp_ipa_handle_buf_smmu_mapping(
|
||||||
|
soc, nbuf,
|
||||||
|
skb_end_pointer(nbuf) - nbuf->data,
|
||||||
|
true);
|
||||||
}
|
}
|
||||||
|
|
||||||
hal_srng_access_end_unlocked(soc->hal_soc,
|
hal_srng_access_end_unlocked(soc->hal_soc,
|
||||||
|
@@ -239,6 +239,7 @@ int dp_ipa_ring_resource_setup(struct dp_soc *soc,
|
|||||||
struct dp_pdev *pdev);
|
struct dp_pdev *pdev);
|
||||||
QDF_STATUS dp_ipa_handle_rx_buf_smmu_mapping(struct dp_soc *soc,
|
QDF_STATUS dp_ipa_handle_rx_buf_smmu_mapping(struct dp_soc *soc,
|
||||||
qdf_nbuf_t nbuf,
|
qdf_nbuf_t nbuf,
|
||||||
|
uint32_t size,
|
||||||
bool create);
|
bool create);
|
||||||
|
|
||||||
bool dp_reo_remap_config(struct dp_soc *soc, uint32_t *remap1,
|
bool dp_reo_remap_config(struct dp_soc *soc, uint32_t *remap1,
|
||||||
@@ -266,6 +267,7 @@ static inline int dp_ipa_ring_resource_setup(struct dp_soc *soc,
|
|||||||
|
|
||||||
static inline QDF_STATUS dp_ipa_handle_rx_buf_smmu_mapping(struct dp_soc *soc,
|
static inline QDF_STATUS dp_ipa_handle_rx_buf_smmu_mapping(struct dp_soc *soc,
|
||||||
qdf_nbuf_t nbuf,
|
qdf_nbuf_t nbuf,
|
||||||
|
uint32_t size,
|
||||||
bool create)
|
bool create)
|
||||||
{
|
{
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
|
@@ -261,7 +261,8 @@ QDF_STATUS __dp_rx_buffers_replenish(struct dp_soc *dp_soc, uint32_t mac_id,
|
|||||||
|
|
||||||
paddr = qdf_nbuf_get_frag_paddr(rx_netbuf, 0);
|
paddr = qdf_nbuf_get_frag_paddr(rx_netbuf, 0);
|
||||||
|
|
||||||
dp_ipa_handle_rx_buf_smmu_mapping(dp_soc, rx_netbuf, true);
|
dp_ipa_handle_rx_buf_smmu_mapping(dp_soc, rx_netbuf,
|
||||||
|
buf_size, true);
|
||||||
/*
|
/*
|
||||||
* check if the physical address of nbuf->data is
|
* check if the physical address of nbuf->data is
|
||||||
* less then 0x50000000 then free the nbuf and try
|
* less then 0x50000000 then free the nbuf and try
|
||||||
@@ -2076,6 +2077,11 @@ more_data:
|
|||||||
if (QDF_IS_STATUS_ERROR(status)) {
|
if (QDF_IS_STATUS_ERROR(status)) {
|
||||||
if (qdf_unlikely(rx_desc && rx_desc->nbuf)) {
|
if (qdf_unlikely(rx_desc && rx_desc->nbuf)) {
|
||||||
qdf_assert_always(rx_desc->unmapped);
|
qdf_assert_always(rx_desc->unmapped);
|
||||||
|
dp_ipa_handle_rx_buf_smmu_mapping(
|
||||||
|
soc,
|
||||||
|
rx_desc->nbuf,
|
||||||
|
RX_DATA_BUFFER_SIZE,
|
||||||
|
false);
|
||||||
qdf_nbuf_unmap_nbytes_single(
|
qdf_nbuf_unmap_nbytes_single(
|
||||||
soc->osdev,
|
soc->osdev,
|
||||||
rx_desc->nbuf,
|
rx_desc->nbuf,
|
||||||
@@ -2218,6 +2224,9 @@ more_data:
|
|||||||
* in case double skb unmap happened.
|
* in case double skb unmap happened.
|
||||||
*/
|
*/
|
||||||
rx_desc_pool = &soc->rx_desc_buf[rx_desc->pool_id];
|
rx_desc_pool = &soc->rx_desc_buf[rx_desc->pool_id];
|
||||||
|
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_nbuf_unmap_nbytes_single(soc->osdev, rx_desc->nbuf,
|
||||||
QDF_DMA_FROM_DEVICE,
|
QDF_DMA_FROM_DEVICE,
|
||||||
rx_desc_pool->buf_size);
|
rx_desc_pool->buf_size);
|
||||||
@@ -2792,7 +2801,10 @@ dp_pdev_rx_buffers_attach(struct dp_soc *dp_soc, uint32_t mac_id,
|
|||||||
desc_list->rx_desc.cookie,
|
desc_list->rx_desc.cookie,
|
||||||
rx_desc_pool->owner);
|
rx_desc_pool->owner);
|
||||||
|
|
||||||
dp_ipa_handle_rx_buf_smmu_mapping(dp_soc, nbuf, true);
|
dp_ipa_handle_rx_buf_smmu_mapping(
|
||||||
|
dp_soc, nbuf,
|
||||||
|
rx_desc_pool->buf_size,
|
||||||
|
true);
|
||||||
|
|
||||||
desc_list = next;
|
desc_list = next;
|
||||||
}
|
}
|
||||||
|
@@ -1093,10 +1093,12 @@ static QDF_STATUS dp_rx_defrag_reo_reinject(struct dp_peer *peer,
|
|||||||
qdf_nbuf_data(head), nbuf_len);
|
qdf_nbuf_data(head), nbuf_len);
|
||||||
|
|
||||||
cookie = HAL_RX_BUF_COOKIE_GET(msdu0);
|
cookie = HAL_RX_BUF_COOKIE_GET(msdu0);
|
||||||
|
rx_desc_pool = &soc->rx_desc_buf[pdev->lmac_id];
|
||||||
|
|
||||||
/* map the nbuf before reinject it into HW */
|
/* map the nbuf before reinject it into HW */
|
||||||
ret = qdf_nbuf_map_single(soc->osdev, head,
|
ret = qdf_nbuf_map_nbytes_single(soc->osdev, head,
|
||||||
QDF_DMA_FROM_DEVICE);
|
QDF_DMA_FROM_DEVICE,
|
||||||
|
rx_desc_pool->buf_size);
|
||||||
if (qdf_unlikely(ret == QDF_STATUS_E_FAILURE)) {
|
if (qdf_unlikely(ret == QDF_STATUS_E_FAILURE)) {
|
||||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
|
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
|
||||||
"%s: nbuf map failed !", __func__);
|
"%s: nbuf map failed !", __func__);
|
||||||
@@ -1110,10 +1112,11 @@ static QDF_STATUS dp_rx_defrag_reo_reinject(struct dp_peer *peer,
|
|||||||
*/
|
*/
|
||||||
rx_desc->unmapped = 0;
|
rx_desc->unmapped = 0;
|
||||||
|
|
||||||
dp_ipa_handle_rx_buf_smmu_mapping(soc, head, true);
|
dp_ipa_handle_rx_buf_smmu_mapping(soc, head,
|
||||||
|
rx_desc_pool->buf_size,
|
||||||
|
true);
|
||||||
|
|
||||||
paddr = qdf_nbuf_get_frag_paddr(head, 0);
|
paddr = qdf_nbuf_get_frag_paddr(head, 0);
|
||||||
rx_desc_pool = &soc->rx_desc_buf[pdev->lmac_id];
|
|
||||||
|
|
||||||
ret = check_x86_paddr(soc, &head, &paddr, rx_desc_pool);
|
ret = check_x86_paddr(soc, &head, &paddr, rx_desc_pool);
|
||||||
|
|
||||||
@@ -1732,6 +1735,9 @@ uint32_t dp_rx_frag_handle(struct dp_soc *soc, hal_ring_desc_t ring_desc,
|
|||||||
msdu = rx_desc->nbuf;
|
msdu = rx_desc->nbuf;
|
||||||
|
|
||||||
rx_desc_pool = &soc->rx_desc_buf[rx_desc->pool_id];
|
rx_desc_pool = &soc->rx_desc_buf[rx_desc->pool_id];
|
||||||
|
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_nbuf_unmap_nbytes_single(soc->osdev, rx_desc->nbuf,
|
||||||
QDF_DMA_FROM_DEVICE,
|
QDF_DMA_FROM_DEVICE,
|
||||||
rx_desc_pool->buf_size);
|
rx_desc_pool->buf_size);
|
||||||
|
@@ -172,8 +172,10 @@ static QDF_STATUS __dp_rx_desc_nbuf_free(struct dp_soc *soc,
|
|||||||
if (rx_desc->in_use) {
|
if (rx_desc->in_use) {
|
||||||
nbuf = rx_desc->nbuf;
|
nbuf = rx_desc->nbuf;
|
||||||
if (!rx_desc->unmapped) {
|
if (!rx_desc->unmapped) {
|
||||||
dp_ipa_handle_rx_buf_smmu_mapping(soc, nbuf,
|
dp_ipa_handle_rx_buf_smmu_mapping(
|
||||||
false);
|
soc, nbuf,
|
||||||
|
rx_desc_pool->buf_size,
|
||||||
|
false);
|
||||||
qdf_nbuf_unmap_nbytes_single(
|
qdf_nbuf_unmap_nbytes_single(
|
||||||
soc->osdev,
|
soc->osdev,
|
||||||
rx_desc->nbuf,
|
rx_desc->nbuf,
|
||||||
@@ -326,8 +328,10 @@ void dp_rx_desc_nbuf_and_pool_free(struct dp_soc *soc, uint32_t pool_id,
|
|||||||
nbuf = rx_desc_pool->array[i].rx_desc.nbuf;
|
nbuf = rx_desc_pool->array[i].rx_desc.nbuf;
|
||||||
|
|
||||||
if (!(rx_desc_pool->array[i].rx_desc.unmapped)) {
|
if (!(rx_desc_pool->array[i].rx_desc.unmapped)) {
|
||||||
dp_ipa_handle_rx_buf_smmu_mapping(soc, nbuf,
|
dp_ipa_handle_rx_buf_smmu_mapping(
|
||||||
false);
|
soc, nbuf,
|
||||||
|
rx_desc_pool->buf_size,
|
||||||
|
false);
|
||||||
qdf_nbuf_unmap_nbytes_single(
|
qdf_nbuf_unmap_nbytes_single(
|
||||||
soc->osdev, nbuf,
|
soc->osdev, nbuf,
|
||||||
QDF_DMA_FROM_DEVICE,
|
QDF_DMA_FROM_DEVICE,
|
||||||
@@ -354,9 +358,10 @@ void dp_rx_desc_nbuf_free(struct dp_soc *soc,
|
|||||||
nbuf = rx_desc_pool->array[i].rx_desc.nbuf;
|
nbuf = rx_desc_pool->array[i].rx_desc.nbuf;
|
||||||
|
|
||||||
if (!(rx_desc_pool->array[i].rx_desc.unmapped)) {
|
if (!(rx_desc_pool->array[i].rx_desc.unmapped)) {
|
||||||
dp_ipa_handle_rx_buf_smmu_mapping(soc, nbuf,
|
dp_ipa_handle_rx_buf_smmu_mapping(
|
||||||
false);
|
soc, nbuf,
|
||||||
|
rx_desc_pool->buf_size,
|
||||||
|
false);
|
||||||
qdf_nbuf_unmap_nbytes_single(
|
qdf_nbuf_unmap_nbytes_single(
|
||||||
soc->osdev, nbuf,
|
soc->osdev, nbuf,
|
||||||
QDF_DMA_FROM_DEVICE,
|
QDF_DMA_FROM_DEVICE,
|
||||||
|
@@ -25,6 +25,7 @@
|
|||||||
#include "qdf_trace.h"
|
#include "qdf_trace.h"
|
||||||
#include "qdf_nbuf.h"
|
#include "qdf_nbuf.h"
|
||||||
#include "dp_rx_defrag.h"
|
#include "dp_rx_defrag.h"
|
||||||
|
#include "dp_ipa.h"
|
||||||
#ifdef FEATURE_WDS
|
#ifdef FEATURE_WDS
|
||||||
#include "dp_txrx_wds.h"
|
#include "dp_txrx_wds.h"
|
||||||
#endif
|
#endif
|
||||||
@@ -301,6 +302,9 @@ dp_rx_msdus_drop(struct dp_soc *soc, hal_ring_desc_t ring_desc,
|
|||||||
}
|
}
|
||||||
|
|
||||||
rx_desc_pool = &soc->rx_desc_buf[rx_desc->pool_id];
|
rx_desc_pool = &soc->rx_desc_buf[rx_desc->pool_id];
|
||||||
|
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_nbuf_unmap_nbytes_single(soc->osdev, rx_desc->nbuf,
|
||||||
QDF_DMA_FROM_DEVICE,
|
QDF_DMA_FROM_DEVICE,
|
||||||
rx_desc_pool->buf_size);
|
rx_desc_pool->buf_size);
|
||||||
@@ -492,6 +496,9 @@ more_msdu_link_desc:
|
|||||||
|
|
||||||
nbuf = rx_desc->nbuf;
|
nbuf = rx_desc->nbuf;
|
||||||
rx_desc_pool = &soc->rx_desc_buf[rx_desc->pool_id];
|
rx_desc_pool = &soc->rx_desc_buf[rx_desc->pool_id];
|
||||||
|
dp_ipa_handle_rx_buf_smmu_mapping(soc, nbuf,
|
||||||
|
rx_desc_pool->buf_size,
|
||||||
|
false);
|
||||||
qdf_nbuf_unmap_nbytes_single(soc->osdev, nbuf,
|
qdf_nbuf_unmap_nbytes_single(soc->osdev, nbuf,
|
||||||
QDF_DMA_FROM_DEVICE,
|
QDF_DMA_FROM_DEVICE,
|
||||||
rx_desc_pool->buf_size);
|
rx_desc_pool->buf_size);
|
||||||
@@ -1822,6 +1829,9 @@ dp_rx_wbm_err_process(struct dp_intr *int_ctx, struct dp_soc *soc,
|
|||||||
|
|
||||||
nbuf = rx_desc->nbuf;
|
nbuf = rx_desc->nbuf;
|
||||||
rx_desc_pool = &soc->rx_desc_buf[rx_desc->pool_id];
|
rx_desc_pool = &soc->rx_desc_buf[rx_desc->pool_id];
|
||||||
|
dp_ipa_handle_rx_buf_smmu_mapping(soc, nbuf,
|
||||||
|
rx_desc_pool->buf_size,
|
||||||
|
false);
|
||||||
qdf_nbuf_unmap_nbytes_single(soc->osdev, nbuf,
|
qdf_nbuf_unmap_nbytes_single(soc->osdev, nbuf,
|
||||||
QDF_DMA_FROM_DEVICE,
|
QDF_DMA_FROM_DEVICE,
|
||||||
rx_desc_pool->buf_size);
|
rx_desc_pool->buf_size);
|
||||||
@@ -2129,6 +2139,7 @@ dp_rx_err_mpdu_pop(struct dp_soc *soc, uint32_t mac_id,
|
|||||||
struct dp_pdev *pdev = dp_get_pdev_for_lmac_id(soc, mac_id);
|
struct dp_pdev *pdev = dp_get_pdev_for_lmac_id(soc, mac_id);
|
||||||
uint32_t rx_link_buf_info[HAL_RX_BUFFINFO_NUM_DWORDS];
|
uint32_t rx_link_buf_info[HAL_RX_BUFFINFO_NUM_DWORDS];
|
||||||
hal_rxdma_desc_t ring_desc;
|
hal_rxdma_desc_t ring_desc;
|
||||||
|
struct rx_desc_pool *rx_desc_pool;
|
||||||
|
|
||||||
if (!pdev) {
|
if (!pdev) {
|
||||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_DEBUG,
|
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_DEBUG,
|
||||||
@@ -2199,8 +2210,17 @@ dp_rx_err_mpdu_pop(struct dp_soc *soc, uint32_t mac_id,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
qdf_nbuf_unmap_single(soc->osdev, msdu,
|
rx_desc_pool = &soc->
|
||||||
QDF_DMA_FROM_DEVICE);
|
rx_desc_buf[rx_desc->pool_id];
|
||||||
|
dp_ipa_handle_rx_buf_smmu_mapping(
|
||||||
|
soc, msdu,
|
||||||
|
rx_desc_pool->buf_size,
|
||||||
|
false);
|
||||||
|
qdf_nbuf_unmap_nbytes_single(
|
||||||
|
soc->osdev, msdu,
|
||||||
|
QDF_DMA_FROM_DEVICE,
|
||||||
|
rx_desc_pool->buf_size);
|
||||||
|
rx_desc->unmapped = 1;
|
||||||
|
|
||||||
QDF_TRACE(QDF_MODULE_ID_DP,
|
QDF_TRACE(QDF_MODULE_ID_DP,
|
||||||
QDF_TRACE_LEVEL_DEBUG,
|
QDF_TRACE_LEVEL_DEBUG,
|
||||||
@@ -2427,6 +2447,10 @@ dp_handle_wbm_internal_error(struct dp_soc *soc, void *hal_desc,
|
|||||||
|
|
||||||
if (rx_desc && rx_desc->nbuf) {
|
if (rx_desc && rx_desc->nbuf) {
|
||||||
rx_desc_pool = &soc->rx_desc_buf[rx_desc->pool_id];
|
rx_desc_pool = &soc->rx_desc_buf[rx_desc->pool_id];
|
||||||
|
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_nbuf_unmap_nbytes_single(soc->osdev, rx_desc->nbuf,
|
||||||
QDF_DMA_FROM_DEVICE,
|
QDF_DMA_FROM_DEVICE,
|
||||||
rx_desc_pool->buf_size);
|
rx_desc_pool->buf_size);
|
||||||
|
Reference in New Issue
Block a user