From 41e34b1ca3a18cb4bea1ae3d010f5a638719fbb5 Mon Sep 17 00:00:00 2001 From: "Pamidipati, Vijay" Date: Sun, 2 Apr 2017 23:23:41 +0530 Subject: [PATCH 1/2] qcacmn: Fix the position of qdf_nbuf_map in Tx DP Move the qdf_nbuf_map to correct position before align_pad is computed for mesh mode header addition Change-Id: Ia62137daea2ab09e93a86c4b9da681f5591ce947 CRs-Fixes: 2004658 --- dp/wifi3.0/dp_tx.c | 61 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 46 insertions(+), 15 deletions(-) diff --git a/dp/wifi3.0/dp_tx.c b/dp/wifi3.0/dp_tx.c index d290d2d4f7a9..a5f58b2c0b49 100644 --- a/dp/wifi3.0/dp_tx.c +++ b/dp/wifi3.0/dp_tx.c @@ -126,8 +126,30 @@ dp_tx_desc_release(struct dp_tx_desc_s *tx_desc, uint8_t desc_pool_id) * dp_tx_htt_metadata_prepare() - Prepare HTT metadata for special frames * @vdev: DP vdev Handle * @nbuf: skb - * @align_pad: Alignment Pad bytes to be added in frame header before adding HTT - * metadata + * @align_pad: Alignment Pad bytes to be pushed in headroom before adding + * HTT metadata + * + * |-----------------------------| + * | | + * |-----------------------------| <-----Buffer Pointer Address given + * | | ^ in HW descriptor (aligned) + * | | | + * | HTT Metadata | | + * | | | + * | | | Packet Offset given in descriptor + * | | | + * | | | + * |-----------------------------| | + * | Alignment Pad | v + * |-----------------------------| <----- Actual buffer start address + * | SKB Data | (Unaligned) + * | | + * | | + * | | + * | | + * | | + * | | + * |-----------------------------| * * Prepares and fills HTT metadata in the frame pre-header for special frames * that should be transmitted using varying transmit parameters. @@ -157,15 +179,25 @@ static uint8_t dp_tx_prepare_htt_metadata(struct dp_vdev *vdev, qdf_nbuf_t nbuf, htt_desc_size = sizeof(struct htt_tx_msdu_desc_ext2_t); if (vdev->mesh_vdev) { - /* Fill and add HTT metaheader */ hdr = qdf_nbuf_push_head(nbuf, htt_desc_size + align_pad); - qdf_mem_copy(hdr, desc_ext, htt_desc_size); + if (qdf_unlikely(QDF_STATUS_SUCCESS != + qdf_nbuf_map_nbytes_single( + vdev->pdev->soc->osdev, nbuf, + QDF_DMA_TO_DEVICE, + (htt_desc_size + align_pad)))) { + + /* Handle failure */ + QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR, + "htt qdf_nbuf_map failed\n"); + + return 0; + } + } else if (vdev->opmode == wlan_op_mode_ocb) { /* Todo - Add support for DSRC */ - } return htt_desc_size; @@ -183,7 +215,6 @@ static void dp_tx_prepare_tso_ext_desc(struct qdf_tso_seg_t *tso_seg, void *ext_desc) { uint8_t num_frag; - uint32_t *buf_ptr; uint32_t tso_flags; /* @@ -403,6 +434,15 @@ struct dp_tx_desc_s *dp_tx_prepare_desc_single(struct dp_vdev *vdev, tx_desc->pdev = pdev; tx_desc->msdu_ext_desc = NULL; + if (qdf_unlikely(QDF_STATUS_SUCCESS != + qdf_nbuf_map(soc->osdev, nbuf, + QDF_DMA_TO_DEVICE))) { + /* Handle failure */ + QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR, + "qdf_nbuf_map failed\n"); + goto failure; + } + align_pad = ((unsigned long) qdf_nbuf_mapped_paddr_get(nbuf)) & 0x7; tx_desc->pkt_offset = align_pad; @@ -439,15 +479,6 @@ struct dp_tx_desc_s *dp_tx_prepare_desc_single(struct dp_vdev *vdev, qdf_atomic_inc(&pdev->num_tx_exception); } - if (qdf_unlikely(QDF_STATUS_SUCCESS != - qdf_nbuf_map(soc->osdev, nbuf, - QDF_DMA_TO_DEVICE))) { - /* Handle failure */ - QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR, - "qdf_nbuf_map failed\n"); - goto failure; - } - return tx_desc; failure: From 7f093182355074b0a32bb242c72ab1fb153d8d33 Mon Sep 17 00:00:00 2001 From: Tushnim Bhattacharyya Date: Tue, 4 Apr 2017 12:03:25 -0700 Subject: [PATCH 2/2] qcacmn: Fix checkpatch warning in policy manager component Fix checkpatch warning in policy manager component. Change-Id: Ibef1681f3dc8e17b0d1d7bcde0d7dbea5526eedf CRs-Fixed: 2009818 --- umac/cmn_services/policy_mgr/inc/wlan_policy_mgr_api.h | 6 +++--- umac/cmn_services/policy_mgr/src/wlan_policy_mgr_i.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/umac/cmn_services/policy_mgr/inc/wlan_policy_mgr_api.h b/umac/cmn_services/policy_mgr/inc/wlan_policy_mgr_api.h index cc728643c0e5..3eb4a5815880 100644 --- a/umac/cmn_services/policy_mgr/inc/wlan_policy_mgr_api.h +++ b/umac/cmn_services/policy_mgr/inc/wlan_policy_mgr_api.h @@ -757,12 +757,12 @@ struct policy_mgr_sme_cbacks { uint8_t new_nss, policy_mgr_nss_update_cback cback, uint8_t next_action, struct wlan_objmgr_psoc *psoc, enum policy_mgr_conn_update_reason reason); - QDF_STATUS (*sme_change_mcc_beacon_interval) (uint8_t session_id); - QDF_STATUS (*sme_get_ap_channel_from_scan) ( + QDF_STATUS (*sme_change_mcc_beacon_interval)(uint8_t session_id); + QDF_STATUS (*sme_get_ap_channel_from_scan)( void *roam_profile, void **scan_cache, uint8_t *channel); - QDF_STATUS (*sme_scan_result_purge) ( + QDF_STATUS (*sme_scan_result_purge)( void *scan_result); }; diff --git a/umac/cmn_services/policy_mgr/src/wlan_policy_mgr_i.h b/umac/cmn_services/policy_mgr/src/wlan_policy_mgr_i.h index 67e69f072bfe..75a2c3d3f164 100644 --- a/umac/cmn_services/policy_mgr/src/wlan_policy_mgr_i.h +++ b/umac/cmn_services/policy_mgr/src/wlan_policy_mgr_i.h @@ -249,7 +249,7 @@ extern enum policy_mgr_conc_next_action * @hw_mode_change_in_progress: This is to track if HW mode * change is in progress * @enable_mcc_adaptive_scheduler: Enable MCC adaptive scheduler - * value from INI + * value from INI */ struct policy_mgr_psoc_priv_obj { struct wlan_objmgr_psoc *psoc;