From ab551a63c00abd61aab91deae317930ccef685ac Mon Sep 17 00:00:00 2001 From: chenguo Date: Fri, 3 Nov 2017 18:20:29 +0800 Subject: [PATCH 1/3] qcacmn: Remove duplicated API call In the main data RX path, the API of geting MSDU description is called duplciately repeatly. Because the input parameter is not changed, unnecessary function calling is existed. Remove the unnecessary API calling. CRs-Fixed: 2137776 Change-Id: I11f3d83dd4045f6a353ca6b9b23c188e582672a6 --- dp/wifi3.0/dp_rx.c | 1 - 1 file changed, 1 deletion(-) diff --git a/dp/wifi3.0/dp_rx.c b/dp/wifi3.0/dp_rx.c index d088a965eca3..a4e7761e626e 100644 --- a/dp/wifi3.0/dp_rx.c +++ b/dp/wifi3.0/dp_rx.c @@ -1048,7 +1048,6 @@ dp_rx_process(struct dp_intr *int_ctx, void *hal_ring, uint32_t quota) DP_STATS_INCC(peer, rx.ampdu_cnt, 1, ampdu_flag); DP_STATS_INCC(peer, rx.non_ampdu_cnt, 1, !(ampdu_flag)); - hal_rx_msdu_desc_info_get(ring_desc, &msdu_desc_info); amsdu_flag = ((msdu_desc_info.msdu_flags & HAL_MSDU_F_FIRST_MSDU_IN_MPDU) && (msdu_desc_info.msdu_flags & From 428a19b59400582d7eb07a48046658a7240faf59 Mon Sep 17 00:00:00 2001 From: Anirban Sirkhell Date: Tue, 26 Sep 2017 18:43:06 +0530 Subject: [PATCH 2/3] qcacmn: Add pdev param to set firmware to use lower chains for tx Add new pdev param with which firmware can be set to use a lower number of chains without doing a reset. In response to this firmware's ratecontrol will select only rates which can be sent using a lower number of chains, and set the h/w tx descpriptor's chain select to whatever value has been configured using this command. CRs-Fixed: 2123206 Change-Id: Ice713393958c2c2acedba0fe2e9354f3fe3bee75 --- dp/inc/cdp_txrx_stats_struct.h | 1 + wmi/inc/wmi_unified_param.h | 1 + wmi/src/wmi_unified_non_tlv.c | 2 ++ 3 files changed, 4 insertions(+) diff --git a/dp/inc/cdp_txrx_stats_struct.h b/dp/inc/cdp_txrx_stats_struct.h index ee94f17683ac..9fd503520362 100644 --- a/dp/inc/cdp_txrx_stats_struct.h +++ b/dp/inc/cdp_txrx_stats_struct.h @@ -502,6 +502,7 @@ enum _ol_ath_param_t { OL_ATH_PARAM_NOMINAL_NOISEFLOOR = 358, OL_ATH_PARAM_CHAN_INFO = 359, OL_ATH_PARAM_ACS_RANK = 360, + OL_ATH_PARAM_TXCHAINSOFT = 361, }; /* Enumeration of PDEV Configuration parameter */ diff --git a/wmi/inc/wmi_unified_param.h b/wmi/inc/wmi_unified_param.h index 0488edfffb7f..54a4be99aec0 100644 --- a/wmi/inc/wmi_unified_param.h +++ b/wmi/inc/wmi_unified_param.h @@ -5550,6 +5550,7 @@ typedef enum { wmi_pdev_param_btcoex_cfg, wmi_pdev_param_mesh_mcast_enable, wmi_pdev_param_tx_ack_timeout, + wmi_pdev_param_soft_tx_chain_mask, wmi_pdev_param_max, } wmi_conv_pdev_params_id; diff --git a/wmi/src/wmi_unified_non_tlv.c b/wmi/src/wmi_unified_non_tlv.c index c662b64637ef..5db01d936e51 100644 --- a/wmi/src/wmi_unified_non_tlv.c +++ b/wmi/src/wmi_unified_non_tlv.c @@ -8819,6 +8819,8 @@ static void populate_pdev_param_non_tlv(uint32_t *pdev_param) pdev_param[wmi_pdev_param_atf_peer_stats] = WMI_PDEV_PARAM_ATF_PEER_STATS; pdev_param[wmi_pdev_param_tx_ack_timeout] = WMI_UNAVAILABLE_PARAM; + pdev_param[wmi_pdev_param_soft_tx_chain_mask] = + WMI_PDEV_PARAM_SOFT_TX_CHAIN_MASK; pdev_param[wmi_pdev_param_rfkill_enable] = WMI_UNAVAILABLE_PARAM; pdev_param[wmi_pdev_param_hw_rfkill_config] = WMI_UNAVAILABLE_PARAM; pdev_param[wmi_pdev_param_low_power_rf_enable] = WMI_UNAVAILABLE_PARAM; From 1caffee64c3763494b4ad88f6c92a35dc0508923 Mon Sep 17 00:00:00 2001 From: Kabilan Kannan Date: Wed, 1 Nov 2017 20:58:23 -0700 Subject: [PATCH 3/3] qcacmn: Fix the invalid memory access issue in TDLS Additional IE's in the TDLS management request is not populated correctly and it causes invalid memory access and system crash. Populate the additional TDLS IE's in correct order. Change-Id: I1c65f04c3b0e134dc4854e3f16022c887e8ce7c0 CRs-Fixed: 2136739 --- umac/tdls/dispatcher/inc/wlan_tdls_public_structs.h | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/umac/tdls/dispatcher/inc/wlan_tdls_public_structs.h b/umac/tdls/dispatcher/inc/wlan_tdls_public_structs.h index 712a81dac8aa..936623c0eb29 100644 --- a/umac/tdls/dispatcher/inc/wlan_tdls_public_structs.h +++ b/umac/tdls/dispatcher/inc/wlan_tdls_public_structs.h @@ -930,9 +930,8 @@ struct tdls_event_notify { * @dialog: dialog token used in the frame. * @status_code: status to be incuded in the frame * @responder: Tdls request type - * @len: lenght of additional Ies * @peer_capability: peer cpabilities - * @len: lenght of additional Ies + * @len: length of additional Ies * @buf: additional IEs to be included */ struct tdls_send_mgmt { @@ -944,7 +943,7 @@ struct tdls_send_mgmt { uint32_t peer_capability; uint8_t len; /* Variable length, do not add anything after this */ - uint8_t *buf; + uint8_t buf[]; }; /** @@ -975,6 +974,9 @@ struct tdls_validate_action_req { * @chk_frame: frame validation structure * @session_id: session id * @vdev_id: vdev id + * @cmd_buf: cmd buffer + * @len: length of the frame + * @use_default_ac: access category * @tdls_mgmt: tdls managment */ struct tdls_action_frame_request { @@ -984,8 +986,9 @@ struct tdls_action_frame_request { uint8_t vdev_id; const uint8_t *cmd_buf; uint8_t len; - struct tdls_send_mgmt tdls_mgmt; bool use_default_ac; + /* Variable length, do not add anything after this */ + struct tdls_send_mgmt tdls_mgmt; }; /**