qcacmn: Support RX T-put simulation for KIWI
Duplicate X times of RX packet before delivering to stack, if OTA RX T-put is 100 Mbps and try to simulate 200 Mbps RX T-put, duplicate extra 1 time RX packets, this is aimed to test driver/stack RX capability. Change-Id: Iaf4db05d0ec0e0cda5fac19fa63b9d3133270847 CRs-Fixed: 3132743
This commit is contained in:

committed by
Madan Koyyalamudi

szülő
ac49d3b35a
commit
9b323ded29
@@ -816,25 +816,10 @@ done:
|
|||||||
nbuf = next;
|
nbuf = next;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (qdf_likely(deliver_list_head)) {
|
DP_RX_DELIVER_TO_STACK(soc, vdev, txrx_peer, peer_id,
|
||||||
if (qdf_likely(txrx_peer)) {
|
pkt_capture_offload,
|
||||||
dp_rx_deliver_to_pkt_capture(soc, vdev->pdev, peer_id,
|
deliver_list_head,
|
||||||
pkt_capture_offload,
|
deliver_list_tail);
|
||||||
deliver_list_head);
|
|
||||||
if (!pkt_capture_offload)
|
|
||||||
dp_rx_deliver_to_stack(soc, vdev, txrx_peer,
|
|
||||||
deliver_list_head,
|
|
||||||
deliver_list_tail);
|
|
||||||
} else {
|
|
||||||
nbuf = deliver_list_head;
|
|
||||||
while (nbuf) {
|
|
||||||
next = nbuf->next;
|
|
||||||
nbuf->next = NULL;
|
|
||||||
dp_rx_deliver_to_stack_no_peer(soc, nbuf);
|
|
||||||
nbuf = next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (qdf_likely(txrx_peer))
|
if (qdf_likely(txrx_peer))
|
||||||
dp_txrx_peer_unref_delete(txrx_ref_handle, DP_MOD_ID_RX);
|
dp_txrx_peer_unref_delete(txrx_ref_handle, DP_MOD_ID_RX);
|
||||||
|
@@ -2618,4 +2618,98 @@ dp_peer_rx_reorder_queue_setup(struct dp_soc *soc, struct dp_peer *peer,
|
|||||||
peer, tid,
|
peer, tid,
|
||||||
ba_window_size);
|
ba_window_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline
|
||||||
|
void dp_rx_nbuf_list_deliver(struct dp_soc *soc,
|
||||||
|
struct dp_vdev *vdev,
|
||||||
|
struct dp_txrx_peer *txrx_peer,
|
||||||
|
uint16_t peer_id,
|
||||||
|
uint8_t pkt_capture_offload,
|
||||||
|
qdf_nbuf_t deliver_list_head,
|
||||||
|
qdf_nbuf_t deliver_list_tail)
|
||||||
|
{
|
||||||
|
qdf_nbuf_t nbuf, next;
|
||||||
|
|
||||||
|
if (qdf_likely(deliver_list_head)) {
|
||||||
|
if (qdf_likely(txrx_peer)) {
|
||||||
|
dp_rx_deliver_to_pkt_capture(soc, vdev->pdev, peer_id,
|
||||||
|
pkt_capture_offload,
|
||||||
|
deliver_list_head);
|
||||||
|
if (!pkt_capture_offload)
|
||||||
|
dp_rx_deliver_to_stack(soc, vdev, txrx_peer,
|
||||||
|
deliver_list_head,
|
||||||
|
deliver_list_tail);
|
||||||
|
} else {
|
||||||
|
nbuf = deliver_list_head;
|
||||||
|
while (nbuf) {
|
||||||
|
next = nbuf->next;
|
||||||
|
nbuf->next = NULL;
|
||||||
|
dp_rx_deliver_to_stack_no_peer(soc, nbuf);
|
||||||
|
nbuf = next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef DP_TX_RX_TPUT_SIMULATE
|
||||||
|
/*
|
||||||
|
* Change this macro value to simulate different RX T-put,
|
||||||
|
* if OTA is 100 Mbps, to simulate 200 Mbps, then multiplication factor
|
||||||
|
* is 2, set macro value as 1 (multiplication factor - 1).
|
||||||
|
*/
|
||||||
|
#define DP_RX_PKTS_DUPLICATE_CNT 0
|
||||||
|
static inline
|
||||||
|
void dp_rx_nbuf_list_dup_deliver(struct dp_soc *soc,
|
||||||
|
struct dp_vdev *vdev,
|
||||||
|
struct dp_txrx_peer *txrx_peer,
|
||||||
|
uint16_t peer_id,
|
||||||
|
uint8_t pkt_capture_offload,
|
||||||
|
qdf_nbuf_t ori_list_head,
|
||||||
|
qdf_nbuf_t ori_list_tail)
|
||||||
|
{
|
||||||
|
qdf_nbuf_t new_skb = NULL;
|
||||||
|
qdf_nbuf_t new_list_head = NULL;
|
||||||
|
qdf_nbuf_t new_list_tail = NULL;
|
||||||
|
qdf_nbuf_t nbuf = NULL;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < DP_RX_PKTS_DUPLICATE_CNT; i++) {
|
||||||
|
nbuf = ori_list_head;
|
||||||
|
new_list_head = NULL;
|
||||||
|
new_list_tail = NULL;
|
||||||
|
|
||||||
|
while (nbuf) {
|
||||||
|
new_skb = qdf_nbuf_copy(nbuf);
|
||||||
|
if (qdf_likely(new_skb))
|
||||||
|
DP_RX_LIST_APPEND(new_list_head,
|
||||||
|
new_list_tail,
|
||||||
|
new_skb);
|
||||||
|
else
|
||||||
|
dp_err("copy skb failed");
|
||||||
|
|
||||||
|
nbuf = qdf_nbuf_next(nbuf);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* deliver the copied nbuf list */
|
||||||
|
dp_rx_nbuf_list_deliver(soc, vdev, txrx_peer, peer_id,
|
||||||
|
pkt_capture_offload,
|
||||||
|
new_list_head,
|
||||||
|
new_list_tail);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* deliver the original skb_list */
|
||||||
|
dp_rx_nbuf_list_deliver(soc, vdev, txrx_peer, peer_id,
|
||||||
|
pkt_capture_offload,
|
||||||
|
ori_list_head,
|
||||||
|
ori_list_tail);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define DP_RX_DELIVER_TO_STACK dp_rx_nbuf_list_dup_deliver
|
||||||
|
|
||||||
|
#else /* !DP_TX_RX_TPUT_SIMULATE */
|
||||||
|
|
||||||
|
#define DP_RX_DELIVER_TO_STACK dp_rx_nbuf_list_deliver
|
||||||
|
|
||||||
|
#endif /* DP_TX_RX_TPUT_SIMULATE */
|
||||||
|
|
||||||
#endif /* _DP_RX_H */
|
#endif /* _DP_RX_H */
|
||||||
|
@@ -922,25 +922,10 @@ done:
|
|||||||
nbuf = next;
|
nbuf = next;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (qdf_likely(deliver_list_head)) {
|
DP_RX_DELIVER_TO_STACK(soc, vdev, txrx_peer, peer_id,
|
||||||
if (qdf_likely(txrx_peer)) {
|
pkt_capture_offload,
|
||||||
dp_rx_deliver_to_pkt_capture(soc, vdev->pdev, peer_id,
|
deliver_list_head,
|
||||||
pkt_capture_offload,
|
deliver_list_tail);
|
||||||
deliver_list_head);
|
|
||||||
if (!pkt_capture_offload)
|
|
||||||
dp_rx_deliver_to_stack(soc, vdev, txrx_peer,
|
|
||||||
deliver_list_head,
|
|
||||||
deliver_list_tail);
|
|
||||||
} else {
|
|
||||||
nbuf = deliver_list_head;
|
|
||||||
while (nbuf) {
|
|
||||||
next = nbuf->next;
|
|
||||||
nbuf->next = NULL;
|
|
||||||
dp_rx_deliver_to_stack_no_peer(soc, nbuf);
|
|
||||||
nbuf = next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (qdf_likely(txrx_peer))
|
if (qdf_likely(txrx_peer))
|
||||||
dp_txrx_peer_unref_delete(txrx_ref_handle, DP_MOD_ID_RX);
|
dp_txrx_peer_unref_delete(txrx_ref_handle, DP_MOD_ID_RX);
|
||||||
|
Reference in New Issue
Block a user