mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-12 07:37:31 -04:00
qcacmn: Fix rx packet queue processsing
- Ensure the head and tail pointers are reset after processing the packets on each vdev - Ensure the network buffer is null terminated when processing the null queue Change-Id: I7bfab46b7fc6054e782f7f1fc09dd56a58e46a4d CRs-Fixed: 2001835
This commit is contained in:
parent
ca0956bc79
commit
bda02dc9c2
2 changed files with 14 additions and 4 deletions
|
|
@ -194,8 +194,6 @@ dp_rx_process(struct dp_soc *soc, void *hal_ring, uint32_t quota)
|
|||
void *ring_desc;
|
||||
struct dp_rx_desc *rx_desc;
|
||||
qdf_nbuf_t nbuf;
|
||||
qdf_nbuf_t deliver_list_head = NULL;
|
||||
qdf_nbuf_t deliver_list_tail = NULL;
|
||||
union dp_rx_desc_list_elem_t *head = NULL;
|
||||
union dp_rx_desc_list_elem_t *tail = NULL;
|
||||
uint32_t rx_bufs_used = 0, rx_buf_cookie, l2_hdr_offset;
|
||||
|
|
@ -311,6 +309,8 @@ done:
|
|||
}
|
||||
|
||||
TAILQ_FOREACH(vdev, &pdev->vdev_list, vdev_list_elem) {
|
||||
qdf_nbuf_t deliver_list_head = NULL;
|
||||
qdf_nbuf_t deliver_list_tail = NULL;
|
||||
|
||||
while ((nbuf = qdf_nbuf_queue_remove(&vdev->rxq))) {
|
||||
rx_tlv_hdr = qdf_nbuf_data(nbuf);
|
||||
|
|
|
|||
|
|
@ -261,7 +261,7 @@ dp_rx_null_q_desc_handle(struct dp_soc *soc, void *ring_desc,
|
|||
struct dp_pdev *pdev0;
|
||||
struct dp_vdev *vdev0;
|
||||
uint32_t tid = 0;
|
||||
uint16_t peer_id;
|
||||
uint16_t peer_id = 0xFFFF;
|
||||
struct dp_peer *peer = NULL;
|
||||
|
||||
rx_buf_cookie = HAL_RX_WBM_BUF_COOKIE_GET(ring_desc);
|
||||
|
|
@ -325,6 +325,16 @@ dp_rx_null_q_desc_handle(struct dp_soc *soc, void *ring_desc,
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef QCA_WIFI_NAPIER_EMULATION /* Debug code, remove later */
|
||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
|
||||
"%s: p_id %d msdu_len %d hdr_off %d",
|
||||
__func__, peer_id, msdu_len, l2_hdr_offset);
|
||||
|
||||
print_hex_dump(KERN_ERR,
|
||||
"\t Pkt Data:", DUMP_PREFIX_NONE, 32, 4,
|
||||
qdf_nbuf_data(nbuf), 128, false);
|
||||
#endif /* NAPIER_EMULATION */
|
||||
|
||||
pdev0 = soc->pdev_list[0];/* Hard code 0th elem */
|
||||
|
||||
if (pdev0) {
|
||||
|
|
@ -333,7 +343,7 @@ dp_rx_null_q_desc_handle(struct dp_soc *soc, void *ring_desc,
|
|||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_INFO,
|
||||
FL("pdev0 %p vdev0 %p osif_rx %p"), pdev0, vdev0,
|
||||
vdev0->osif_rx);
|
||||
|
||||
qdf_nbuf_set_next(nbuf, NULL);
|
||||
vdev0->osif_rx(vdev0->osif_vdev, nbuf);
|
||||
} else {
|
||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
|
||||
|
|
|
|||
Loading…
Reference in a new issue