diff --git a/dp/wifi3.0/dp_tx.c b/dp/wifi3.0/dp_tx.c index ce7c3d6a65..1d0614df13 100644 --- a/dp/wifi3.0/dp_tx.c +++ b/dp/wifi3.0/dp_tx.c @@ -205,14 +205,14 @@ struct dp_tx_ext_desc_elem_s *dp_tx_prepare_ext_desc(struct dp_vdev *vdev, struct dp_tx_msdu_info_s *msdu_info, uint8_t desc_pool_id) { uint8_t i; - uint8_t cached_ext_desc[HAL_TX_EXTENSION_DESC_LEN_BYTES]; + uint8_t cached_ext_desc[HAL_TX_EXT_DESC_WITH_META_DATA]; struct dp_tx_seg_info_s *seg_info; struct dp_tx_ext_desc_elem_s *msdu_ext_desc; struct dp_soc *soc = vdev->pdev->soc; /* Allocate an extension descriptor */ msdu_ext_desc = dp_tx_ext_desc_alloc(soc, desc_pool_id); - qdf_mem_zero(&cached_ext_desc[0], HAL_TX_EXTENSION_DESC_LEN_BYTES); + qdf_mem_zero(&cached_ext_desc[0], HAL_TX_EXT_DESC_WITH_META_DATA); if (!msdu_ext_desc) return NULL; @@ -934,6 +934,13 @@ qdf_nbuf_t dp_tx_send(void *vap_dev, qdf_nbuf_t nbuf) struct dp_tx_seg_info_s seg_info; struct dp_vdev *vdev = (struct dp_vdev *) vap_dev; + qdf_mem_set(&msdu_info, sizeof(msdu_info), 0x0); + qdf_mem_set(&seg_info, sizeof(seg_info), 0x0); + + QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_DEBUG, + "%s , skb %0x:%0x:%0x:%0x:%0x:%0x\n", + __func__, nbuf->data[0], nbuf->data[1], nbuf->data[2], + nbuf->data[3], nbuf->data[4], nbuf->data[5]); /* * Set Default Host TID value to invalid TID * (TID override disabled) diff --git a/dp/wifi3.0/dp_tx_desc.c b/dp/wifi3.0/dp_tx_desc.c index b0d679a028..65d923c432 100644 --- a/dp/wifi3.0/dp_tx_desc.c +++ b/dp/wifi3.0/dp_tx_desc.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 The Linux Foundation. All rights reserved. + * Copyright (c) 2016-2017 The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -158,7 +158,7 @@ QDF_STATUS dp_tx_ext_desc_pool_alloc(struct dp_soc *soc, uint8_t pool_id, QDF_STATUS status; /* Coherent tx extension descriptor alloc */ - soc->tx_ext_desc[pool_id].elem_size = HAL_TX_EXTENSION_DESC_LEN_BYTES; + soc->tx_ext_desc[pool_id].elem_size = HAL_TX_EXT_DESC_WITH_META_DATA; soc->tx_ext_desc[pool_id].elem_count = num_elem; qdf_mem_multi_pages_alloc(soc->osdev, &soc->tx_ext_desc[pool_id].desc_pages, diff --git a/hal/wifi3.0/hal_tx.h b/hal/wifi3.0/hal_tx.h index 460550850b..cf3cc7511e 100644 --- a/hal/wifi3.0/hal_tx.h +++ b/hal/wifi3.0/hal_tx.h @@ -70,6 +70,10 @@ do { \ #define HAL_TX_COMPLETION_DESC_LEN_DWORDS (NUM_OF_DWORDS_WBM_RELEASE_RING) #define HAL_TX_COMPLETION_DESC_LEN_BYTES (NUM_OF_DWORDS_WBM_RELEASE_RING*4) +#define HTT_META_HEADER_LEN_BYTES 64 +#define HAL_TX_EXT_DESC_WITH_META_DATA \ + (HTT_META_HEADER_LEN_BYTES + HAL_TX_EXTENSION_DESC_LEN_BYTES) + /* Length of WBM release ring without the status words */ #define HAL_TX_COMPLETION_DESC_BASE_LEN 12 @@ -698,7 +702,7 @@ static inline void hal_tx_ext_desc_sync(uint8_t *desc_cached, uint8_t *hw_desc) { qdf_mem_copy(&hw_desc[0], &desc_cached[0], - HAL_TX_EXTENSION_DESC_LEN_BYTES); + HAL_TX_EXT_DESC_WITH_META_DATA); } /**