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
This commit is contained in:

committed by
Madan Koyyalamudi

parent
2069fa6cdd
commit
57e2c01e5e
@@ -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_attach = dp_vdev_attach_be;
|
||||||
arch_ops->txrx_vdev_detach = dp_vdev_detach_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_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->soc_cfg_attach = dp_soc_cfg_attach_be;
|
||||||
arch_ops->tx_implicit_rbm_set = dp_tx_implicit_rbm_set_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]++;
|
rx_bufs_reaped[rx_desc->pool_id]++;
|
||||||
peer_mdata = mpdu_desc_info.peer_meta_data;
|
peer_mdata = mpdu_desc_info.peer_meta_data;
|
||||||
QDF_NBUF_CB_RX_PEER_ID(rx_desc->nbuf) =
|
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) =
|
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 */
|
/* to indicate whether this msdu is rx offload */
|
||||||
pkt_capture_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
|
* 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 */
|
#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
|
#ifdef WLAN_FEATURE_NEAR_FULL_IRQ
|
||||||
/**
|
/**
|
||||||
* dp_rx_nf_process() - Near Full state handler for RX rings.
|
* 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];
|
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_FEATURE_HW_COOKIE_CONVERSION
|
||||||
#ifdef DP_HW_COOKIE_CONVERT_EXCEPTION
|
#ifdef DP_HW_COOKIE_CONVERT_EXCEPTION
|
||||||
void dp_tx_comp_get_params_from_hal_desc_be(struct dp_soc *soc,
|
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 =
|
*r_tx_desc =
|
||||||
(struct dp_tx_desc_s *)dp_cc_desc_find(soc, tx_desc_id);
|
(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
|
#else
|
||||||
void dp_tx_comp_get_params_from_hal_desc_be(struct dp_soc *soc,
|
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 *)
|
*r_tx_desc = (struct dp_tx_desc_s *)
|
||||||
hal_tx_comp_get_desc_va(tx_comp_hal_desc);
|
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 */
|
#endif /* DP_HW_COOKIE_CONVERT_EXCEPTION */
|
||||||
#else
|
#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);
|
tx_desc_id = hal_tx_comp_get_desc_id(tx_comp_hal_desc);
|
||||||
*r_tx_desc =
|
*r_tx_desc =
|
||||||
(struct dp_tx_desc_s *)dp_cc_desc_find(soc, tx_desc_id);
|
(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 */
|
#endif /* DP_FEATURE_HW_COOKIE_CONVERSION */
|
||||||
|
|
||||||
|
@@ -27,6 +27,12 @@
|
|||||||
#include <dp_types.h>
|
#include <dp_types.h>
|
||||||
#include "dp_be.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 */
|
/* Invalid TX Bank ID value */
|
||||||
#define DP_BE_INVALID_BANK_ID -1
|
#define DP_BE_INVALID_BANK_ID -1
|
||||||
|
|
||||||
|
@@ -869,6 +869,20 @@ void DP_PRINT_STATS(const char *fmt, ...);
|
|||||||
#define FRAME_MASK_IPV4_EAPOL 4
|
#define FRAME_MASK_IPV4_EAPOL 4
|
||||||
#define FRAME_MASK_IPV6_DHCP 8
|
#define FRAME_MASK_IPV6_DHCP 8
|
||||||
|
|
||||||
|
static inline int dp_log2_ceil(unsigned int value)
|
||||||
|
{
|
||||||
|
unsigned int tmp = value;
|
||||||
|
int log2 = -1;
|
||||||
|
|
||||||
|
while (tmp) {
|
||||||
|
log2++;
|
||||||
|
tmp >>= 1;
|
||||||
|
}
|
||||||
|
if (1 << log2 != value)
|
||||||
|
log2++;
|
||||||
|
return log2;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef QCA_SUPPORT_PEER_ISOLATION
|
#ifdef QCA_SUPPORT_PEER_ISOLATION
|
||||||
#define dp_get_peer_isolation(_peer) ((_peer)->isolation)
|
#define dp_get_peer_isolation(_peer) ((_peer)->isolation)
|
||||||
|
|
||||||
|
@@ -10770,10 +10770,16 @@ static QDF_STATUS dp_peer_map_attach_wifi3(struct cdp_soc_t *soc_hdl,
|
|||||||
{
|
{
|
||||||
struct dp_soc *soc = (struct dp_soc *)soc_hdl;
|
struct dp_soc *soc = (struct dp_soc *)soc_hdl;
|
||||||
|
|
||||||
soc->max_peers = max_peers;
|
soc->peer_id_shift = dp_log2_ceil(max_peers);
|
||||||
|
soc->peer_id_mask = (1 << soc->peer_id_shift) - 1;
|
||||||
|
/*
|
||||||
|
* Double the peers since we use ML indication bit
|
||||||
|
* alongwith peer_id to find peers.
|
||||||
|
*/
|
||||||
|
soc->max_peers = 1 << (soc->peer_id_shift + 1);
|
||||||
|
|
||||||
qdf_print ("%s max_peers %u, max_ast_index: %u\n",
|
dp_info("max_peers %u, calculated max_peers %u max_ast_index: %u\n",
|
||||||
__func__, max_peers, max_ast_index);
|
max_peers, soc->max_peers, max_ast_index);
|
||||||
wlan_cfg_set_max_ast_idx(soc->wlan_cfg_ctx, max_ast_index);
|
wlan_cfg_set_max_ast_idx(soc->wlan_cfg_ctx, max_ast_index);
|
||||||
|
|
||||||
if (dp_peer_find_attach(soc))
|
if (dp_peer_find_attach(soc))
|
||||||
|
@@ -208,20 +208,6 @@ static QDF_STATUS dp_peer_find_map_attach(struct dp_soc *soc)
|
|||||||
return QDF_STATUS_SUCCESS; /* success */
|
return QDF_STATUS_SUCCESS; /* success */
|
||||||
}
|
}
|
||||||
|
|
||||||
static int dp_log2_ceil(unsigned int value)
|
|
||||||
{
|
|
||||||
unsigned int tmp = value;
|
|
||||||
int log2 = -1;
|
|
||||||
|
|
||||||
while (tmp) {
|
|
||||||
log2++;
|
|
||||||
tmp >>= 1;
|
|
||||||
}
|
|
||||||
if (1 << log2 != value)
|
|
||||||
log2++;
|
|
||||||
return log2;
|
|
||||||
}
|
|
||||||
|
|
||||||
#define DP_PEER_HASH_LOAD_MULT 2
|
#define DP_PEER_HASH_LOAD_MULT 2
|
||||||
#define DP_PEER_HASH_LOAD_SHIFT 0
|
#define DP_PEER_HASH_LOAD_SHIFT 0
|
||||||
|
|
||||||
|
@@ -43,28 +43,8 @@
|
|||||||
|
|
||||||
#define RX_BUFFER_RESERVATION 0
|
#define RX_BUFFER_RESERVATION 0
|
||||||
|
|
||||||
#define DP_PEER_METADATA_PEER_ID_MASK 0x0000ffff
|
|
||||||
#define DP_PEER_METADATA_PEER_ID_SHIFT 0
|
|
||||||
#define DP_PEER_METADATA_VDEV_ID_MASK 0x003f0000
|
|
||||||
#define DP_PEER_METADATA_VDEV_ID_SHIFT 16
|
|
||||||
#define DP_PEER_METADATA_OFFLOAD_MASK 0x01000000
|
|
||||||
#define DP_PEER_METADATA_OFFLOAD_SHIFT 24
|
|
||||||
|
|
||||||
|
|
||||||
#define DP_DEFAULT_NOISEFLOOR (-96)
|
#define DP_DEFAULT_NOISEFLOOR (-96)
|
||||||
|
|
||||||
#define DP_PEER_METADATA_PEER_ID_GET(_peer_metadata) \
|
|
||||||
(((_peer_metadata) & DP_PEER_METADATA_PEER_ID_MASK) \
|
|
||||||
>> DP_PEER_METADATA_PEER_ID_SHIFT)
|
|
||||||
|
|
||||||
#define DP_PEER_METADATA_VDEV_ID_GET(_peer_metadata) \
|
|
||||||
(((_peer_metadata) & DP_PEER_METADATA_VDEV_ID_MASK) \
|
|
||||||
>> DP_PEER_METADATA_VDEV_ID_SHIFT)
|
|
||||||
|
|
||||||
#define DP_PEER_METADATA_OFFLOAD_GET(_peer_metadata) \
|
|
||||||
(((_peer_metadata) & DP_PEER_METADATA_OFFLOAD_MASK) \
|
|
||||||
>> DP_PEER_METADATA_OFFLOAD_SHIFT)
|
|
||||||
|
|
||||||
#define DP_RX_DESC_MAGIC 0xdec0de
|
#define DP_RX_DESC_MAGIC 0xdec0de
|
||||||
|
|
||||||
#define dp_rx_alert(params...) QDF_TRACE_FATAL(QDF_MODULE_ID_DP_RX, params)
|
#define dp_rx_alert(params...) QDF_TRACE_FATAL(QDF_MODULE_ID_DP_RX, params)
|
||||||
@@ -2079,6 +2059,13 @@ dp_rx_get_defrag_bm_id(struct dp_soc *soc)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static inline uint16_t
|
||||||
|
dp_rx_peer_metadata_peer_id_get(struct dp_soc *soc, uint32_t peer_metadata)
|
||||||
|
{
|
||||||
|
return soc->arch_ops.dp_rx_peer_metadata_peer_id_get(soc,
|
||||||
|
peer_metadata);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* dp_rx_desc_pool_init_generic() - Generic Rx descriptors initialization
|
* dp_rx_desc_pool_init_generic() - Generic Rx descriptors initialization
|
||||||
* @soc: SOC handle
|
* @soc: SOC handle
|
||||||
|
@@ -1711,7 +1711,7 @@ dp_rx_defrag_store_fragment(struct dp_soc *soc,
|
|||||||
qdf_nbuf_append_ext_list(frag, NULL, 0);
|
qdf_nbuf_append_ext_list(frag, NULL, 0);
|
||||||
|
|
||||||
/* Check if the packet is from a valid peer */
|
/* Check if the packet is from a valid peer */
|
||||||
peer_id = DP_PEER_METADATA_PEER_ID_GET(
|
peer_id = dp_rx_peer_metadata_peer_id_get(soc,
|
||||||
mpdu_desc_info->peer_meta_data);
|
mpdu_desc_info->peer_meta_data);
|
||||||
peer = dp_peer_get_ref_by_id(soc, peer_id, DP_MOD_ID_RX_ERR);
|
peer = dp_peer_get_ref_by_id(soc, peer_id, DP_MOD_ID_RX_ERR);
|
||||||
|
|
||||||
|
@@ -449,7 +449,7 @@ dp_rx_pn_error_handle(struct dp_soc *soc, hal_ring_desc_t ring_desc,
|
|||||||
struct dp_peer *peer;
|
struct dp_peer *peer;
|
||||||
bool peer_pn_policy = false;
|
bool peer_pn_policy = false;
|
||||||
|
|
||||||
peer_id = DP_PEER_METADATA_PEER_ID_GET(
|
peer_id = dp_rx_peer_metadata_peer_id_get(soc,
|
||||||
mpdu_desc_info->peer_meta_data);
|
mpdu_desc_info->peer_meta_data);
|
||||||
|
|
||||||
|
|
||||||
@@ -627,7 +627,8 @@ _dp_rx_bar_frame_handle(struct dp_soc *soc, qdf_nbuf_t nbuf,
|
|||||||
uint16_t peer_id;
|
uint16_t peer_id;
|
||||||
struct dp_peer *peer;
|
struct dp_peer *peer;
|
||||||
|
|
||||||
peer_id = DP_PEER_METADATA_PEER_ID_GET(mpdu_desc_info->peer_meta_data);
|
peer_id = dp_rx_peer_metadata_peer_id_get(soc,
|
||||||
|
mpdu_desc_info->peer_meta_data);
|
||||||
peer = dp_peer_get_tgt_peer_by_id(soc, peer_id, DP_MOD_ID_RX_ERR);
|
peer = dp_peer_get_tgt_peer_by_id(soc, peer_id, DP_MOD_ID_RX_ERR);
|
||||||
if (!peer)
|
if (!peer)
|
||||||
return;
|
return;
|
||||||
@@ -703,7 +704,7 @@ dp_rx_reo_err_entry_process(struct dp_soc *soc,
|
|||||||
QDF_STATUS status;
|
QDF_STATUS status;
|
||||||
bool ret;
|
bool ret;
|
||||||
|
|
||||||
peer_id = DP_PEER_METADATA_PEER_ID_GET(
|
peer_id = dp_rx_peer_metadata_peer_id_get(soc,
|
||||||
mpdu_desc_info->peer_meta_data);
|
mpdu_desc_info->peer_meta_data);
|
||||||
|
|
||||||
more_msdu_link_desc:
|
more_msdu_link_desc:
|
||||||
@@ -777,7 +778,7 @@ more_msdu_link_desc:
|
|||||||
hal_rx_tlv_populate_mpdu_desc_info(soc->hal_soc,
|
hal_rx_tlv_populate_mpdu_desc_info(soc->hal_soc,
|
||||||
qdf_nbuf_data(nbuf),
|
qdf_nbuf_data(nbuf),
|
||||||
mpdu_desc_info);
|
mpdu_desc_info);
|
||||||
peer_id = DP_PEER_METADATA_PEER_ID_GET(
|
peer_id = dp_rx_peer_metadata_peer_id_get(soc,
|
||||||
mpdu_desc_info->peer_meta_data);
|
mpdu_desc_info->peer_meta_data);
|
||||||
|
|
||||||
if (mpdu_desc_info->bar_frame)
|
if (mpdu_desc_info->bar_frame)
|
||||||
|
@@ -4687,8 +4687,6 @@ more_data:
|
|||||||
dp_tx_process_htt_completion(soc, tx_desc,
|
dp_tx_process_htt_completion(soc, tx_desc,
|
||||||
htt_tx_status, ring_id);
|
htt_tx_status, ring_id);
|
||||||
} else {
|
} else {
|
||||||
tx_desc->peer_id =
|
|
||||||
hal_tx_comp_get_peer_id(tx_comp_hal_desc);
|
|
||||||
tx_desc->tx_status =
|
tx_desc->tx_status =
|
||||||
hal_tx_comp_get_tx_status(tx_comp_hal_desc);
|
hal_tx_comp_get_tx_status(tx_comp_hal_desc);
|
||||||
tx_desc->buffer_src = buffer_src;
|
tx_desc->buffer_src = buffer_src;
|
||||||
|
@@ -1660,6 +1660,8 @@ struct dp_arch_ops {
|
|||||||
uint32_t dp_budget);
|
uint32_t dp_budget);
|
||||||
void (*tx_implicit_rbm_set)(struct dp_soc *soc, uint8_t tx_ring_id,
|
void (*tx_implicit_rbm_set)(struct dp_soc *soc, uint8_t tx_ring_id,
|
||||||
uint8_t bm_id);
|
uint8_t bm_id);
|
||||||
|
uint16_t (*dp_rx_peer_metadata_peer_id_get)(struct dp_soc *soc,
|
||||||
|
uint32_t peer_metadata);
|
||||||
|
|
||||||
/* Control Arch Ops */
|
/* Control Arch Ops */
|
||||||
QDF_STATUS (*txrx_set_vdev_param)(struct dp_soc *soc,
|
QDF_STATUS (*txrx_set_vdev_param)(struct dp_soc *soc,
|
||||||
@@ -1958,6 +1960,9 @@ struct dp_soc {
|
|||||||
/* maximum value for peer_id */
|
/* maximum value for peer_id */
|
||||||
uint32_t max_peers;
|
uint32_t max_peers;
|
||||||
|
|
||||||
|
uint32_t peer_id_shift;
|
||||||
|
uint32_t peer_id_mask;
|
||||||
|
|
||||||
/* SoC level data path statistics */
|
/* SoC level data path statistics */
|
||||||
struct dp_soc_stats stats;
|
struct dp_soc_stats stats;
|
||||||
#ifdef WLAN_SYSFS_DP_STATS
|
#ifdef WLAN_SYSFS_DP_STATS
|
||||||
|
@@ -374,6 +374,8 @@ void dp_initialize_arch_ops_li(struct dp_arch_ops *arch_ops)
|
|||||||
arch_ops->dp_rx_desc_cookie_2_va =
|
arch_ops->dp_rx_desc_cookie_2_va =
|
||||||
dp_rx_desc_cookie_2_va_li;
|
dp_rx_desc_cookie_2_va_li;
|
||||||
arch_ops->dp_rxdma_ring_sel_cfg = dp_rxdma_ring_sel_cfg_li;
|
arch_ops->dp_rxdma_ring_sel_cfg = dp_rxdma_ring_sel_cfg_li;
|
||||||
|
arch_ops->dp_rx_peer_metadata_peer_id_get =
|
||||||
|
dp_rx_peer_metadata_peer_id_get_li;
|
||||||
arch_ops->soc_cfg_attach = dp_soc_cfg_attach_li;
|
arch_ops->soc_cfg_attach = dp_soc_cfg_attach_li;
|
||||||
arch_ops->tx_implicit_rbm_set = dp_tx_implicit_rbm_set_li;
|
arch_ops->tx_implicit_rbm_set = dp_tx_implicit_rbm_set_li;
|
||||||
}
|
}
|
||||||
|
@@ -340,13 +340,13 @@ more_data:
|
|||||||
rx_bufs_reaped[rx_desc->pool_id]++;
|
rx_bufs_reaped[rx_desc->pool_id]++;
|
||||||
peer_mdata = mpdu_desc_info.peer_meta_data;
|
peer_mdata = mpdu_desc_info.peer_meta_data;
|
||||||
QDF_NBUF_CB_RX_PEER_ID(rx_desc->nbuf) =
|
QDF_NBUF_CB_RX_PEER_ID(rx_desc->nbuf) =
|
||||||
DP_PEER_METADATA_PEER_ID_GET(peer_mdata);
|
dp_rx_peer_metadata_peer_id_get_li(soc, peer_mdata);
|
||||||
QDF_NBUF_CB_RX_VDEV_ID(rx_desc->nbuf) =
|
QDF_NBUF_CB_RX_VDEV_ID(rx_desc->nbuf) =
|
||||||
DP_PEER_METADATA_VDEV_ID_GET(peer_mdata);
|
DP_PEER_METADATA_VDEV_ID_GET_LI(peer_mdata);
|
||||||
|
|
||||||
/* to indicate whether this msdu is rx offload */
|
/* to indicate whether this msdu is rx offload */
|
||||||
pkt_capture_offload =
|
pkt_capture_offload =
|
||||||
DP_PEER_METADATA_OFFLOAD_GET(peer_mdata);
|
DP_PEER_METADATA_OFFLOAD_GET_LI(peer_mdata);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* save msdu flags first, last and continuation msdu in
|
* save msdu flags first, last and continuation msdu in
|
||||||
|
@@ -78,4 +78,26 @@ struct dp_rx_desc *dp_rx_desc_cookie_2_va_li(struct dp_soc *soc,
|
|||||||
{
|
{
|
||||||
return dp_rx_cookie_2_va_rxdma_buf(soc, cookie);
|
return dp_rx_cookie_2_va_rxdma_buf(soc, cookie);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define DP_PEER_METADATA_VDEV_ID_MASK 0x003f0000
|
||||||
|
#define DP_PEER_METADATA_VDEV_ID_SHIFT 16
|
||||||
|
#define DP_PEER_METADATA_OFFLOAD_MASK 0x01000000
|
||||||
|
#define DP_PEER_METADATA_OFFLOAD_SHIFT 24
|
||||||
|
|
||||||
|
#define DP_PEER_METADATA_VDEV_ID_GET_LI(_peer_metadata) \
|
||||||
|
(((_peer_metadata) & DP_PEER_METADATA_VDEV_ID_MASK) \
|
||||||
|
>> DP_PEER_METADATA_VDEV_ID_SHIFT)
|
||||||
|
|
||||||
|
#define DP_PEER_METADATA_OFFLOAD_GET_LI(_peer_metadata) \
|
||||||
|
(((_peer_metadata) & DP_PEER_METADATA_OFFLOAD_MASK) \
|
||||||
|
>> DP_PEER_METADATA_OFFLOAD_SHIFT)
|
||||||
|
|
||||||
|
static inline uint16_t
|
||||||
|
dp_rx_peer_metadata_peer_id_get_li(struct dp_soc *soc, uint32_t peer_metadata)
|
||||||
|
{
|
||||||
|
struct htt_rx_peer_metadata_v0 *metadata =
|
||||||
|
(struct htt_rx_peer_metadata_v0 *)&peer_metadata;
|
||||||
|
|
||||||
|
return metadata->peer_id;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@@ -51,6 +51,8 @@ void dp_tx_comp_get_params_from_hal_desc_li(struct dp_soc *soc,
|
|||||||
|
|
||||||
qdf_assert_always(0);
|
qdf_assert_always(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
(*r_tx_desc)->peer_id = hal_tx_comp_get_peer_id(tx_comp_hal_desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef QCA_OL_TX_MULTIQ_SUPPORT
|
#ifdef QCA_OL_TX_MULTIQ_SUPPORT
|
||||||
|
Reference in New Issue
Block a user