qcacld-3.0: Add TSO magic cookie and freelist flag to last tso element

Fix to add TSO magic cookie and freelist flag to last tso element during
ol_tso_seg_list_init() to avoid any crash during WIFI OFF.

CRs-Fixed: 1111760
Change-Id: I4504a7f4e9ecfe99337a4f544bc2d3cc8a8c3a27
This commit is contained in:
Poddar, Siddarth
2017-01-16 14:43:27 +05:30
committed by qcabuildsw
parent 0b8c6c5c3a
commit b92c8ecf2e

View File

@@ -1800,6 +1800,8 @@ void ol_tso_seg_list_init(struct ol_txrx_pdev_t *pdev, uint32_t num_seg)
struct qdf_tso_seg_elem_t *c_element; struct qdf_tso_seg_elem_t *c_element;
c_element = qdf_mem_malloc(sizeof(struct qdf_tso_seg_elem_t)); c_element = qdf_mem_malloc(sizeof(struct qdf_tso_seg_elem_t));
c_element->on_freelist = 1;
c_element->cookie = TSO_SEG_MAGIC_COOKIE;
pdev->tso_seg_pool.freelist = c_element; pdev->tso_seg_pool.freelist = c_element;
for (i = 0; i < (num_seg - 1); i++) { for (i = 0; i < (num_seg - 1); i++) {
if (qdf_unlikely(!c_element)) { if (qdf_unlikely(!c_element)) {
@@ -1812,11 +1814,11 @@ void ol_tso_seg_list_init(struct ol_txrx_pdev_t *pdev, uint32_t num_seg)
return; return;
} }
/* set the freelist bit and magic cookie*/ /* set the freelist bit and magic cookie*/
c_element->on_freelist = 1;
c_element->cookie = TSO_SEG_MAGIC_COOKIE;
c_element->next = c_element->next =
qdf_mem_malloc(sizeof(struct qdf_tso_seg_elem_t)); qdf_mem_malloc(sizeof(struct qdf_tso_seg_elem_t));
c_element = c_element->next; c_element = c_element->next;
c_element->on_freelist = 1;
c_element->cookie = TSO_SEG_MAGIC_COOKIE;
c_element->next = NULL; c_element->next = NULL;
} }
pdev->tso_seg_pool.pool_size = num_seg; pdev->tso_seg_pool.pool_size = num_seg;