mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-11 23:24:22 -04:00
qcacmn: copy peer meta data from reo descriptor to RX TLV
Change-Id: Iecb573d457914a53753604487e89e399bb814c36
This commit is contained in:
parent
bac753d968
commit
bb3bbcd90d
2 changed files with 50 additions and 22 deletions
|
|
@ -290,6 +290,12 @@ dp_get_vdev_from_peer(struct dp_soc *soc,
|
|||
}
|
||||
return vdev;
|
||||
}
|
||||
/*
|
||||
* In case of LFR, this is an empty inline function
|
||||
*/
|
||||
static inline void dp_rx_peer_validity_check(struct dp_peer *peer)
|
||||
{
|
||||
}
|
||||
#else
|
||||
static inline struct dp_vdev *
|
||||
dp_get_vdev_from_peer(struct dp_soc *soc,
|
||||
|
|
@ -307,6 +313,14 @@ dp_get_vdev_from_peer(struct dp_soc *soc,
|
|||
return peer->vdev;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Assert if PEER is NULL
|
||||
*/
|
||||
static inline void dp_rx_peer_validity_check(struct dp_peer *peer)
|
||||
{
|
||||
qdf_assert_always(peer);
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
|
@ -846,7 +860,7 @@ dp_rx_process(struct dp_intr *int_ctx, void *hal_ring, uint32_t quota)
|
|||
struct hal_rx_mpdu_desc_info mpdu_desc_info;
|
||||
struct hal_rx_msdu_desc_info msdu_desc_info;
|
||||
enum hal_reo_error_status error;
|
||||
static uint32_t peer_mdata;
|
||||
uint32_t peer_mdata;
|
||||
uint8_t *rx_tlv_hdr;
|
||||
uint32_t rx_bufs_reaped[MAX_PDEV_CNT] = { 0 };
|
||||
uint32_t sgi, mcs, tid, nss, bw, reception_type, pkt_type;
|
||||
|
|
@ -933,6 +947,9 @@ dp_rx_process(struct dp_intr *int_ctx, void *hal_ring, uint32_t quota)
|
|||
peer_id = DP_PEER_METADATA_PEER_ID_GET(
|
||||
mpdu_desc_info.peer_meta_data);
|
||||
|
||||
hal_rx_mpdu_peer_meta_data_set(qdf_nbuf_data(rx_desc->nbuf),
|
||||
mpdu_desc_info.peer_meta_data);
|
||||
|
||||
peer = dp_peer_find_by_id(soc, peer_id);
|
||||
|
||||
vdev = dp_get_vdev_from_peer(soc, peer_id, peer,
|
||||
|
|
@ -1089,33 +1106,19 @@ done:
|
|||
}
|
||||
}
|
||||
|
||||
if (qdf_nbuf_is_chfrag_start(nbuf)) {
|
||||
peer_mdata = hal_rx_mpdu_peer_meta_data_get
|
||||
(rx_tlv_hdr);
|
||||
}
|
||||
|
||||
peer_mdata = hal_rx_mpdu_peer_meta_data_get(rx_tlv_hdr);
|
||||
peer_id = DP_PEER_METADATA_PEER_ID_GET(peer_mdata);
|
||||
peer = dp_peer_find_by_id(soc, peer_id);
|
||||
|
||||
/* TODO */
|
||||
/*
|
||||
* In case of roaming peer object may not be
|
||||
* immediately available -- need to handle this
|
||||
* Cannot drop these packets right away.
|
||||
* This is a redundant sanity check, Ideally peer
|
||||
* should never be NULL here. if for any reason it
|
||||
* is NULL we will assert.
|
||||
* Do nothing for LFR case.
|
||||
*/
|
||||
/* Peer lookup failed */
|
||||
if (!peer && !vdev) {
|
||||
dp_rx_process_invalid_peer(soc, nbuf);
|
||||
DP_STATS_INC_PKT(soc, rx.err.rx_invalid_peer, 1,
|
||||
qdf_nbuf_len(nbuf));
|
||||
/* Drop & free packet */
|
||||
qdf_nbuf_free(nbuf);
|
||||
dp_rx_peer_validity_check(peer);
|
||||
|
||||
/* Statistics */
|
||||
continue;
|
||||
}
|
||||
|
||||
if (peer && qdf_unlikely(peer->bss_peer)) {
|
||||
if (qdf_unlikely(peer->bss_peer)) {
|
||||
QDF_TRACE(QDF_MODULE_ID_DP,
|
||||
QDF_TRACE_LEVEL_INFO,
|
||||
FL("received pkt with same src MAC"));
|
||||
|
|
|
|||
|
|
@ -687,6 +687,31 @@ hal_rx_mpdu_peer_meta_data_get(uint8_t *buf)
|
|||
return peer_meta_data;
|
||||
}
|
||||
|
||||
#define HAL_RX_MPDU_PEER_META_DATA_SET(_rx_mpdu_info, peer_mdata) \
|
||||
((*(((uint32_t *)_rx_mpdu_info) + \
|
||||
(RX_MPDU_INFO_8_PEER_META_DATA_OFFSET >> 2))) = \
|
||||
(peer_mdata << RX_MPDU_INFO_8_PEER_META_DATA_LSB) & \
|
||||
RX_MPDU_INFO_8_PEER_META_DATA_MASK)
|
||||
|
||||
/*
|
||||
* @ hal_rx_mpdu_peer_meta_data_set: set peer meta data in RX mpdu start tlv
|
||||
*
|
||||
* @ buf: rx_tlv_hdr of the received packet
|
||||
* @ peer_mdata: peer meta data to be set.
|
||||
* @ Return: void
|
||||
*/
|
||||
static inline void
|
||||
hal_rx_mpdu_peer_meta_data_set(uint8_t *buf, uint32_t peer_mdata)
|
||||
{
|
||||
struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)buf;
|
||||
struct rx_mpdu_start *mpdu_start =
|
||||
&pkt_tlvs->mpdu_start_tlv.rx_mpdu_start;
|
||||
|
||||
struct rx_mpdu_info *mpdu_info = &mpdu_start->rx_mpdu_info_details;
|
||||
|
||||
HAL_RX_MPDU_PEER_META_DATA_SET(mpdu_info, peer_mdata);
|
||||
}
|
||||
|
||||
#if defined(WCSS_VERSION) && \
|
||||
((defined(CONFIG_WIN) && (WCSS_VERSION > 81)) || \
|
||||
(defined(CONFIG_MCL) && (WCSS_VERSION >= 72)))
|
||||
|
|
|
|||
Loading…
Reference in a new issue