From a4cd297f848c4201e6d800b3f074ab0ce71bb3bd Mon Sep 17 00:00:00 2001 From: Kiran Venkatappa Date: Mon, 17 Jul 2017 21:42:36 +0530 Subject: [PATCH] qcacmn: Fix ME buf pool initialization Free list created from ME buf pool expects next pointer to be first element in the me buf. Change me buf structure to keep next pointer as the first element. Also, Fix offsets in ME free list creation. Change-Id: I2dffd0c04ba8514d0d1a5f5e6b14380902d1ec06 CRs-Fixed: 2077675 --- dp/wifi3.0/dp_tx_me.c | 3 +-- dp/wifi3.0/dp_types.h | 6 ++++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/dp/wifi3.0/dp_tx_me.c b/dp/wifi3.0/dp_tx_me.c index 2c5d786abeaf..38e182b3ed94 100644 --- a/dp/wifi3.0/dp_tx_me.c +++ b/dp/wifi3.0/dp_tx_me.c @@ -72,8 +72,7 @@ dp_tx_me_init(struct dp_pdev *pdev) p = pdev->me_buf.freelist; for (i = 0; i < num_pool_elems-1; i++) { p->next = (struct dp_tx_me_buf_t *) - ((char *)p + pdev->me_buf.size + - sizeof(struct dp_tx_me_buf_t)); + ((char *)p + pdev->me_buf.size); p = p->next; } p->next = NULL; diff --git a/dp/wifi3.0/dp_types.h b/dp/wifi3.0/dp_types.h index 201bfe77830b..f350f11eeea3 100644 --- a/dp/wifi3.0/dp_types.h +++ b/dp/wifi3.0/dp_types.h @@ -1140,11 +1140,13 @@ struct dp_invalid_peer_msg { /* * dp_tx_me_buf_t: ME buffer - * data: Destination Mac address * next: pointer to next buffer + * data: Destination Mac address */ struct dp_tx_me_buf_t { - uint8_t data[DP_MAC_ADDR_LEN]; + /* Note: ME buf pool initialization logic expects next pointer to + * be the first element. Dont add anything before next */ struct dp_tx_me_buf_t *next; + uint8_t data[DP_MAC_ADDR_LEN]; }; #endif /* _DP_TYPES_H_ */