qcacmn: Data path changes for Dynamic Mode Change FR. Changes include-
1. Move all LMAC rings to SOC from pDEV 2. Dynamically obtain lmac->pdev mapping while handling LMAC interrupts Change-Id: Ib017d49243405b62fc34099c01a2b898b25341d0
这个提交包含在:
@@ -62,11 +62,10 @@ dp_rx_mon_link_desc_return(struct dp_pdev *dp_pdev,
|
||||
hal_soc_handle_t hal_soc;
|
||||
QDF_STATUS status = QDF_STATUS_E_FAILURE;
|
||||
void *src_srng_desc;
|
||||
int mac_for_pdev = dp_get_mac_id_for_mac(dp_pdev->soc, mac_id);
|
||||
|
||||
hal_soc = dp_pdev->soc->hal_soc;
|
||||
|
||||
dp_srng = &dp_pdev->rxdma_mon_desc_ring[mac_for_pdev];
|
||||
dp_srng = &dp_pdev->soc->rxdma_mon_desc_ring[mac_id];
|
||||
hal_ring_hdl = dp_srng->hal_srng;
|
||||
|
||||
qdf_assert(hal_ring_hdl);
|
||||
@@ -178,9 +177,9 @@ void *dp_rxdma_get_mon_dst_ring(struct dp_pdev *pdev,
|
||||
uint8_t mac_for_pdev)
|
||||
{
|
||||
if (pdev->soc->wlan_cfg_ctx->rxdma1_enable)
|
||||
return pdev->rxdma_mon_dst_ring[mac_for_pdev].hal_srng;
|
||||
return pdev->soc->rxdma_mon_dst_ring[mac_for_pdev].hal_srng;
|
||||
|
||||
return pdev->rxdma_err_dst_ring[mac_for_pdev].hal_srng;
|
||||
return pdev->soc->rxdma_err_dst_ring[mac_for_pdev].hal_srng;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -196,9 +195,9 @@ struct dp_srng *dp_rxdma_get_mon_buf_ring(struct dp_pdev *pdev,
|
||||
uint8_t mac_for_pdev)
|
||||
{
|
||||
if (pdev->soc->wlan_cfg_ctx->rxdma1_enable)
|
||||
return &pdev->rxdma_mon_buf_ring[mac_for_pdev];
|
||||
return &pdev->soc->rxdma_mon_buf_ring[mac_for_pdev];
|
||||
|
||||
return &pdev->rx_refill_buf_ring;
|
||||
return &pdev->soc->rx_refill_buf_ring[mac_for_pdev];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -261,7 +260,7 @@ dp_rx_mon_mpdu_pop(struct dp_soc *soc, uint32_t mac_id,
|
||||
union dp_rx_desc_list_elem_t **head,
|
||||
union dp_rx_desc_list_elem_t **tail)
|
||||
{
|
||||
struct dp_pdev *dp_pdev = dp_get_pdev_for_mac_id(soc, mac_id);
|
||||
struct dp_pdev *dp_pdev = dp_get_pdev_for_lmac_id(soc, mac_id);
|
||||
void *rx_desc_tlv;
|
||||
void *rx_msdu_link_desc;
|
||||
qdf_nbuf_t msdu;
|
||||
@@ -557,7 +556,7 @@ qdf_nbuf_t dp_rx_mon_restitch_mpdu_from_msdus(struct dp_soc *soc,
|
||||
unsigned char *dest;
|
||||
struct ieee80211_frame *wh;
|
||||
struct ieee80211_qoscntl *qos;
|
||||
struct dp_pdev *dp_pdev = dp_get_pdev_for_mac_id(soc, mac_id);
|
||||
struct dp_pdev *dp_pdev = dp_get_pdev_for_lmac_id(soc, mac_id);
|
||||
head_frag_list = NULL;
|
||||
mpdu_buf = NULL;
|
||||
|
||||
@@ -936,7 +935,7 @@ void dp_rx_extract_radiotap_info(struct cdp_mon_status *rx_status,
|
||||
QDF_STATUS dp_rx_mon_deliver(struct dp_soc *soc, uint32_t mac_id,
|
||||
qdf_nbuf_t head_msdu, qdf_nbuf_t tail_msdu)
|
||||
{
|
||||
struct dp_pdev *pdev = dp_get_pdev_for_mac_id(soc, mac_id);
|
||||
struct dp_pdev *pdev = dp_get_pdev_for_lmac_id(soc, mac_id);
|
||||
struct cdp_mon_status *rs = &pdev->rx_mon_recv_status;
|
||||
qdf_nbuf_t mon_skb, skb_next;
|
||||
qdf_nbuf_t mon_mpdu = NULL;
|
||||
@@ -1011,7 +1010,7 @@ mon_deliver_fail:
|
||||
QDF_STATUS dp_rx_mon_deliver_non_std(struct dp_soc *soc,
|
||||
uint32_t mac_id)
|
||||
{
|
||||
struct dp_pdev *pdev = dp_get_pdev_for_mac_id(soc, mac_id);
|
||||
struct dp_pdev *pdev = dp_get_pdev_for_lmac_id(soc, mac_id);
|
||||
ol_txrx_rx_mon_fp osif_rx_mon;
|
||||
qdf_nbuf_t dummy_msdu;
|
||||
|
||||
@@ -1073,7 +1072,7 @@ mon_deliver_non_std_fail:
|
||||
*/
|
||||
void dp_rx_mon_dest_process(struct dp_soc *soc, uint32_t mac_id, uint32_t quota)
|
||||
{
|
||||
struct dp_pdev *pdev = dp_get_pdev_for_mac_id(soc, mac_id);
|
||||
struct dp_pdev *pdev = dp_get_pdev_for_lmac_id(soc, mac_id);
|
||||
uint8_t pdev_id;
|
||||
hal_rxdma_desc_t rxdma_dst_ring_desc;
|
||||
hal_soc_handle_t hal_soc;
|
||||
@@ -1083,7 +1082,7 @@ void dp_rx_mon_dest_process(struct dp_soc *soc, uint32_t mac_id, uint32_t quota)
|
||||
uint32_t ppdu_id;
|
||||
uint32_t rx_bufs_used;
|
||||
uint32_t mpdu_rx_bufs_used;
|
||||
int mac_for_pdev = dp_get_mac_id_for_mac(soc, mac_id);
|
||||
int mac_for_pdev = mac_id;
|
||||
struct cdp_pdev_mon_stats *rx_mon_stats;
|
||||
|
||||
mon_dst_srng = dp_rxdma_get_mon_dst_ring(pdev, mac_for_pdev);
|
||||
@@ -1205,10 +1204,9 @@ dp_rx_pdev_mon_buf_attach(struct dp_pdev *pdev, int mac_id) {
|
||||
uint32_t num_entries;
|
||||
struct rx_desc_pool *rx_desc_pool;
|
||||
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
||||
uint8_t mac_for_pdev = dp_get_mac_id_for_mac(soc, mac_id);
|
||||
uint32_t rx_desc_pool_size, replenish_size;
|
||||
|
||||
mon_buf_ring = &pdev->rxdma_mon_buf_ring[mac_for_pdev];
|
||||
mon_buf_ring = &soc->rxdma_mon_buf_ring[mac_id];
|
||||
|
||||
num_entries = mon_buf_ring->num_entries;
|
||||
|
||||
@@ -1264,8 +1262,6 @@ dp_rx_pdev_mon_buf_detach(struct dp_pdev *pdev, int mac_id)
|
||||
static
|
||||
QDF_STATUS dp_mon_link_desc_pool_setup(struct dp_soc *soc, uint32_t mac_id)
|
||||
{
|
||||
struct dp_pdev *dp_pdev = dp_get_pdev_for_mac_id(soc, mac_id);
|
||||
int mac_for_pdev = dp_get_mac_id_for_mac(soc, mac_id);
|
||||
int link_desc_size = hal_get_link_desc_size(soc->hal_soc);
|
||||
int link_desc_align = hal_get_link_desc_align(soc->hal_soc);
|
||||
uint32_t max_alloc_size = wlan_cfg_max_alloc_size(soc->wlan_cfg_ctx);
|
||||
@@ -1279,7 +1275,7 @@ QDF_STATUS dp_mon_link_desc_pool_setup(struct dp_soc *soc, uint32_t mac_id)
|
||||
int i;
|
||||
qdf_dma_addr_t *baseaddr = NULL;
|
||||
|
||||
dp_srng = &dp_pdev->rxdma_mon_desc_ring[mac_for_pdev];
|
||||
dp_srng = &soc->rxdma_mon_desc_ring[mac_id];
|
||||
|
||||
num_entries = dp_srng->alloc_size/hal_srng_get_entrysize(
|
||||
soc->hal_soc, RXDMA_MONITOR_DESC);
|
||||
@@ -1315,17 +1311,17 @@ QDF_STATUS dp_mon_link_desc_pool_setup(struct dp_soc *soc, uint32_t mac_id)
|
||||
__func__, max_alloc_size, last_bank_size);
|
||||
|
||||
for (i = 0; i < num_link_desc_banks; i++) {
|
||||
baseaddr = &dp_pdev->link_desc_banks[mac_for_pdev][i].
|
||||
baseaddr = &soc->mon_link_desc_banks[mac_id][i].
|
||||
base_paddr_unaligned;
|
||||
if (!dp_is_soc_reinit(soc)) {
|
||||
dp_pdev->link_desc_banks[mac_for_pdev][i].
|
||||
soc->mon_link_desc_banks[mac_id][i].
|
||||
base_vaddr_unaligned =
|
||||
qdf_mem_alloc_consistent(soc->osdev,
|
||||
soc->osdev->dev,
|
||||
max_alloc_size,
|
||||
baseaddr);
|
||||
|
||||
if (!dp_pdev->link_desc_banks[mac_for_pdev][i].
|
||||
if (!soc->mon_link_desc_banks[mac_id][i].
|
||||
base_vaddr_unaligned) {
|
||||
QDF_TRACE(QDF_MODULE_ID_TXRX,
|
||||
QDF_TRACE_LEVEL_ERROR,
|
||||
@@ -1334,25 +1330,25 @@ QDF_STATUS dp_mon_link_desc_pool_setup(struct dp_soc *soc, uint32_t mac_id)
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
dp_pdev->link_desc_banks[mac_for_pdev][i].size = max_alloc_size;
|
||||
soc->mon_link_desc_banks[mac_id][i].size = max_alloc_size;
|
||||
|
||||
dp_pdev->link_desc_banks[mac_for_pdev][i].base_vaddr =
|
||||
soc->mon_link_desc_banks[mac_id][i].base_vaddr =
|
||||
(void *)((unsigned long)
|
||||
(dp_pdev->link_desc_banks[mac_for_pdev][i].
|
||||
(soc->mon_link_desc_banks[mac_id][i].
|
||||
base_vaddr_unaligned) +
|
||||
((unsigned long)
|
||||
(dp_pdev->link_desc_banks[mac_for_pdev][i].
|
||||
(soc->mon_link_desc_banks[mac_id][i].
|
||||
base_vaddr_unaligned) %
|
||||
link_desc_align));
|
||||
|
||||
dp_pdev->link_desc_banks[mac_for_pdev][i].base_paddr =
|
||||
soc->mon_link_desc_banks[mac_id][i].base_paddr =
|
||||
(unsigned long)
|
||||
(dp_pdev->link_desc_banks[mac_for_pdev][i].
|
||||
(soc->mon_link_desc_banks[mac_id][i].
|
||||
base_paddr_unaligned) +
|
||||
((unsigned long)
|
||||
(dp_pdev->link_desc_banks[mac_for_pdev][i].base_vaddr) -
|
||||
(soc->mon_link_desc_banks[mac_id][i].base_vaddr) -
|
||||
(unsigned long)
|
||||
(dp_pdev->link_desc_banks[mac_for_pdev][i].
|
||||
(soc->mon_link_desc_banks[mac_id][i].
|
||||
base_vaddr_unaligned));
|
||||
}
|
||||
|
||||
@@ -1360,17 +1356,17 @@ QDF_STATUS dp_mon_link_desc_pool_setup(struct dp_soc *soc, uint32_t mac_id)
|
||||
/* Allocate last bank in case total memory required is not exact
|
||||
* multiple of max_alloc_size
|
||||
*/
|
||||
baseaddr = &dp_pdev->link_desc_banks[mac_for_pdev][i].
|
||||
baseaddr = &soc->mon_link_desc_banks[mac_id][i].
|
||||
base_paddr_unaligned;
|
||||
if (!dp_is_soc_reinit(soc)) {
|
||||
dp_pdev->link_desc_banks[mac_for_pdev][i].
|
||||
soc->mon_link_desc_banks[mac_id][i].
|
||||
base_vaddr_unaligned =
|
||||
qdf_mem_alloc_consistent(soc->osdev,
|
||||
soc->osdev->dev,
|
||||
last_bank_size,
|
||||
baseaddr);
|
||||
|
||||
if (!dp_pdev->link_desc_banks[mac_for_pdev][i].
|
||||
if (!soc->mon_link_desc_banks[mac_id][i].
|
||||
base_vaddr_unaligned) {
|
||||
QDF_TRACE(QDF_MODULE_ID_TXRX,
|
||||
QDF_TRACE_LEVEL_ERROR,
|
||||
@@ -1379,33 +1375,34 @@ QDF_STATUS dp_mon_link_desc_pool_setup(struct dp_soc *soc, uint32_t mac_id)
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
dp_pdev->link_desc_banks[mac_for_pdev][i].size = last_bank_size;
|
||||
soc->mon_link_desc_banks[mac_id][i].size =
|
||||
last_bank_size;
|
||||
|
||||
dp_pdev->link_desc_banks[mac_for_pdev][i].base_vaddr =
|
||||
soc->mon_link_desc_banks[mac_id][i].base_vaddr =
|
||||
(void *)((unsigned long)
|
||||
(dp_pdev->link_desc_banks[mac_for_pdev][i].
|
||||
base_vaddr_unaligned) +
|
||||
(soc->mon_link_desc_banks[mac_id][i].
|
||||
base_vaddr_unaligned) +
|
||||
((unsigned long)
|
||||
(dp_pdev->link_desc_banks[mac_for_pdev][i].
|
||||
base_vaddr_unaligned) %
|
||||
(soc->mon_link_desc_banks[mac_id][i].
|
||||
base_vaddr_unaligned) %
|
||||
link_desc_align));
|
||||
|
||||
dp_pdev->link_desc_banks[mac_for_pdev][i].base_paddr =
|
||||
soc->mon_link_desc_banks[mac_id][i].base_paddr =
|
||||
(unsigned long)
|
||||
(dp_pdev->link_desc_banks[mac_for_pdev][i].
|
||||
base_paddr_unaligned) +
|
||||
(soc->mon_link_desc_banks[mac_id][i].
|
||||
base_paddr_unaligned) +
|
||||
((unsigned long)
|
||||
(dp_pdev->link_desc_banks[mac_for_pdev][i].base_vaddr) -
|
||||
(soc->mon_link_desc_banks[mac_id][i].base_vaddr) -
|
||||
(unsigned long)
|
||||
(dp_pdev->link_desc_banks[mac_for_pdev][i].
|
||||
base_vaddr_unaligned));
|
||||
(soc->mon_link_desc_banks[mac_id][i].
|
||||
base_vaddr_unaligned));
|
||||
}
|
||||
|
||||
/* Allocate and setup link descriptor idle list for HW internal use */
|
||||
entry_size = hal_srng_get_entrysize(soc->hal_soc, RXDMA_MONITOR_DESC);
|
||||
total_mem_size = entry_size * total_link_descs;
|
||||
|
||||
mon_desc_srng = dp_pdev->rxdma_mon_desc_ring[mac_for_pdev].hal_srng;
|
||||
mon_desc_srng = soc->rxdma_mon_desc_ring[mac_id].hal_srng;
|
||||
|
||||
num_replenish_buf = 0;
|
||||
|
||||
@@ -1414,22 +1411,22 @@ QDF_STATUS dp_mon_link_desc_pool_setup(struct dp_soc *soc, uint32_t mac_id)
|
||||
|
||||
|
||||
for (i = 0;
|
||||
i < MAX_MON_LINK_DESC_BANKS &&
|
||||
dp_pdev->link_desc_banks[mac_for_pdev][i].base_paddr;
|
||||
i++) {
|
||||
i < MAX_MON_LINK_DESC_BANKS &&
|
||||
soc->mon_link_desc_banks[mac_id][i].base_paddr;
|
||||
i++) {
|
||||
uint32_t num_entries =
|
||||
(dp_pdev->link_desc_banks[mac_for_pdev][i].size -
|
||||
(soc->mon_link_desc_banks[mac_id][i].size -
|
||||
(unsigned long)
|
||||
(dp_pdev->link_desc_banks[mac_for_pdev][i].base_vaddr) -
|
||||
(soc->mon_link_desc_banks[mac_id][i].base_vaddr) -
|
||||
(unsigned long)
|
||||
(dp_pdev->link_desc_banks[mac_for_pdev][i].
|
||||
(soc->mon_link_desc_banks[mac_id][i].
|
||||
base_vaddr_unaligned)) / link_desc_size;
|
||||
unsigned long paddr =
|
||||
(unsigned long)
|
||||
(dp_pdev->link_desc_banks[mac_for_pdev][i].base_paddr);
|
||||
(soc->mon_link_desc_banks[mac_id][i].base_paddr);
|
||||
unsigned long vaddr =
|
||||
(unsigned long)
|
||||
(dp_pdev->link_desc_banks[mac_for_pdev][i].base_vaddr);
|
||||
(soc->mon_link_desc_banks[mac_id][i].base_vaddr);
|
||||
|
||||
hal_srng_access_start_unlocked(soc->hal_soc,
|
||||
mon_desc_srng);
|
||||
@@ -1438,7 +1435,7 @@ QDF_STATUS dp_mon_link_desc_pool_setup(struct dp_soc *soc, uint32_t mac_id)
|
||||
hal_srng_src_get_next(soc->hal_soc,
|
||||
mon_desc_srng))) {
|
||||
|
||||
hal_set_link_desc_addr(desc, i, paddr);
|
||||
hal_set_link_desc_addr(desc, i, paddr);
|
||||
num_entries--;
|
||||
num_replenish_buf++;
|
||||
paddr += link_desc_size;
|
||||
@@ -1459,16 +1456,17 @@ QDF_STATUS dp_mon_link_desc_pool_setup(struct dp_soc *soc, uint32_t mac_id)
|
||||
|
||||
fail:
|
||||
for (i = 0; i < MAX_MON_LINK_DESC_BANKS; i++) {
|
||||
if (dp_pdev->link_desc_banks[mac_for_pdev][i].
|
||||
base_vaddr_unaligned) {
|
||||
qdf_mem_free_consistent(soc->osdev, soc->osdev->dev,
|
||||
dp_pdev->link_desc_banks[mac_for_pdev][i].size,
|
||||
dp_pdev->link_desc_banks[mac_for_pdev][i].
|
||||
base_vaddr_unaligned,
|
||||
dp_pdev->link_desc_banks[mac_for_pdev][i].
|
||||
base_paddr_unaligned, 0);
|
||||
dp_pdev->link_desc_banks[mac_for_pdev][i].
|
||||
base_vaddr_unaligned = NULL;
|
||||
if (soc->mon_link_desc_banks[mac_id][i].
|
||||
base_vaddr_unaligned) {
|
||||
qdf_mem_free_consistent(soc->osdev, soc->osdev->dev,
|
||||
soc->mon_link_desc_banks[mac_id][i].
|
||||
size,
|
||||
soc->mon_link_desc_banks[mac_id][i].
|
||||
base_vaddr_unaligned,
|
||||
soc->mon_link_desc_banks[mac_id][i].
|
||||
base_paddr_unaligned, 0);
|
||||
soc->mon_link_desc_banks[mac_id][i].
|
||||
base_vaddr_unaligned = NULL;
|
||||
}
|
||||
}
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
@@ -1480,21 +1478,20 @@ fail:
|
||||
static
|
||||
void dp_mon_link_desc_pool_cleanup(struct dp_soc *soc, uint32_t mac_id)
|
||||
{
|
||||
struct dp_pdev *dp_pdev = dp_get_pdev_for_mac_id(soc, mac_id);
|
||||
int mac_for_pdev = dp_get_mac_id_for_mac(soc, mac_id);
|
||||
int i;
|
||||
|
||||
for (i = 0; i < MAX_MON_LINK_DESC_BANKS; i++) {
|
||||
if (dp_pdev->link_desc_banks[mac_for_pdev][i].
|
||||
base_vaddr_unaligned) {
|
||||
qdf_mem_free_consistent(soc->osdev, soc->osdev->dev,
|
||||
dp_pdev->link_desc_banks[mac_for_pdev][i].size,
|
||||
dp_pdev->link_desc_banks[mac_for_pdev][i].
|
||||
base_vaddr_unaligned,
|
||||
dp_pdev->link_desc_banks[mac_for_pdev][i].
|
||||
base_paddr_unaligned, 0);
|
||||
dp_pdev->link_desc_banks[mac_for_pdev][i].
|
||||
base_vaddr_unaligned = NULL;
|
||||
if (soc->mon_link_desc_banks[mac_id][i].
|
||||
base_vaddr_unaligned) {
|
||||
qdf_mem_free_consistent(soc->osdev, soc->osdev->dev,
|
||||
soc->mon_link_desc_banks[mac_id][i].
|
||||
size,
|
||||
soc->mon_link_desc_banks[mac_id][i].
|
||||
base_vaddr_unaligned,
|
||||
soc->mon_link_desc_banks[mac_id][i].
|
||||
base_paddr_unaligned, 0);
|
||||
soc->mon_link_desc_banks[mac_id][i].
|
||||
base_vaddr_unaligned = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1512,27 +1509,25 @@ void dp_mon_buf_delayed_replenish(struct dp_pdev *pdev)
|
||||
union dp_rx_desc_list_elem_t *tail = NULL;
|
||||
union dp_rx_desc_list_elem_t *desc_list = NULL;
|
||||
uint32_t num_entries;
|
||||
uint32_t mac_id, id;
|
||||
uint32_t id;
|
||||
|
||||
soc = pdev->soc;
|
||||
num_entries = wlan_cfg_get_dma_mon_buf_ring_size(pdev->wlan_cfg_ctx);
|
||||
|
||||
for (id = 0; id < NUM_RXDMA_RINGS_PER_PDEV; id++) {
|
||||
mac_for_pdev = dp_get_mac_id_for_pdev(id,
|
||||
pdev->pdev_id);
|
||||
|
||||
/*
|
||||
* Map mac_for_pdev appropriately for both MCL & WIN,
|
||||
* Get mac_for_pdev appropriately for both MCL & WIN,
|
||||
* since MCL have multiple mon buf rings and WIN just
|
||||
* has one mon buffer ring, below API helps identify
|
||||
* accurate buffer_ring for both cases
|
||||
* has one mon buffer ring mapped per pdev, below API
|
||||
* helps identify accurate buffer_ring for both cases
|
||||
*
|
||||
*/
|
||||
mac_id = dp_get_mac_id_for_mac(soc, mac_for_pdev);
|
||||
mac_for_pdev =
|
||||
dp_get_lmac_id_for_pdev_id(soc, id, pdev->pdev_id);
|
||||
|
||||
dp_rx_buffers_replenish(soc, mac_for_pdev,
|
||||
dp_rxdma_get_mon_buf_ring(pdev,
|
||||
mac_id),
|
||||
mac_for_pdev),
|
||||
dp_rx_get_mon_desc_pool(soc,
|
||||
mac_for_pdev,
|
||||
pdev->pdev_id),
|
||||
@@ -1582,7 +1577,7 @@ static QDF_STATUS
|
||||
dp_rx_pdev_mon_cmn_detach(struct dp_pdev *pdev, int mac_id) {
|
||||
struct dp_soc *soc = pdev->soc;
|
||||
uint8_t pdev_id = pdev->pdev_id;
|
||||
int mac_for_pdev = dp_get_mac_id_for_pdev(mac_id, pdev_id);
|
||||
int mac_for_pdev = dp_get_lmac_id_for_pdev_id(soc, mac_id, pdev_id);
|
||||
|
||||
dp_mon_link_desc_pool_cleanup(soc, mac_for_pdev);
|
||||
dp_rx_pdev_mon_status_detach(pdev, mac_for_pdev);
|
||||
@@ -1606,7 +1601,7 @@ static QDF_STATUS
|
||||
dp_rx_pdev_mon_cmn_attach(struct dp_pdev *pdev, int mac_id) {
|
||||
struct dp_soc *soc = pdev->soc;
|
||||
uint8_t pdev_id = pdev->pdev_id;
|
||||
int mac_for_pdev = dp_get_mac_id_for_pdev(mac_id, pdev_id);
|
||||
int mac_for_pdev = dp_get_lmac_id_for_pdev_id(soc, mac_id, pdev_id);
|
||||
QDF_STATUS status;
|
||||
|
||||
status = dp_rx_pdev_mon_buf_attach(pdev, mac_for_pdev);
|
||||
@@ -1688,7 +1683,8 @@ dp_mon_link_free(struct dp_pdev *pdev) {
|
||||
int mac_id;
|
||||
|
||||
for (mac_id = 0; mac_id < NUM_RXDMA_RINGS_PER_PDEV; mac_id++) {
|
||||
int mac_for_pdev = dp_get_mac_id_for_pdev(mac_id, pdev_id);
|
||||
int mac_for_pdev = dp_get_lmac_id_for_pdev_id(soc,
|
||||
mac_id, pdev_id);
|
||||
|
||||
dp_mon_link_desc_pool_cleanup(soc, mac_for_pdev);
|
||||
}
|
||||
@@ -1713,7 +1709,8 @@ dp_rx_pdev_mon_detach(struct dp_pdev *pdev) {
|
||||
|
||||
qdf_spinlock_destroy(&pdev->mon_lock);
|
||||
for (mac_id = 0; mac_id < NUM_RXDMA_RINGS_PER_PDEV; mac_id++) {
|
||||
int mac_for_pdev = dp_get_mac_id_for_pdev(mac_id, pdev_id);
|
||||
int mac_for_pdev = dp_get_lmac_id_for_pdev_id(pdev->soc,
|
||||
mac_id, pdev_id);
|
||||
|
||||
dp_rx_pdev_mon_status_detach(pdev, mac_for_pdev);
|
||||
dp_rx_pdev_mon_buf_detach(pdev, mac_for_pdev);
|
||||
|
在新工单中引用
屏蔽一个用户