qcacmn: Rx optimizations to improve small pkt perf

basically tried reading peer_id from peer structure
to avoid 1 cache-line miss per pkt and access mac address
from frame data for WDS only if WDS condition is valid.
The other optimization is to avoid accessing queue_mapping
field of skb for skb received which is at 140 offset
This again helps to avoid i cache miss.
Another place is to do a memcpy only when we intend to
add an ast entry.

Change-Id: I7e328060c505bc21419d045e77329c2cda9e3644
CRs-fixed: 2388857
This commit is contained in:
Tallapragada Kalyan
2019-05-02 13:22:34 +05:30
کامیت شده توسط nshrivas
والد 5bcc30f51c
کامیت 9e4b36fd89
3فایلهای تغییر یافته به همراه28 افزوده شده و 20 حذف شده

مشاهده پرونده

@@ -1386,15 +1386,11 @@ static void dp_rx_msdu_stats_update(struct dp_soc *soc,
struct cdp_tid_rx_stats *tid_stats)
{
bool is_ampdu, is_not_amsdu;
uint16_t peer_id;
uint32_t sgi, mcs, tid, nss, bw, reception_type, pkt_type;
struct dp_vdev *vdev = peer->vdev;
qdf_ether_header_t *eh;
uint16_t msdu_len = QDF_NBUF_CB_RX_PKT_LEN(nbuf);
peer_id = DP_PEER_METADATA_PEER_ID_GET(
hal_rx_mpdu_peer_meta_data_get(rx_tlv_hdr));
is_not_amsdu = qdf_nbuf_is_rx_chfrag_start(nbuf) &
qdf_nbuf_is_rx_chfrag_end(nbuf);
@@ -1481,7 +1477,7 @@ static void dp_rx_msdu_stats_update(struct dp_soc *soc,
return;
dp_wdi_event_handler(WDI_EVENT_UPDATE_DP_STATS, vdev->pdev->soc,
&peer->stats, peer_id,
&peer->stats, peer->peer_ids[0],
UPDATE_PEER_STATS,
vdev->pdev->pdev_id);
#endif
@@ -2105,8 +2101,6 @@ done:
if (soc->process_rx_status)
dp_rx_cksum_offload(vdev->pdev, nbuf, rx_tlv_hdr);
dp_set_rx_queue(nbuf, ring_id);
/* Update the protocol tag in SKB based on CCE metadata */
dp_rx_update_protocol_tag(soc, vdev, nbuf, rx_tlv_hdr,
reo_ring_num, false, true);