qcacmn: Peer id parsing changes for beryllium

Take care of the MLO peer bit indication to be
concatenated with peer_id to access the peer map
object.

Change-Id: Ia603a728101e83829a8906d1b847f42389e78ca6
CRs-Fixed: 3039326
此提交包含在:
Rakesh Pillai
2021-06-22 03:13:01 -07:00
提交者 Madan Koyyalamudi
父節點 2069fa6cdd
當前提交 57e2c01e5e
共有 17 個檔案被更改,包括 159 行新增53 行删除

查看文件

@@ -1037,6 +1037,8 @@ void dp_initialize_arch_ops_be(struct dp_arch_ops *arch_ops)
arch_ops->txrx_vdev_attach = dp_vdev_attach_be;
arch_ops->txrx_vdev_detach = dp_vdev_detach_be;
arch_ops->dp_rxdma_ring_sel_cfg = dp_rxdma_ring_sel_cfg_be;
arch_ops->dp_rx_peer_metadata_peer_id_get =
dp_rx_peer_metadata_peer_id_get_be;
arch_ops->soc_cfg_attach = dp_soc_cfg_attach_be;
arch_ops->tx_implicit_rbm_set = dp_tx_implicit_rbm_set_be;

查看文件

@@ -335,13 +335,13 @@ more_data:
rx_bufs_reaped[rx_desc->pool_id]++;
peer_mdata = mpdu_desc_info.peer_meta_data;
QDF_NBUF_CB_RX_PEER_ID(rx_desc->nbuf) =
DP_PEER_METADATA_PEER_ID_GET(peer_mdata);
dp_rx_peer_metadata_peer_id_get_be(soc, peer_mdata);
QDF_NBUF_CB_RX_VDEV_ID(rx_desc->nbuf) =
DP_PEER_METADATA_VDEV_ID_GET(peer_mdata);
dp_rx_peer_metadata_vdev_id_get_be(soc, peer_mdata);
/* to indicate whether this msdu is rx offload */
pkt_capture_offload =
DP_PEER_METADATA_OFFLOAD_GET(peer_mdata);
DP_PEER_METADATA_OFFLOAD_GET_BE(peer_mdata);
/*
* save msdu flags first, last and continuation msdu in

查看文件

@@ -125,6 +125,43 @@ dp_rx_desc_sw_cc_check(struct dp_soc *soc,
}
#endif /* DP_FEATURE_HW_COOKIE_CONVERSION && DP_HW_COOKIE_CONVERT_EXCEPTION */
#define DP_PEER_METADATA_OFFLOAD_GET_BE(_peer_metadata) (0)
#ifdef DP_USE_REDUCED_PEER_ID_FIELD_WIDTH
static inline uint16_t
dp_rx_peer_metadata_peer_id_get_be(struct dp_soc *soc, uint32_t peer_metadata)
{
struct htt_rx_peer_metadata_v1 *metadata =
(struct htt_rx_peer_metadata_v1 *)&peer_metadata;
uint16_t peer_id;
peer_id = metadata->peer_id |
(metadata->ml_peer_valid << soc->peer_id_shift);
return peer_id;
}
#else
/* Combine ml_peer_valid and peer_id field */
#define DP_BE_PEER_METADATA_PEER_ID_MASK 0x00003fff
#define DP_BE_PEER_METADATA_PEER_ID_SHIFT 0
static inline uint16_t
dp_rx_peer_metadata_peer_id_get_be(struct dp_soc *soc, uint32_t peer_metadata)
{
return ((peer_metadata & DP_BE_PEER_METADATA_PEER_ID_MASK) >>
DP_BE_PEER_METADATA_PEER_ID_SHIFT);
}
#endif
static inline uint16_t
dp_rx_peer_metadata_vdev_id_get_be(struct dp_soc *soc, uint32_t peer_metadata)
{
struct htt_rx_peer_metadata_v1 *metadata =
(struct htt_rx_peer_metadata_v1 *)&peer_metadata;
return metadata->vdev_id;
}
#ifdef WLAN_FEATURE_NEAR_FULL_IRQ
/**
* dp_rx_nf_process() - Near Full state handler for RX rings.

查看文件

@@ -27,6 +27,32 @@
extern uint8_t sec_type_map[MAX_CDP_SEC_TYPE];
#ifdef DP_USE_REDUCED_PEER_ID_FIELD_WIDTH
static inline uint16_t dp_tx_comp_get_peer_id(struct dp_soc *soc,
void *tx_comp_hal_desc)
{
uint16_t peer_id = hal_tx_comp_get_peer_id(tx_comp_hal_desc);
struct dp_tx_comp_peer_id *tx_peer_id =
(struct dp_tx_comp_peer_id *)&peer_id;
return (tx_peer_id->peer_id |
(tx_peer_id->ml_peer_valid << soc->peer_id_shift));
}
#else
/* Combine ml_peer_valid and peer_id field */
#define DP_BE_TX_COMP_PEER_ID_MASK 0x00003fff
#define DP_BE_TX_COMP_PEER_ID_SHIFT 0
static inline uint16_t dp_tx_comp_get_peer_id(struct dp_soc *soc,
void *tx_comp_hal_desc)
{
uint16_t peer_id = hal_tx_comp_get_peer_id(tx_comp_hal_desc);
return ((peer_id & DP_BE_TX_COMP_PEER_ID_MASK) >>
DP_BE_TX_COMP_PEER_ID_SHIFT);
}
#endif
#ifdef DP_FEATURE_HW_COOKIE_CONVERSION
#ifdef DP_HW_COOKIE_CONVERT_EXCEPTION
void dp_tx_comp_get_params_from_hal_desc_be(struct dp_soc *soc,
@@ -46,6 +72,10 @@ void dp_tx_comp_get_params_from_hal_desc_be(struct dp_soc *soc,
*r_tx_desc =
(struct dp_tx_desc_s *)dp_cc_desc_find(soc, tx_desc_id);
}
if (*r_tx_desc)
(*r_tx_desc)->peer_id = dp_tx_comp_get_peer_id(soc,
tx_comp_hal_desc);
}
#else
void dp_tx_comp_get_params_from_hal_desc_be(struct dp_soc *soc,
@@ -54,6 +84,10 @@ void dp_tx_comp_get_params_from_hal_desc_be(struct dp_soc *soc,
{
*r_tx_desc = (struct dp_tx_desc_s *)
hal_tx_comp_get_desc_va(tx_comp_hal_desc);
if (*r_tx_desc)
(*r_tx_desc)->peer_id = dp_tx_comp_get_peer_id(soc,
tx_comp_hal_desc);
}
#endif /* DP_HW_COOKIE_CONVERT_EXCEPTION */
#else
@@ -68,6 +102,10 @@ void dp_tx_comp_get_params_from_hal_desc_be(struct dp_soc *soc,
tx_desc_id = hal_tx_comp_get_desc_id(tx_comp_hal_desc);
*r_tx_desc =
(struct dp_tx_desc_s *)dp_cc_desc_find(soc, tx_desc_id);
if (*r_tx_desc)
(*r_tx_desc)->peer_id = dp_tx_comp_get_peer_id(soc,
tx_comp_hal_desc);
}
#endif /* DP_FEATURE_HW_COOKIE_CONVERSION */

查看文件

@@ -27,6 +27,12 @@
#include <dp_types.h>
#include "dp_be.h"
struct __attribute__((__packed__)) dp_tx_comp_peer_id {
uint16_t peer_id:13,
ml_peer_valid:1,
reserved:2;
};
/* Invalid TX Bank ID value */
#define DP_BE_INVALID_BANK_ID -1