浏览代码

qcacmn: Increase size of MSDU EXT DESC

Size of MSDU Extension descriptor increased to accomodate HTT Meta data.

Change-Id: Iaaf87f2f184ec9f144501b9a508bf91d08cad791
CRs-Fixed: 1114769
Ishank Jain 8 年之前
父节点
当前提交
2f81e9605e
共有 3 个文件被更改,包括 16 次插入5 次删除
  1. 9 2
      dp/wifi3.0/dp_tx.c
  2. 2 2
      dp/wifi3.0/dp_tx_desc.c
  3. 5 1
      hal/wifi3.0/hal_tx.h

+ 9 - 2
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)

+ 2 - 2
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,

+ 5 - 1
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);
 }
 
 /**