From d08ea3b79f04826e50eacaa3c577e90159c158eb Mon Sep 17 00:00:00 2001 From: qcabuildsw Date: Thu, 1 Sep 2016 22:08:57 -0700 Subject: [PATCH 01/16] Release 5.1.0.23D Release 5.1.0.23D Change-Id: I7816d5b431bf36b550f3443289df270bd7dba70c CRs-Fixed: 688141 --- VERSION.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION.txt b/VERSION.txt index 463a8da44682..0780595294c6 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1,2 +1,2 @@ -Current Component wlan-cmn.driver.lnx.1.0 version 5.1.0.23C +Current Component wlan-cmn.driver.lnx.1.0 version 5.1.0.23D Matches Component wlan-cld3.driver.lnx.1.1 version 5.1.0.22C From 3ca38e2fe3329d4d9563cf64d5b6a54772874205 Mon Sep 17 00:00:00 2001 From: Venkateswara Swamy Bandaru Date: Fri, 5 Aug 2016 14:51:19 +0530 Subject: [PATCH 02/16] qcacmn: Support for wifidown and wifiup without modules removal Release the iomem requested during the cleanup path. Successive request to iomem resource fails, if the ioremapped region is not released during the last cleanup Change-Id: Icc88647df8d21f9f230b784faa8e7fdaf5968814 Acked-by: Balamurugan Mahalingam CRs-Fixed: 1056971 --- hif/src/dispatcher/ahb_api.h | 1 + hif/src/dispatcher/multibus_ahb.c | 2 +- hif/src/snoc/if_ahb.c | 32 ++++++++++++++++++++++--------- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/hif/src/dispatcher/ahb_api.h b/hif/src/dispatcher/ahb_api.h index 8ba0c754d2d9..2bba2ff92d8e 100644 --- a/hif/src/dispatcher/ahb_api.h +++ b/hif/src/dispatcher/ahb_api.h @@ -26,6 +26,7 @@ void hif_ahb_close(struct hif_softc *hif_ctx); void hif_ahb_disable_isr(struct hif_softc *hif_ctx); void hif_ahb_nointrs(struct hif_softc *scn); +void hif_ahb_reset_soc(struct hif_softc *hif_ctx); QDF_STATUS hif_ahb_enable_bus(struct hif_softc *ol_sc, struct device *dev, void *bdev, const hif_bus_id *bid, diff --git a/hif/src/dispatcher/multibus_ahb.c b/hif/src/dispatcher/multibus_ahb.c index b543e8fb420b..d1bee78d6070 100644 --- a/hif/src/dispatcher/multibus_ahb.c +++ b/hif/src/dispatcher/multibus_ahb.c @@ -38,7 +38,7 @@ QDF_STATUS hif_initialize_ahb_ops(struct hif_bus_ops *bus_ops) bus_ops->hif_bus_open = &hif_ahb_open; bus_ops->hif_bus_close = &hif_ahb_close; bus_ops->hif_bus_prevent_linkdown = &hif_dummy_bus_prevent_linkdown; - bus_ops->hif_reset_soc = &hif_dummy_reset_soc; + bus_ops->hif_reset_soc = &hif_ahb_reset_soc; bus_ops->hif_bus_suspend = &hif_dummy_bus_suspend; bus_ops->hif_bus_resume = &hif_dummy_bus_resume; bus_ops->hif_target_sleep_state_adjust = diff --git a/hif/src/snoc/if_ahb.c b/hif/src/snoc/if_ahb.c index dc6077841894..6f986fd14bbe 100644 --- a/hif/src/snoc/if_ahb.c +++ b/hif/src/snoc/if_ahb.c @@ -233,15 +233,29 @@ void hif_ahb_disable_bus(struct hif_softc *scn) struct hif_pci_softc *sc = HIF_GET_PCI_SOFTC(scn); void __iomem *mem; struct platform_device *pdev = (struct platform_device *)sc->pdev; + struct resource *memres = NULL; + int mem_pa_size = 0; /*Disable WIFI clock input*/ - hif_ahb_clk_enable_disable(&pdev->dev, 0); + if (sc->mem) { + memres = platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (!memres) { + HIF_INFO("%s: Failed to get IORESOURCE_MEM\n", + __func__); + return; + } + mem_pa_size = memres->end - memres->start + 1; - hif_ahb_device_reset(scn); - mem = (void __iomem *)sc->mem; - if (mem) { - devm_iounmap(&pdev->dev, mem); - sc->mem = NULL; + hif_ahb_clk_enable_disable(&pdev->dev, 0); + + hif_ahb_device_reset(scn); + mem = (void __iomem *)sc->mem; + if (mem) { + devm_iounmap(&pdev->dev, mem); + devm_release_mem_region(&pdev->dev, scn->mem_pa, + mem_pa_size); + sc->mem = NULL; + } } scn->mem = NULL; } @@ -324,6 +338,7 @@ QDF_STATUS hif_ahb_enable_bus(struct hif_softc *ol_sc, sc->mem = mem; ol_sc->mem = mem; ol_sc->mem_pa = memres->start; + tgt_info = hif_get_target_info_handle((struct hif_opaque_softc *)ol_sc); tgt_info->target_type = target_type; @@ -362,10 +377,9 @@ err_cleanup1: * Return: void */ /* Function to reset SoC */ -void hif_ahb_reset_soc(struct hif_opaque_softc *hif_ctx) +void hif_ahb_reset_soc(struct hif_softc *hif_ctx) { - struct hif_pci_softc *sc = HIF_GET_PCI_SOFTC(hif_ctx); - hif_ahb_device_reset((struct hif_softc *)sc); + hif_ahb_device_reset(hif_ctx); } From b019e0da84e78eb723f9d64e46dfd0b0fc23bffd Mon Sep 17 00:00:00 2001 From: qcabuildsw Date: Fri, 2 Sep 2016 01:08:39 -0700 Subject: [PATCH 03/16] Release 5.1.0.23E Release 5.1.0.23E Change-Id: I6cb56ab1492e084f8b9f6a890776eb2e5010c1ac CRs-Fixed: 688141 --- VERSION.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION.txt b/VERSION.txt index 0780595294c6..3b8ac520192a 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1,2 +1,2 @@ -Current Component wlan-cmn.driver.lnx.1.0 version 5.1.0.23D +Current Component wlan-cmn.driver.lnx.1.0 version 5.1.0.23E Matches Component wlan-cld3.driver.lnx.1.1 version 5.1.0.22C From 973abe89e42d7a8e0919465bbba10bfb7b7b4900 Mon Sep 17 00:00:00 2001 From: Dustin Brown Date: Tue, 30 Aug 2016 12:29:10 -0700 Subject: [PATCH 04/16] qcacmn: fake apps ensures correct ce_id before resume Currently, the interrupt handler does not check for the correct ce_id before triggering a fake apps resume. This check is added to hif_fake_apps_resume(). Change-Id: I810c59bb8536356bd87a394c815a294755aa5161 CRs-Fixed: 1061287 --- hif/src/ce/ce_tasklet.c | 57 +++++++++++++++++++++++++++++------------ 1 file changed, 41 insertions(+), 16 deletions(-) diff --git a/hif/src/ce/ce_tasklet.c b/hif/src/ce/ce_tasklet.c index 2f6809fa4935..958efdba090a 100644 --- a/hif/src/ce/ce_tasklet.c +++ b/hif/src/ce/ce_tasklet.c @@ -271,11 +271,11 @@ int hif_drain_tasklets(struct hif_softc *scn) #ifdef WLAN_SUSPEND_RESUME_TEST static bool g_hif_apps_fake_suspended; -static hdd_fake_resume_callback hdd_fake_aps_resume; +static hdd_fake_resume_callback hdd_fake_apps_resume; static void hif_wlan_resume_work_handler(struct work_struct *work) { - hdd_fake_aps_resume(0); + hdd_fake_apps_resume(0); } static DECLARE_WORK(hif_resume_work, hif_wlan_resume_work_handler); @@ -284,41 +284,66 @@ static DECLARE_WORK(hif_resume_work, hif_wlan_resume_work_handler); * hif_fake_apps_suspend(): Suspend WLAN * * Set the fake suspend flag such that hif knows that it will need - * to fake the aps resume process using the hdd_fake_aps_resume + * to fake the apps resume process using the hdd_fake_apps_resume * * Return: none */ void hif_fake_apps_suspend(hdd_fake_resume_callback callback) { - hdd_fake_aps_resume = callback; + hdd_fake_apps_resume = callback; g_hif_apps_fake_suspended = true; } /** - * hif_fake_aps_resume(): check if WLAN resume is needed + * hif_fake_apps_resume(): trigger WLAN resume if needed + * @fid_hdl: hif context + * @ce_id: copy engine Id * - * Return: true if a fake apps resume has been been triggered - * returns false if regular interrupt processing is needed + * Return: True if a fake apps resume has been been triggered, + * returns false if regular interrupt processing is needed. + * Ensures copy engine Id matches mapped Irq */ -static bool hif_fake_aps_resume(void) +static bool hif_fake_apps_resume(struct hif_opaque_softc *hif_hdl, int ce_id) { - if (g_hif_apps_fake_suspended) { - g_hif_apps_fake_suspended = false; - schedule_work(&hif_resume_work); - return true; - } else { + uint8_t ul_pipe, dl_pipe; + int ul_is_polled, dl_is_polled; + QDF_STATUS status; + + /* can't resume if not already suspended */ + if (!g_hif_apps_fake_suspended) + return false; + + /* ensure passed copy engine Id matches Id from irq map */ + + status = hif_map_service_to_pipe(hif_hdl, HTC_CTRL_RSVD_SVC, + &ul_pipe, &dl_pipe, + &ul_is_polled, &dl_is_polled); + + if (status) { + HIF_ERROR("%s: pipe_mapping failure", __func__); return false; } + + /* dl_pipe is equivalent to a copy engine Id at this point */ + if (ce_id != dl_pipe) + return false; + + /* trigger fake apps resume */ + g_hif_apps_fake_suspended = false; + schedule_work(&hif_resume_work); + return true; } #else /** - * hif_fake_aps_resume(): check if WLAN resume is needed + * hif_fake_apps_resume(): trigger WLAN resume if needed + * @hif_hdl: hif context + * @ce_id: copy engine Id * * Return: always false if WLAN_SUSPEND_RESUME_TEST is not defined */ -static bool hif_fake_aps_resume(void) +static bool hif_fake_apps_resume(struct hif_opaque_softc *hif_hdl, int ce_id) { return false; } @@ -426,7 +451,7 @@ irqreturn_t ce_dispatch_interrupt(int ce_id, hif_record_ce_desc_event(scn, ce_id, HIF_IRQ_EVENT, NULL, NULL, 0); hif_ce_increment_interrupt_count(hif_ce_state, ce_id); - if (unlikely(hif_fake_aps_resume())) { + if (unlikely(hif_fake_apps_resume(hif_hdl, ce_id))) { HIF_ERROR("received resume interrupt"); hif_irq_enable(scn, ce_id); return IRQ_HANDLED; From 93912f1a1903ec62bbdc810bb0f90c59062e4df4 Mon Sep 17 00:00:00 2001 From: qcabuildsw Date: Fri, 2 Sep 2016 02:08:08 -0700 Subject: [PATCH 05/16] Release 5.1.0.23F Release 5.1.0.23F Change-Id: I77bd699cf0151787ae42df19b633a655b325c768 CRs-Fixed: 688141 --- VERSION.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION.txt b/VERSION.txt index 3b8ac520192a..9e7557c929f4 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1,2 +1,2 @@ -Current Component wlan-cmn.driver.lnx.1.0 version 5.1.0.23E +Current Component wlan-cmn.driver.lnx.1.0 version 5.1.0.23F Matches Component wlan-cld3.driver.lnx.1.1 version 5.1.0.22C From 1633436e7447254c306f68d083f7a13b93a16131 Mon Sep 17 00:00:00 2001 From: Venkateswara Swamy Bandaru Date: Tue, 23 Aug 2016 15:38:10 +0530 Subject: [PATCH 06/16] qcacmn: Added a member in qca_napi_info structure To derive hif_ctx from napi pointer. This changes helps enable napi support for WIN driver. Change-Id: Idcb0775195665d60d4b1a9a010afcfab256d839f Acked-by: Balamurugan Mahalingam --- hif/inc/hif.h | 1 + hif/src/hif_napi.c | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/hif/inc/hif.h b/hif/inc/hif.h index 9e6ddb439e0c..10a9445e1588 100644 --- a/hif/inc/hif.h +++ b/hif/inc/hif.h @@ -126,6 +126,7 @@ struct qca_napi_stat { */ struct qca_napi_info { struct net_device netdev; /* dummy net_dev */ + void *hif_ctx; struct napi_struct napi; /* one NAPI Instance per CE in phase I */ uint8_t scale; /* currently same on all instances */ uint8_t id; diff --git a/hif/src/hif_napi.c b/hif/src/hif_napi.c index 0f14ab26fb1b..fa7db82ce781 100644 --- a/hif/src/hif_napi.c +++ b/hif/src/hif_napi.c @@ -31,8 +31,6 @@ * HIF NAPI interface implementation */ -#include /* memset */ - #include #include #include @@ -96,7 +94,7 @@ int hif_napi_create(struct hif_opaque_softc *hif_ctx, } for (i = 0; i < hif->ce_count; i++) { ce_state = hif->ce_id_to_state[i]; - NAPI_DEBUG("ce %d: htt_rx=%d htt_rx=%d", + NAPI_DEBUG("ce %d: htt_rx=%d htt_tx=%d", i, ce_state->htt_rx_data, ce_state->htt_tx_data); if (!ce_state->htt_rx_data) @@ -109,6 +107,7 @@ int hif_napi_create(struct hif_opaque_softc *hif_ctx, memset(napii, 0, sizeof(struct qca_napi_info)); napii->scale = scale; napii->id = NAPI_PIPE2ID(i); + napii->hif_ctx = hif_ctx; init_dummy_netdev(&(napii->netdev)); NAPI_DEBUG("adding napi=%p to netdev=%p (poll=%p, bdgt=%d)", From 3af96ec7ee4c8e84ff303b7ac9bf25825542d572 Mon Sep 17 00:00:00 2001 From: qcabuildsw Date: Fri, 2 Sep 2016 04:33:47 -0700 Subject: [PATCH 07/16] Release 5.1.0.23G Release 5.1.0.23G Change-Id: I45a132e866029414fba21dcaa8e5d47d1ef5bedc CRs-Fixed: 688141 --- VERSION.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION.txt b/VERSION.txt index 9e7557c929f4..02c4d2d9c7b7 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1,2 +1,2 @@ -Current Component wlan-cmn.driver.lnx.1.0 version 5.1.0.23F +Current Component wlan-cmn.driver.lnx.1.0 version 5.1.0.23G Matches Component wlan-cld3.driver.lnx.1.1 version 5.1.0.22C From e6d4b284990b490ed91027799bbf5493c05cbf2e Mon Sep 17 00:00:00 2001 From: Anurag Chouhan Date: Fri, 22 Jul 2016 20:19:54 +0530 Subject: [PATCH 08/16] qcacmn: Add fwtest interface Add wmi fw test interface to support generic fw test command. Change-Id: Ic2dc113e3a698555c0fdcbafb30df154f6deb97d CRs-Fixed: 1045265 --- wmi/inc/wmi_unified_api.h | 3 +++ wmi/inc/wmi_unified_priv.h | 5 ++++- wmi/src/wmi_unified_api.c | 22 +++++++++++++++++++ wmi/src/wmi_unified_tlv.c | 43 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 72 insertions(+), 1 deletion(-) diff --git a/wmi/inc/wmi_unified_api.h b/wmi/inc/wmi_unified_api.h index 5ef8b5a7325c..7082ed1cdeec 100644 --- a/wmi/inc/wmi_unified_api.h +++ b/wmi/inc/wmi_unified_api.h @@ -1258,4 +1258,7 @@ QDF_STATUS wmi_unified_send_power_dbg_cmd(void *wmi_hdl, QDF_STATUS wmi_unified_send_adapt_dwelltime_params_cmd(void *wmi_hdl, struct wmi_adaptive_dwelltime_params * wmi_param); +QDF_STATUS wmi_unified_fw_test_cmd(void *wmi_hdl, + struct set_fwtest_params *wmi_fwtest); + #endif /* _WMI_UNIFIED_API_H_ */ diff --git a/wmi/inc/wmi_unified_priv.h b/wmi/inc/wmi_unified_priv.h index d8b19b715cc3..b9f1c8785abb 100644 --- a/wmi/inc/wmi_unified_priv.h +++ b/wmi/inc/wmi_unified_priv.h @@ -676,7 +676,7 @@ QDF_STATUS (*send_process_roam_synch_complete_cmd)(wmi_unified_t wmi_handle, uint8_t vdev_id); QDF_STATUS (*send_unit_test_cmd)(wmi_unified_t wmi_handle, - struct wmi_unit_test_cmd *wmi_utest); + struct wmi_unit_test_cmd *wmi_utest); QDF_STATUS (*send_roam_invoke_cmd)(wmi_unified_t wmi_handle, struct wmi_roam_invoke_cmd *roaminvoke, @@ -1124,6 +1124,9 @@ QDF_STATUS (*send_power_dbg_cmd)(wmi_unified_t wmi_handle, QDF_STATUS (*send_adapt_dwelltime_params_cmd)(wmi_unified_t wmi_handle, struct wmi_adaptive_dwelltime_params *dwelltime_params); + +QDF_STATUS (*send_fw_test_cmd)(wmi_unified_t wmi_handle, + struct set_fwtest_params *wmi_fwtest); }; struct target_abi_version { diff --git a/wmi/src/wmi_unified_api.c b/wmi/src/wmi_unified_api.c index 3fd8618808df..fb3da5de26f0 100644 --- a/wmi/src/wmi_unified_api.c +++ b/wmi/src/wmi_unified_api.c @@ -3233,6 +3233,28 @@ QDF_STATUS wmi_unified_roam_synch_complete_cmd(void *wmi_hdl, return QDF_STATUS_E_FAILURE; } +/** + * wmi_unified_fw_test_cmd() - send fw test command to fw. + * @wmi_hdl: wmi handle + * @wmi_fwtest: fw test command + * + * This function sends fw test command to fw. + * + * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure + */ +QDF_STATUS wmi_unified_fw_test_cmd(void *wmi_hdl, + struct set_fwtest_params *wmi_fwtest) +{ + wmi_unified_t wmi_handle = (wmi_unified_t) wmi_hdl; + + if (wmi_handle->ops->send_fw_test_cmd) + return wmi_handle->ops->send_fw_test_cmd(wmi_handle, + wmi_fwtest); + + return QDF_STATUS_E_FAILURE; + +} + /** * wmi_unified_unit_test_cmd() - send unit test command to fw. * @wmi_hdl: wmi handle diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c index a81d462398cc..03fe000bf98b 100644 --- a/wmi/src/wmi_unified_tlv.c +++ b/wmi/src/wmi_unified_tlv.c @@ -10104,6 +10104,48 @@ QDF_STATUS send_process_roam_synch_complete_cmd_tlv(wmi_unified_t wmi_handle, return QDF_STATUS_SUCCESS; } +/** + * send_fw_test_cmd_tlv() - send fw test command to fw. + * @wmi_handle: wmi handle + * @wmi_fwtest: fw test command + * + * This function sends fw test command to fw. + * + * Return: CDF STATUS + */ +QDF_STATUS send_fw_test_cmd_tlv(wmi_unified_t wmi_handle, + struct set_fwtest_params *wmi_fwtest) +{ + wmi_fwtest_set_param_cmd_fixed_param *cmd; + wmi_buf_t wmi_buf; + uint16_t len; + + len = sizeof(*cmd); + + wmi_buf = wmi_buf_alloc(wmi_handle, len); + if (!wmi_buf) { + WMI_LOGE("%s: wmai_buf_alloc failed", __func__); + return QDF_STATUS_E_NOMEM; + } + + cmd = (wmi_fwtest_set_param_cmd_fixed_param *) wmi_buf_data(wmi_buf); + WMITLV_SET_HDR(&cmd->tlv_header, + WMITLV_TAG_STRUC_wmi_fwtest_set_param_cmd_fixed_param, + WMITLV_GET_STRUCT_TLVLEN( + wmi_fwtest_set_param_cmd_fixed_param)); + cmd->param_id = wmi_fwtest->arg; + cmd->param_value = wmi_fwtest->value; + + if (wmi_unified_cmd_send(wmi_handle, wmi_buf, len, + WMI_FWTEST_CMDID)) { + WMI_LOGP("%s: failed to send fw test command", __func__); + qdf_nbuf_free(wmi_buf); + return QDF_STATUS_E_FAILURE; + } + + return QDF_STATUS_SUCCESS; +} + /** * send_unit_test_cmd_tlv() - send unit test command to fw. * @wmi_handle: wmi handle @@ -12095,6 +12137,7 @@ struct wmi_ops tlv_ops = { .extract_profile_data = extract_profile_data_tlv, .extract_chan_info_event = extract_chan_info_event_tlv, .extract_channel_hopping_event = extract_channel_hopping_event_tlv, + .send_fw_test_cmd = send_fw_test_cmd_tlv, }; #ifdef WMI_TLV_AND_NON_TLV_SUPPORT From afe72239cafaf6d085fc088b186da30de576e0d9 Mon Sep 17 00:00:00 2001 From: qcabuildsw Date: Fri, 2 Sep 2016 16:07:21 -0700 Subject: [PATCH 09/16] Release 5.1.0.23H Release 5.1.0.23H Change-Id: Ica6da5c67c940eb2f0c8c9846339d9220e30b8aa CRs-Fixed: 688141 --- VERSION.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION.txt b/VERSION.txt index 02c4d2d9c7b7..f932b2d37420 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1,2 +1,2 @@ -Current Component wlan-cmn.driver.lnx.1.0 version 5.1.0.23G +Current Component wlan-cmn.driver.lnx.1.0 version 5.1.0.23H Matches Component wlan-cld3.driver.lnx.1.1 version 5.1.0.22C From 1ad591fef79282533e87e56782a86c06795a5dcf Mon Sep 17 00:00:00 2001 From: Deepak Dhamdhere Date: Mon, 22 Aug 2016 18:04:00 -0700 Subject: [PATCH 10/16] qcacmn: Modify LFR3 firmware OKC flag Enable or disable OKC flag in WMI roam scan offload request based on okc_enabled parameter in roam request from CSR. Change-Id: I19ad7ea2171532f2417742e205d408bdd52682c0 CRs-Fixed: 1057181 --- wmi/inc/wmi_unified_param.h | 2 ++ wmi/src/wmi_unified_tlv.c | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/wmi/inc/wmi_unified_param.h b/wmi/inc/wmi_unified_param.h index 306aad6ed988..324e13c4e7f5 100644 --- a/wmi/inc/wmi_unified_param.h +++ b/wmi/inc/wmi_unified_param.h @@ -1693,6 +1693,7 @@ typedef struct { * @rokh_id: r0kh id * @roam_key_mgmt_offload_enabled: roam offload flag * @auth_mode: authentication mode + * @okc_enabled: enable opportunistic key caching * @is_ese_assoc: flag to determine ese assoc * @mdid: mobility domain info * @roam_offload_params: roam offload tlv params @@ -1715,6 +1716,7 @@ struct roam_offload_scan_params { uint8_t rokh_id[WMI_ROAM_R0KH_ID_MAX_LEN]; uint8_t roam_key_mgmt_offload_enabled; int auth_mode; + bool okc_enabled; #endif bool is_ese_assoc; struct mobility_domain_info mdid; diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c index 03fe000bf98b..9b442f7bbeca 100644 --- a/wmi/src/wmi_unified_tlv.c +++ b/wmi/src/wmi_unified_tlv.c @@ -4282,7 +4282,8 @@ QDF_STATUS send_roam_scan_offload_mode_cmd_tlv(wmi_unified_t wmi_handle, buf_ptr += WMI_TLV_HDR_SIZE; roam_offload_11i = (wmi_roam_11i_offload_tlv_param *) buf_ptr; - if (roam_req->roam_key_mgmt_offload_enabled) { + if (roam_req->roam_key_mgmt_offload_enabled && + roam_req->okc_enabled) { WMI_SET_ROAM_OFFLOAD_OKC_ENABLED (roam_offload_11i->flags); WMI_LOGE("LFR3:OKC Enabled"); From ed159ca8fddf2a204a13f2deb4f6cb5c4325123f Mon Sep 17 00:00:00 2001 From: qcabuildsw Date: Fri, 2 Sep 2016 21:27:07 -0700 Subject: [PATCH 11/16] Release 5.1.0.23I Release 5.1.0.23I Change-Id: I34cc791659c56bfb72cd9925619ea3294ba0c95b CRs-Fixed: 688141 --- VERSION.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION.txt b/VERSION.txt index f932b2d37420..56a5a941adc9 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1,2 +1,2 @@ -Current Component wlan-cmn.driver.lnx.1.0 version 5.1.0.23H +Current Component wlan-cmn.driver.lnx.1.0 version 5.1.0.23I Matches Component wlan-cld3.driver.lnx.1.1 version 5.1.0.22C From f7d5d8e3976bda92ffdd900382fbd7d952e6a000 Mon Sep 17 00:00:00 2001 From: Houston Hoffman Date: Tue, 2 Aug 2016 20:59:13 -0700 Subject: [PATCH 12/16] qcacmn: Double CE2 resources on host and firmware Firmware crashed when it ran out of buffers. Increasing the descriptor ring size for firmware and host on CE2 at firmwares request. Change-Id: I602bc896dcd76b3184f922a3ac961a4433585374 CRs-Fixed: 1061291 --- hif/src/ce/ce_assignment.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hif/src/ce/ce_assignment.h b/hif/src/ce/ce_assignment.h index 4745e174b94c..7df730618642 100644 --- a/hif/src/ce/ce_assignment.h +++ b/hif/src/ce/ce_assignment.h @@ -91,7 +91,7 @@ static struct CE_attr host_ce_config_wlan[] = { /* target->host HTT + HTC control */ { /* CE1 */ CE_ATTR_FLAGS, 0, 0, 2048, 512, NULL,}, /* target->host WMI */ - { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 32, NULL,}, + { /* CE2 */ CE_ATTR_FLAGS, 0, 0, 2048, 64, NULL,}, /* host->target WMI */ { /* CE3 */ CE_ATTR_FLAGS, 0, 32, 2048, 0, NULL,}, /* host->target HTT */ @@ -121,7 +121,7 @@ static struct CE_pipe_config target_ce_config_wlan[] = { /* target->host HTT */ { /* CE1 */ 1, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, /* target->host WMI + HTC control */ - { /* CE2 */ 2, PIPEDIR_IN, 32, 2048, CE_ATTR_FLAGS, 0,}, + { /* CE2 */ 2, PIPEDIR_IN, 64, 2048, CE_ATTR_FLAGS, 0,}, /* host->target WMI */ { /* CE3 */ 3, PIPEDIR_OUT, 32, 2048, CE_ATTR_FLAGS, 0,}, /* host->target HTT */ From 7a5f890d587cf1f4714246868996c420b9d8aa5b Mon Sep 17 00:00:00 2001 From: Houston Hoffman Date: Fri, 26 Aug 2016 12:23:06 -0700 Subject: [PATCH 13/16] qcacmn: Fix index recording for FAST_TX_SOFTWARE_INDEX_UPDATE The sw_index was being recorded in the FAST_TX_SOFTWARE_INDEX_UPDATE event leading to confusing descriptor history. Change-Id: I1f2084296f25faf00c30370f47c4d29fb258c90b CRs-Fixed: 1060098 --- hif/src/ce/ce_service.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hif/src/ce/ce_service.c b/hif/src/ce/ce_service.c index d809b0006f0f..c7fe8d55e408 100644 --- a/hif/src/ce/ce_service.c +++ b/hif/src/ce/ce_service.c @@ -576,7 +576,7 @@ int ce_send_fast(struct CE_handle *copyeng, qdf_nbuf_t msdu, hif_record_ce_desc_event(scn, ce_state->id, FAST_TX_SOFTWARE_INDEX_UPDATE, - NULL, NULL, write_index); + NULL, NULL, sw_index); if (qdf_unlikely(CE_RING_DELTA(nentries_mask, write_index, sw_index - 1) < SLOTS_PER_DATAPATH_TX)) { From a3232a58ed467fbaebb4cdd42be3cabadf8960ee Mon Sep 17 00:00:00 2001 From: qcabuildsw Date: Mon, 5 Sep 2016 01:23:25 -0700 Subject: [PATCH 14/16] Release 5.1.0.23J Release 5.1.0.23J Change-Id: Ie13f66eb1446e255cff8d37439110e31eda06b28 CRs-Fixed: 688141 --- VERSION.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION.txt b/VERSION.txt index 56a5a941adc9..0a7804048125 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1,2 +1,2 @@ -Current Component wlan-cmn.driver.lnx.1.0 version 5.1.0.23I +Current Component wlan-cmn.driver.lnx.1.0 version 5.1.0.23J Matches Component wlan-cld3.driver.lnx.1.1 version 5.1.0.22C From ccd38dc2b463634af9e08a27fe8fedb96553ef4c Mon Sep 17 00:00:00 2001 From: Himanshu Agarwal Date: Fri, 2 Sep 2016 19:54:18 +0530 Subject: [PATCH 15/16] qcacmn: Add APIs to get lower 32 and upper 32 bits Add APIs to get lower 32 and upper 32 bits from an address. Change-Id: I283792333075c11219a491d305b2822849c025f3 CRs-Fixed: 1062916 --- qdf/inc/qdf_util.h | 28 ++++++++++++++++++++++++++++ qdf/linux/src/i_qdf_util.h | 29 +++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/qdf/inc/qdf_util.h b/qdf/inc/qdf_util.h index a80df5bb44dc..cc7ae313481b 100644 --- a/qdf/inc/qdf_util.h +++ b/qdf/inc/qdf_util.h @@ -439,4 +439,32 @@ uint64_t qdf_get_totalramsize(void) return __qdf_get_totalramsize(); } +/** + * qdf_get_lower_32_bits() - get lower 32 bits from an address. + * @addr: address + * + * This api returns the lower 32 bits of an address. + * + * Return: lower 32 bits. + */ +static inline +uint32_t qdf_get_lower_32_bits(qdf_dma_addr_t addr) +{ + return __qdf_get_lower_32_bits(addr); +} + +/** + * qdf_get_upper_32_bits() - get upper 32 bits from an address. + * @addr: address + * + * This api returns the upper 32 bits of an address. + * + * Return: upper 32 bits. + */ +static inline +uint32_t qdf_get_upper_32_bits(qdf_dma_addr_t addr) +{ + return __qdf_get_upper_32_bits(addr); +} + #endif /*_QDF_UTIL_H*/ diff --git a/qdf/linux/src/i_qdf_util.h b/qdf/linux/src/i_qdf_util.h index a496573e46f9..228f91f4ffa8 100644 --- a/qdf/linux/src/i_qdf_util.h +++ b/qdf/linux/src/i_qdf_util.h @@ -292,4 +292,33 @@ __qdf_get_totalramsize(void) return MEMINFO_KB(meminfo.totalram); } +/** + * __qdf_get_lower_32_bits() - get lower 32 bits from an address. + * @addr: address + * + * This api returns the lower 32 bits of an address. + * + * Return: lower 32 bits. + */ +static inline +uint32_t __qdf_get_lower_32_bits(__qdf_dma_addr_t addr) +{ + return lower_32_bits(addr); +} + +/** + * __qdf_get_upper_32_bits() - get upper 32 bits from an address. + * @addr: address + * + * This api returns the upper 32 bits of an address. + * + * Return: upper 32 bits. + */ +static inline +uint32_t __qdf_get_upper_32_bits(__qdf_dma_addr_t addr) +{ + return upper_32_bits(addr); +} + + #endif /*_I_QDF_UTIL_H*/ From a076ab1f232c69afa3834c7138e2a236ca1d1b1f Mon Sep 17 00:00:00 2001 From: qcabuildsw Date: Tue, 6 Sep 2016 13:29:23 -0700 Subject: [PATCH 16/16] Release 5.1.0.23K Release 5.1.0.23K Change-Id: Ifa659ac44a40d985d478b3fb505c25f2e70bf050 CRs-Fixed: 688141 --- VERSION.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION.txt b/VERSION.txt index 0a7804048125..6b25f8b6d358 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1,2 +1,2 @@ -Current Component wlan-cmn.driver.lnx.1.0 version 5.1.0.23J +Current Component wlan-cmn.driver.lnx.1.0 version 5.1.0.23K Matches Component wlan-cld3.driver.lnx.1.1 version 5.1.0.22C