From eb017befbdf5f9f062ead44cc653b3090748e34a Mon Sep 17 00:00:00 2001 From: Nirav Shah Date: Thu, 15 Feb 2018 11:20:58 +0530 Subject: [PATCH] qcacld-3.0: Add support for QCA9379 on x86 platform Add support for QCA9379 chip on x86 platform for USB and SDIO attach. Change-Id: I2de81794cd16521097ffa6956a18b4b0fe981d36 CRs-Fixed: 2196757 --- Kbuild | 18 +++-- core/bmi/src/ol_fw.c | 3 + core/cds/inc/cds_api.h | 10 ++- core/cds/src/cds_api.c | 5 +- core/dp/htt/htt_internal.h | 12 ++- core/dp/htt/htt_rx.c | 100 +++++++++++++++++-------- core/dp/ol/inc/ol_cfg.h | 12 +-- core/dp/txrx/ol_cfg.c | 19 +++-- core/dp/txrx/ol_rx.c | 2 + core/dp/txrx/ol_rx_reorder_timeout.c | 3 +- core/dp/txrx/ol_tx_classify.c | 15 ++-- core/dp/txrx/ol_tx_sched.c | 11 ++- core/dp/txrx/ol_tx_sched.h | 6 +- core/dp/txrx/ol_txrx.c | 2 +- core/hdd/inc/wlan_hdd_cfg.h | 4 +- core/hdd/inc/wlan_hdd_main.h | 25 ++++++- core/hdd/src/wlan_hdd_cfg.c | 4 +- core/hdd/src/wlan_hdd_main.c | 34 +++++++-- core/hdd/src/wlan_hdd_regulatory.c | 25 +------ core/hdd/src/wlan_hdd_stats.c | 18 +++-- core/hdd/src/wlan_hdd_stats.h | 9 ++- core/hdd/src/wlan_hdd_wext.c | 2 + core/mac/src/pe/lim/lim_process_fils.c | 4 +- core/pld/src/pld_sdio.c | 58 +++++++++++++- core/pld/src/pld_sdio.h | 32 +++----- core/sme/inc/sme_api.h | 11 ++- core/sme/src/common/sme_api.c | 2 + core/wma/inc/wma_internal.h | 3 +- core/wma/src/wma_data.c | 7 +- core/wma/src/wma_features.c | 2 + 30 files changed, 317 insertions(+), 141 deletions(-) diff --git a/Kbuild b/Kbuild index 3d6553123601..c9ab8329d564 100644 --- a/Kbuild +++ b/Kbuild @@ -175,6 +175,7 @@ ifeq ($(KERNEL_BUILD), 0) CONFIG_WLAN_FEATURE_DSRC := y endif +ifneq ($(CONFIG_ROME_IF),usb) ifneq ($(CONFIG_ROME_IF),sdio) #Flag to enable DISA CONFIG_WLAN_FEATURE_DISA := y @@ -206,6 +207,7 @@ ifneq ($(CONFIG_ROME_IF),sdio) CONFIG_WLAN_LRO := n endif endif +endif ifeq ($(CONFIG_ROME_IF), snoc) CONFIG_WLAN_TX_FLOW_CONTROL_V2 := y @@ -1421,9 +1423,14 @@ endif HIF_COMMON_OBJS := $(WLAN_COMMON_ROOT)/$(HIF_DIR)/src/ath_procfs.o \ $(WLAN_COMMON_ROOT)/$(HIF_DIR)/src/hif_main.o \ - $(WLAN_COMMON_ROOT)/$(HIF_DIR)/src/mp_dev.o \ - $(WLAN_COMMON_ROOT)/$(HIF_DIR)/src/hif_exec.o \ - $(WLAN_COMMON_ROOT)/$(HIF_DIR)/src/hif_irq_affinity.o + $(WLAN_COMMON_ROOT)/$(HIF_DIR)/src/mp_dev.o + +ifeq ($(CONFIG_WLAN_NAPI), y) +HIF_COMMON_OBJS += $(WLAN_COMMON_ROOT)/$(HIF_DIR)/src/hif_exec.o +HIF_COMMON_OBJS += $(WLAN_COMMON_ROOT)/$(HIF_DIR)/src/hif_irq_affinity.o +endif + + HIF_CE_OBJS := $(WLAN_COMMON_ROOT)/$(HIF_CE_DIR)/ce_bmi.o \ $(WLAN_COMMON_ROOT)/$(HIF_CE_DIR)/ce_diag.o \ @@ -1558,7 +1565,7 @@ endif ifeq ($(CONFIG_ICNSS),y) PLD_OBJS += $(PLD_SRC_DIR)/pld_snoc.o endif -ifeq ($(CONFIG_CNSS_SDIO),y) +ifeq ($(CONFIG_QCA_WIFI_SDIO), 1) PLD_OBJS += $(PLD_SRC_DIR)/pld_sdio.o endif ifeq ($(CONFIG_PLD_USB_CNSS), y) @@ -1651,9 +1658,7 @@ ifeq ($(BUILD_DIAG_VERSION), 1) INCS += $(HOST_DIAG_LOG_INC) endif -ifeq ($(CONFIG_WLAN_FEATURE_DISA), y) INCS += $(DISA_INC) -endif INCS += $(UMAC_DISP_INC) INCS += $(UMAC_SCAN_INC) @@ -2086,6 +2091,7 @@ endif ifeq ($(CONFIG_HIF_USB), 1) CDEFINES += -DHIF_USB \ -DCONFIG_PLD_USB_CNSS \ + -DDEBUG_HL_LOGGING \ -DCONFIG_HL_SUPPORT endif diff --git a/core/bmi/src/ol_fw.c b/core/bmi/src/ol_fw.c index b6def89a8ed2..e717816f53e8 100644 --- a/core/bmi/src/ol_fw.c +++ b/core/bmi/src/ol_fw.c @@ -1588,6 +1588,9 @@ static int ol_diag_read_reg_loc(struct hif_opaque_softc *scn, uint8_t *buffer, struct hif_target_info *tgt_info = hif_get_target_info_handle(scn); uint32_t target_version = tgt_info->target_version; + reg_table.section = NULL; + reg_table.section_size = 0; + section_len = ol_ath_get_reg_table(scn, target_version, ®_table); if (!reg_table.section || !reg_table.section_size || !section_len) { diff --git a/core/cds/inc/cds_api.h b/core/cds/inc/cds_api.h index a61234a7d1cc..f3fe9493720b 100644 --- a/core/cds/inc/cds_api.h +++ b/core/cds/inc/cds_api.h @@ -540,9 +540,17 @@ bool cds_is_5_mhz_enabled(void); bool cds_is_10_mhz_enabled(void); bool cds_is_sub_20_mhz_enabled(void); bool cds_is_self_recovery_enabled(void); -void cds_pkt_stats_to_logger_thread(void *pl_hdr, void *pkt_dump, void *data); enum QDF_GLOBAL_MODE cds_get_conparam(void); +#ifdef WLAN_LOGGING_SOCK_SVC_ENABLE +void cds_pkt_stats_to_logger_thread(void *pl_hdr, void *pkt_dump, void *data); +#else +static inline +void cds_pkt_stats_to_logger_thread(void *pl_hdr, void *pkt_dump, void *data) +{ +} +#endif + #ifdef WMI_INTERFACE_EVENT_LOGGING void cds_print_htc_credit_history(uint32_t count, qdf_abstract_print * print, void *print_priv); diff --git a/core/cds/src/cds_api.c b/core/cds/src/cds_api.c index 47049b6ed11a..6e3fdf258ed9 100644 --- a/core/cds/src/cds_api.c +++ b/core/cds/src/cds_api.c @@ -610,7 +610,6 @@ QDF_STATUS cds_open(struct wlan_objmgr_psoc *psoc) goto err_wma_close; } - bmi_target_ready(scn, gp_cds_context->cfg_ctx); QDF_TRACE(QDF_MODULE_ID_QDF, QDF_TRACE_LEVEL_DEBUG, "%s: target_type %d 8074:%d 6290:%d", @@ -640,6 +639,8 @@ QDF_STATUS cds_open(struct wlan_objmgr_psoc *psoc) cds_cdp_cfg_attach(cds_cfg); + bmi_target_ready(scn, gp_cds_context->cfg_ctx); + /* Now proceed to open the MAC */ sirStatus = mac_open(psoc, &(gp_cds_context->pMACContext), @@ -2722,6 +2723,7 @@ void cds_svc_fw_shutdown_ind(struct device *dev) hdd_svc_fw_shutdown_ind(dev); } +#ifdef WLAN_LOGGING_SOCK_SVC_ENABLE /* * cds_pkt_stats_to_logger_thread() - send pktstats to user * @pl_hdr: Pointer to pl_hdr @@ -2741,6 +2743,7 @@ inline void cds_pkt_stats_to_logger_thread(void *pl_hdr, void *pkt_dump, wlan_pkt_stats_to_logger_thread(pl_hdr, pkt_dump, data); } +#endif /** * cds_get_conparam() - Get the connection mode parameters diff --git a/core/dp/htt/htt_internal.h b/core/dp/htt/htt_internal.h index 20494737d5a9..cdecbc9a1080 100644 --- a/core/dp/htt/htt_internal.h +++ b/core/dp/htt/htt_internal.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014-2017 The Linux Foundation. All rights reserved. + * Copyright (c) 2011, 2014-2018 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -557,10 +557,20 @@ htt_htc_misc_pkt_list_add(struct htt_pdev_t *pdev, struct htt_htc_pkt *pkt); void htt_htc_misc_pkt_pool_free(struct htt_pdev_t *pdev); #endif +#ifdef CONFIG_HL_SUPPORT +static inline int +htt_rx_hash_list_insert(struct htt_pdev_t *pdev, + qdf_dma_addr_t paddr, + qdf_nbuf_t netbuf) +{ + return 0; +} +#else int htt_rx_hash_list_insert(struct htt_pdev_t *pdev, qdf_dma_addr_t paddr, qdf_nbuf_t netbuf); +#endif qdf_nbuf_t htt_rx_hash_list_lookup(struct htt_pdev_t *pdev, qdf_dma_addr_t paddr); diff --git a/core/dp/htt/htt_rx.c b/core/dp/htt/htt_rx.c index 145a810164d7..01777793b7e2 100644 --- a/core/dp/htt/htt_rx.c +++ b/core/dp/htt/htt_rx.c @@ -126,6 +126,7 @@ #define NEXT_FIELD_OFFSET_IN32 1 #endif /* HTT_PADDR64 */ +#ifndef CONFIG_HL_SUPPORT /** * htt_get_first_packet_after_wow_wakeup() - get first packet after wow wakeup * @msg_word: pointer to rx indication message word @@ -196,6 +197,7 @@ static void htt_rx_hash_deinit(struct htt_pdev_t *pdev) qdf_spinlock_destroy(&(pdev->rx_ring.rx_hash_lock)); } +#endif /* * This function is used both below within this file (which the compiler @@ -242,7 +244,7 @@ htt_rx_mpdu_desc_retry_hl(htt_pdev_handle pdev, void *mpdu_desc) } #ifdef CONFIG_HL_SUPPORT -u_int16_t +static uint16_t htt_rx_mpdu_desc_seq_num_hl(htt_pdev_handle pdev, void *mpdu_desc) { if (pdev->rx_desc_size_hl) { @@ -360,19 +362,6 @@ htt_rx_msdu_is_frag_hl(htt_pdev_handle pdev, void *msdu_desc) HTT_WORD_GET(*(u_int32_t *)rx_desc, HTT_HL_RX_DESC_MCAST_BCAST); } -static bool -htt_rx_msdu_first_msdu_flag_ll(htt_pdev_handle pdev, void *msdu_desc) -{ - struct htt_host_rx_desc_base *rx_desc = - (struct htt_host_rx_desc_base *)msdu_desc; - return (bool) - (((*(((uint32_t *) &rx_desc->msdu_end) + 4)) & - RX_MSDU_END_4_FIRST_MSDU_MASK) >> - RX_MSDU_END_4_FIRST_MSDU_LSB); -} - -#ifndef CONFIG_HL_SUPPORT - #define RX_PADDR_MAGIC_PATTERN 0xDEAD0000 static qdf_dma_addr_t htt_rx_paddr_mark_high_bits(qdf_dma_addr_t paddr) @@ -404,6 +393,18 @@ static inline qdf_dma_addr_t htt_paddr_trim_to_37(qdf_dma_addr_t paddr) } #endif /* HTT_PADDR64 */ +#ifndef CONFIG_HL_SUPPORT +static bool +htt_rx_msdu_first_msdu_flag_ll(htt_pdev_handle pdev, void *msdu_desc) +{ + struct htt_host_rx_desc_base *rx_desc = + (struct htt_host_rx_desc_base *)msdu_desc; + return (bool) + (((*(((uint32_t *)&rx_desc->msdu_end) + 4)) & + RX_MSDU_END_4_FIRST_MSDU_MASK) >> + RX_MSDU_END_4_FIRST_MSDU_LSB); +} + #ifdef ENABLE_DEBUG_ADDRESS_MARKING static qdf_dma_addr_t htt_rx_paddr_unmark_high_bits(qdf_dma_addr_t paddr) @@ -600,9 +601,7 @@ fail: return filled; } - #ifndef CONFIG_HL_SUPPORT - static int htt_rx_ring_size(struct htt_pdev_t *pdev) { int size; @@ -763,6 +762,37 @@ void htt_rx_detach(struct htt_pdev_t *pdev) } #endif +/** + * htt_rx_mpdu_wifi_hdr_retrieve() - retrieve 802.11 header + * @pdev - pdev handle + * @mpdu_desc - mpdu descriptor + * + * Return : pointer to 802.11 header + */ +char *htt_rx_mpdu_wifi_hdr_retrieve(htt_pdev_handle pdev, void *mpdu_desc) +{ + struct htt_host_rx_desc_base *rx_desc = + (struct htt_host_rx_desc_base *)mpdu_desc; + + if (!rx_desc) + return NULL; + else + return rx_desc->rx_hdr_status; +} + +/** + * htt_rx_mpdu_desc_tsf32() - Return the TSF timestamp indicating when + * a MPDU was received. + * @pdev - the HTT instance the rx data was received on + * @mpdu_desc - the abstract descriptor for the MPDU in question + * + * return : 32 LSBs of TSF time at which the MPDU's PPDU was received + */ +uint32_t htt_rx_mpdu_desc_tsf32(htt_pdev_handle pdev, void *mpdu_desc) +{ + return 0; +} + /*--- rx descriptor field access functions ----------------------------------*/ /* * These functions need to use bit masks and shifts to extract fields @@ -778,6 +808,7 @@ void htt_rx_detach(struct htt_pdev_t *pdev) */ /* FIX THIS: APPLIES TO LL ONLY */ +#ifndef CONFIG_HL_SUPPORT /** * htt_rx_mpdu_desc_retry_ll() - Returns the retry bit from the Rx descriptor * for the Low Latency driver @@ -887,20 +918,6 @@ htt_rx_mpdu_desc_tid_ll(htt_pdev_handle pdev, void *mpdu_desc) RX_MPDU_START_2_TID_LSB); } -uint32_t htt_rx_mpdu_desc_tsf32(htt_pdev_handle pdev, void *mpdu_desc) -{ -/* FIX THIS */ - return 0; -} - -/* FIX THIS: APPLIES TO LL ONLY */ -char *htt_rx_mpdu_wifi_hdr_retrieve(htt_pdev_handle pdev, void *mpdu_desc) -{ - struct htt_host_rx_desc_base *rx_desc = - (struct htt_host_rx_desc_base *)mpdu_desc; - return rx_desc->rx_hdr_status; -} - /* FIX THIS: APPLIES TO LL ONLY */ static bool htt_rx_msdu_desc_completes_mpdu_ll(htt_pdev_handle pdev, void *msdu_desc) @@ -947,6 +964,7 @@ static int htt_rx_msdu_is_frag_ll(htt_pdev_handle pdev, void *msdu_desc) ((*((uint32_t *) &rx_desc->attention)) & RX_ATTENTION_0_FRAGMENT_MASK) >> RX_ATTENTION_0_FRAGMENT_LSB; } +#endif static inline uint8_t htt_rx_msdu_fw_desc_get(htt_pdev_handle pdev, void *msdu_desc) @@ -1160,6 +1178,7 @@ void htt_set_checksum_result_hl(qdf_nbuf_t msdu, #define MAX_DONE_BIT_CHECK_ITER 5 #endif +#ifndef CONFIG_HL_SUPPORT static int htt_rx_amsdu_pop_ll(htt_pdev_handle pdev, qdf_nbuf_t rx_ind_msg, @@ -1439,6 +1458,7 @@ htt_rx_amsdu_pop_ll(htt_pdev_handle pdev, */ return msdu_chaining; } +#endif #if defined(CONFIG_HL_SUPPORT) @@ -1551,6 +1571,7 @@ htt_rx_offload_msdu_cnt_ll( return htt_rx_ring_elems(pdev); } +#ifndef CONFIG_HL_SUPPORT static int htt_rx_offload_msdu_pop_ll(htt_pdev_handle pdev, qdf_nbuf_t offload_deliver_msg, @@ -1646,9 +1667,11 @@ htt_rx_offload_paddr_msdu_pop_ll(htt_pdev_handle pdev, qdf_nbuf_set_pktlen(buf, msdu_len); return 0; } +#endif #define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#ifndef CONFIG_HL_SUPPORT /** * htt_mon_rx_handle_amsdu_packet() - Handle consecutive fragments of amsdu * @msdu: pointer to first msdu of amsdu @@ -2074,6 +2097,7 @@ static void htt_rx_mon_get_rx_status(htt_pdev_handle pdev, rx_status->chan_flags = channel_flags; rx_status->ant_signal_db = rx_desc->ppdu_start.rssi_comb; } +#endif #ifdef RX_HASH_DEBUG #define HTT_RX_CHECK_MSDU_COUNT(msdu_count) HTT_ASSERT_ALWAYS(msdu_count) @@ -2081,6 +2105,7 @@ static void htt_rx_mon_get_rx_status(htt_pdev_handle pdev, #define HTT_RX_CHECK_MSDU_COUNT(msdu_count) /* no-op */ #endif +#ifndef CONFIG_HL_SUPPORT /** * htt_rx_mon_amsdu_rx_in_order_pop_ll() - Monitor mode HTT Rx in order pop * function @@ -2258,6 +2283,7 @@ next_pop: return 1; } +#endif /** * htt_rx_mon_note_capture_channel() - Make note of channel to update in @@ -2283,6 +2309,7 @@ uint32_t htt_rx_amsdu_rx_in_order_get_pktlog(qdf_nbuf_t rx_ind_msg) return HTT_RX_IN_ORD_PADDR_IND_PKTLOG_GET(*msg_word); } +#ifndef CONFIG_HL_SUPPORT /* Return values: 1 - success, 0 - failure */ #define RX_DESC_DISCARD_IS_SET ((*((u_int8_t *) &rx_desc->fw_desc.u.val)) & \ FW_RX_DESC_DISCARD_M) @@ -2479,6 +2506,7 @@ htt_rx_amsdu_rx_in_order_pop_ll(htt_pdev_handle pdev, return 1; } +#endif /* FIXME: This is a HW definition not provded by HW, where does it go ? */ enum { @@ -2930,6 +2958,7 @@ bool (*htt_rx_mpdu_is_encrypted)(htt_pdev_handle pdev, void *mpdu_desc); bool (*htt_rx_msdu_desc_key_id)(htt_pdev_handle pdev, void *mpdu_desc, uint8_t *key_id); +#ifndef CONFIG_HL_SUPPORT static void *htt_rx_mpdu_desc_list_next_ll(htt_pdev_handle pdev, qdf_nbuf_t rx_ind_msg) { @@ -2939,6 +2968,7 @@ void *htt_rx_mpdu_desc_list_next_ll(htt_pdev_handle pdev, qdf_nbuf_t rx_ind_msg) pdev->rx_ring.sw_rd_idx.msdu_desc = pdev->rx_ring.sw_rd_idx.msdu_payld; return (void *)htt_rx_desc(netbuf); } +#endif bool (*htt_rx_msdu_chan_info_present)( htt_pdev_handle pdev, @@ -2953,11 +2983,13 @@ bool (*htt_rx_msdu_center_freq)( uint16_t *contig_chan2_center_freq_mhz, uint8_t *phy_mode); +#ifndef CONFIG_HL_SUPPORT static void *htt_rx_in_ord_mpdu_desc_list_next_ll(htt_pdev_handle pdev, qdf_nbuf_t netbuf) { return (void *)htt_rx_desc(netbuf); } +#endif #if defined(CONFIG_HL_SUPPORT) @@ -3105,6 +3137,7 @@ htt_rx_msdu_desc_key_id_hl(htt_pdev_handle htt_pdev, #endif +#ifndef CONFIG_HL_SUPPORT static void *htt_rx_msdu_desc_retrieve_ll(htt_pdev_handle pdev, qdf_nbuf_t msdu) { return htt_rx_desc(msdu); @@ -3161,6 +3194,7 @@ htt_rx_msdu_desc_key_id_ll(htt_pdev_handle pdev, void *mpdu_desc, return true; } +#endif void htt_rx_desc_frame_free(htt_pdev_handle htt_pdev, qdf_nbuf_t msdu) { @@ -3208,7 +3242,6 @@ void htt_rx_msdu_buff_replenish(htt_pdev_handle pdev) qdf_atomic_inc(&pdev->rx_ring.refill_ref_cnt); } -#ifndef CONFIG_HL_SUPPORT #define RX_RING_REFILL_DEBT_MAX 128 int htt_rx_msdu_buff_in_order_replenish(htt_pdev_handle pdev, uint32_t num) { @@ -3245,6 +3278,7 @@ int htt_rx_msdu_buff_in_order_replenish(htt_pdev_handle pdev, uint32_t num) return filled; } +#ifndef CONFIG_HL_SUPPORT #define AR600P_ASSEMBLE_HW_RATECODE(_rate, _nss, _pream) \ (((_pream) << 6) | ((_nss) << 4) | (_rate)) @@ -3388,7 +3422,9 @@ hli_end: qdf_spin_unlock_bh(&(pdev->rx_ring.rx_hash_lock)); return rc; } +#endif +#ifndef CONFIG_HL_SUPPORT /* * Given a physical address this function will find the corresponding network * buffer from the hash table. @@ -3460,7 +3496,6 @@ qdf_nbuf_t htt_rx_hash_list_lookup(struct htt_pdev_t *pdev, return netbuf; } -#endif /* * Initialization function of the rx buffer hash table. This function will @@ -3542,6 +3577,7 @@ hi_end: return rc; } +#endif /*--- RX In Order Hash Code --------------------------------------------------*/ diff --git a/core/dp/ol/inc/ol_cfg.h b/core/dp/ol/inc/ol_cfg.h index 062c6af81719..41252ff62375 100644 --- a/core/dp/ol/inc/ol_cfg.h +++ b/core/dp/ol/inc/ol_cfg.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2017 The Linux Foundation. All rights reserved. + * Copyright (c) 2011-2018 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -667,7 +667,7 @@ static inline uint8_t ol_cfg_is_flow_steering_enabled(struct cdp_cfg *cfg_pdev) * * Return: wrr_skip_weight for specified ac. */ -int ol_cfg_get_wrr_skip_weight(ol_pdev_handle pdev, int ac); +int ol_cfg_get_wrr_skip_weight(struct cdp_cfg *pdev, int ac); /** * ol_cfg_get_credit_threshold() - Query for the param of credit_threshold @@ -676,7 +676,7 @@ int ol_cfg_get_wrr_skip_weight(ol_pdev_handle pdev, int ac); * * Return: credit_threshold for specified ac. */ -uint32_t ol_cfg_get_credit_threshold(ol_pdev_handle pdev, int ac); +uint32_t ol_cfg_get_credit_threshold(struct cdp_cfg *pdev, int ac); /** * ol_cfg_get_send_limit() - Query for the param of send_limit @@ -685,7 +685,7 @@ uint32_t ol_cfg_get_credit_threshold(ol_pdev_handle pdev, int ac); * * Return: send_limit for specified ac. */ -uint16_t ol_cfg_get_send_limit(ol_pdev_handle pdev, int ac); +uint16_t ol_cfg_get_send_limit(struct cdp_cfg *pdev, int ac); /** * ol_cfg_get_credit_reserve() - Query for the param of credit_reserve @@ -694,7 +694,7 @@ uint16_t ol_cfg_get_send_limit(ol_pdev_handle pdev, int ac); * * Return: credit_reserve for specified ac. */ -int ol_cfg_get_credit_reserve(ol_pdev_handle pdev, int ac); +int ol_cfg_get_credit_reserve(struct cdp_cfg *pdev, int ac); /** * ol_cfg_get_discard_weight() - Query for the param of discard_weight @@ -703,5 +703,5 @@ int ol_cfg_get_credit_reserve(ol_pdev_handle pdev, int ac); * * Return: discard_weight for specified ac. */ -int ol_cfg_get_discard_weight(ol_pdev_handle pdev, int ac); +int ol_cfg_get_discard_weight(struct cdp_cfg *pdev, int ac); #endif /* _OL_CFG__H_ */ diff --git a/core/dp/txrx/ol_cfg.c b/core/dp/txrx/ol_cfg.c index 16b84f1472a6..71710f229418 100644 --- a/core/dp/txrx/ol_cfg.c +++ b/core/dp/txrx/ol_cfg.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2017 The Linux Foundation. All rights reserved. + * Copyright (c) 2011-2018 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -332,12 +332,19 @@ int ol_cfg_throttle_duty_cycle_level(struct cdp_cfg *cfg_pdev, int level) return cfg->dutycycle_level[level]; } +#ifdef CONFIG_HL_SUPPORT +int ol_cfg_is_full_reorder_offload(struct cdp_cfg *cfg_pdev) +{ + return 0; +} +#else int ol_cfg_is_full_reorder_offload(struct cdp_cfg *cfg_pdev) { struct txrx_pdev_cfg_t *cfg = (struct txrx_pdev_cfg_t *)cfg_pdev; return cfg->is_full_reorder_offload; } +#endif #ifdef WLAN_FEATURE_TSF_PLUS void ol_set_cfg_ptp_rx_opt_enabled(struct cdp_cfg *cfg_pdev, u_int8_t val) @@ -462,7 +469,7 @@ bool ol_cfg_is_ce_classify_enabled(struct cdp_cfg *cfg_pdev) * * Return: wrr_skip_weight for specified ac. */ -int ol_cfg_get_wrr_skip_weight(ol_pdev_handle pdev, int ac) +int ol_cfg_get_wrr_skip_weight(struct cdp_cfg *pdev, int ac) { struct txrx_pdev_cfg_t *cfg = (struct txrx_pdev_cfg_t *)pdev; @@ -479,7 +486,7 @@ int ol_cfg_get_wrr_skip_weight(ol_pdev_handle pdev, int ac) * * Return: credit_threshold for specified ac. */ -uint32_t ol_cfg_get_credit_threshold(ol_pdev_handle pdev, int ac) +uint32_t ol_cfg_get_credit_threshold(struct cdp_cfg *pdev, int ac) { struct txrx_pdev_cfg_t *cfg = (struct txrx_pdev_cfg_t *)pdev; @@ -496,7 +503,7 @@ uint32_t ol_cfg_get_credit_threshold(ol_pdev_handle pdev, int ac) * * Return: send_limit for specified ac. */ -uint16_t ol_cfg_get_send_limit(ol_pdev_handle pdev, int ac) +uint16_t ol_cfg_get_send_limit(struct cdp_cfg *pdev, int ac) { struct txrx_pdev_cfg_t *cfg = (struct txrx_pdev_cfg_t *)pdev; @@ -513,7 +520,7 @@ uint16_t ol_cfg_get_send_limit(ol_pdev_handle pdev, int ac) * * Return: credit_reserve for specified ac. */ -int ol_cfg_get_credit_reserve(ol_pdev_handle pdev, int ac) +int ol_cfg_get_credit_reserve(struct cdp_cfg *pdev, int ac) { struct txrx_pdev_cfg_t *cfg = (struct txrx_pdev_cfg_t *)pdev; @@ -530,7 +537,7 @@ int ol_cfg_get_credit_reserve(ol_pdev_handle pdev, int ac) * * Return: discard_weight for specified ac. */ -int ol_cfg_get_discard_weight(ol_pdev_handle pdev, int ac) +int ol_cfg_get_discard_weight(struct cdp_cfg *pdev, int ac) { struct txrx_pdev_cfg_t *cfg = (struct txrx_pdev_cfg_t *)pdev; diff --git a/core/dp/txrx/ol_rx.c b/core/dp/txrx/ol_rx.c index c345c1352739..9f976acd24c1 100644 --- a/core/dp/txrx/ol_rx.c +++ b/core/dp/txrx/ol_rx.c @@ -1667,6 +1667,7 @@ ol_rx_in_order_deliver(struct ol_txrx_vdev_t *vdev, ol_rx_data_process(peer, msdu_list); } +#ifndef CONFIG_HL_SUPPORT void ol_rx_offload_paddr_deliver_ind_handler(htt_pdev_handle htt_pdev, uint32_t msdu_count, @@ -1724,6 +1725,7 @@ ol_rx_offload_paddr_deliver_ind_handler(htt_pdev_handle htt_pdev, } htt_rx_msdu_buff_replenish(htt_pdev); } +#endif /** * ol_htt_mon_note_chan() - Update monitor channel information diff --git a/core/dp/txrx/ol_rx_reorder_timeout.c b/core/dp/txrx/ol_rx_reorder_timeout.c index 8eec306964ca..6772c4b721be 100644 --- a/core/dp/txrx/ol_rx_reorder_timeout.c +++ b/core/dp/txrx/ol_rx_reorder_timeout.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2017 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -34,6 +34,7 @@ /* datapath internal interfaces */ #include /* TXRX_ASSERT, etc. */ #include /* ol_rx_reorder_flush, etc. */ +#include #ifdef QCA_SUPPORT_OL_RX_REORDER_TIMEOUT diff --git a/core/dp/txrx/ol_tx_classify.c b/core/dp/txrx/ol_tx_classify.c index c4ad8f51ec9d..25c62c712491 100644 --- a/core/dp/txrx/ol_tx_classify.c +++ b/core/dp/txrx/ol_tx_classify.c @@ -745,14 +745,15 @@ ol_tx_classify_mgmt( return txq; } -static A_STATUS +#ifdef currently_unused +QDF_STATUS ol_tx_classify_extension( struct ol_txrx_vdev_t *vdev, struct ol_tx_desc_t *tx_desc, qdf_nbuf_t tx_msdu, struct ol_txrx_msdu_info_t *msdu_info) { - A_UINT8 *datap = qdf_nbuf_data(tx_msdu); + u8 *datap = qdf_nbuf_data(tx_msdu); struct ol_txrx_peer_t *peer; int which_key; @@ -785,7 +786,7 @@ ol_tx_classify_extension( if (!msdu_info->htt.info.is_unicast) { int l2_hdr_size; - A_UINT16 ethertype; + u16 ethertype; if (msdu_info->htt.info.l2_hdr_type == htt_pkt_type_ethernet) { struct ethernet_hdr_t *eh; @@ -853,10 +854,10 @@ ol_tx_classify_extension( */ msdu_info->htt.action.do_tx_complete = 0; - return A_OK; + return QDF_STATUS_SUCCESS; } -static A_STATUS +QDF_STATUS ol_tx_classify_mgmt_extension( struct ol_txrx_vdev_t *vdev, struct ol_tx_desc_t *tx_desc, @@ -893,7 +894,7 @@ ol_tx_classify_mgmt_extension( IEEE80211_FC0_SUBTYPE_SHIFT; msdu_info->htt.info.l3_hdr_offset = sizeof(struct ieee80211_frame); - return A_OK; + return QDF_STATUS_SUCCESS; } - +#endif #endif /* defined(CONFIG_HL_SUPPORT) */ diff --git a/core/dp/txrx/ol_tx_sched.c b/core/dp/txrx/ol_tx_sched.c index 0df4d8e2fc42..cea3b10de173 100644 --- a/core/dp/txrx/ol_tx_sched.c +++ b/core/dp/txrx/ol_tx_sched.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2017 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -515,7 +515,6 @@ struct ol_tx_sched_wrr_adv_category_info_t { send_limit, \ credit_reserve, \ discard_weights) \ - do { \ enum { OL_TX_SCHED_WRR_ADV_ ## cat ## _WRR_SKIP_WEIGHT = \ (wrr_skip_weight) }; \ enum { OL_TX_SCHED_WRR_ADV_ ## cat ## _CREDIT_THRESHOLD = \ @@ -525,8 +524,7 @@ struct ol_tx_sched_wrr_adv_category_info_t { enum { OL_TX_SCHED_WRR_ADV_ ## cat ## _CREDIT_RESERVE = \ (credit_reserve) }; \ enum { OL_TX_SCHED_WRR_ADV_ ## cat ## _DISCARD_WEIGHT = \ - (discard_weights) }; \ - } while (0) + (discard_weights) }; /* Rome: * For high-volume traffic flows (VI, BE, BK), use a credit threshold * roughly equal to a large A-MPDU (occupying half the target memory @@ -1021,8 +1019,9 @@ ol_tx_sched_category_info_wrr_adv( * * Return: none */ -void ol_tx_sched_wrr_param_update(struct ol_txrx_pdev_t *pdev, - struct ol_tx_sched_wrr_adv_t *scheduler) +static void ol_tx_sched_wrr_param_update(struct ol_txrx_pdev_t *pdev, + struct ol_tx_sched_wrr_adv_t * + scheduler) { int i; static const char * const tx_sched_wrr_name[4] = { diff --git a/core/dp/txrx/ol_tx_sched.h b/core/dp/txrx/ol_tx_sched.h index b3612fc2412e..2068c095cf31 100644 --- a/core/dp/txrx/ol_tx_sched.h +++ b/core/dp/txrx/ol_tx_sched.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2013, 2016-2017 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2013, 2016-2018 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -82,6 +82,10 @@ void ol_tx_sched_cur_state_display(struct ol_txrx_pdev_t *pdev); void ol_tx_sched_stats_clear(struct ol_txrx_pdev_t *pdev); +void +ol_txrx_set_wmm_param(struct cdp_pdev *data_pdev, + struct ol_tx_wmm_param_t wmm_param); + #else static inline void diff --git a/core/dp/txrx/ol_txrx.c b/core/dp/txrx/ol_txrx.c index acfa07a22c96..87655a3a6fbd 100644 --- a/core/dp/txrx/ol_txrx.c +++ b/core/dp/txrx/ol_txrx.c @@ -4883,7 +4883,7 @@ ol_txrx_display_stats(void *soc, uint16_t value, #endif #ifdef DEBUG_HL_LOGGING - case CDP__BUNDLE_STATS: + case CDP_BUNDLE_STATS: htt_dump_bundle_stats(pdev->htt_pdev); break; #endif diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h index e79be913b0de..978a44d685d4 100644 --- a/core/hdd/inc/wlan_hdd_cfg.h +++ b/core/hdd/inc/wlan_hdd_cfg.h @@ -14937,8 +14937,8 @@ struct hdd_config { uint32_t IpaUcTxPartitionBase; #ifdef WLAN_LOGGING_SOCK_SVC_ENABLE /* WLAN Logging */ - bool wlanLoggingEnable; - bool wlanLoggingToConsole; + bool wlan_logging_enable; + bool wlan_logging_to_console; #endif /* WLAN_LOGGING_SOCK_SVC_ENABLE */ uint8_t enableSifsBurst; diff --git a/core/hdd/inc/wlan_hdd_main.h b/core/hdd/inc/wlan_hdd_main.h index c8759b200443..1921978add26 100644 --- a/core/hdd/inc/wlan_hdd_main.h +++ b/core/hdd/inc/wlan_hdd_main.h @@ -2161,6 +2161,7 @@ int wlan_hdd_cfg80211_start_acs(struct hdd_adapter *adapter); */ int hdd_cfg80211_update_acs_config(struct hdd_adapter *adapter, uint8_t reason); + /** * hdd_update_acs_timer_reason() - update acs timer start reason * @adapter: hdd adapter @@ -2184,6 +2185,26 @@ int hdd_update_acs_timer_reason(struct hdd_adapter *adapter, uint8_t reason); void hdd_switch_sap_channel(struct hdd_adapter *adapter, uint8_t channel, bool forced); +#if defined(FEATURE_WLAN_CH_AVOID) +void hdd_unsafe_channel_restart_sap(struct hdd_context *hdd_ctx); + +void hdd_ch_avoid_ind(struct hdd_context *hdd_ctxt, + struct unsafe_ch_list *unsafe_chan_list, + struct ch_avoid_ind_type *avoid_freq_list); +#else +static inline +void hdd_unsafe_channel_restart_sap(struct hdd_context *hdd_ctx) +{ +} + +static inline +void hdd_ch_avoid_ind(struct hdd_context *hdd_ctxt, + struct unsafe_ch_list *unsafe_chan_list, + struct ch_avoid_ind_type *avoid_freq_list) +{ +} +#endif + void hdd_update_macaddr(struct hdd_config *config, struct qdf_mac_addr hw_macaddr); void wlan_hdd_disable_roaming(struct hdd_adapter *adapter); @@ -2444,9 +2465,7 @@ static inline void hdd_enable_fastpath(struct hdd_config *hdd_cfg, } #endif void hdd_wlan_update_target_info(struct hdd_context *hdd_ctx, void *context); -void hdd_ch_avoid_ind(struct hdd_context *hdd_ctxt, - struct unsafe_ch_list *unsafe_chan_list, - struct ch_avoid_ind_type *avoid_freq_list); + enum sap_acs_dfs_mode wlan_hdd_get_dfs_mode(enum dfs_mode mode); void hdd_unsafe_channel_restart_sap(struct hdd_context *hdd_ctx); /** diff --git a/core/hdd/src/wlan_hdd_cfg.c b/core/hdd/src/wlan_hdd_cfg.c index dce25a656e4a..de2d782023d0 100644 --- a/core/hdd/src/wlan_hdd_cfg.c +++ b/core/hdd/src/wlan_hdd_cfg.c @@ -3416,7 +3416,7 @@ struct reg_table_entry g_registry_table[] = { CFG_IPA_UC_TX_PARTITION_BASE_MAX), #ifdef WLAN_LOGGING_SOCK_SVC_ENABLE REG_VARIABLE(CFG_WLAN_LOGGING_SUPPORT_NAME, WLAN_PARAM_Integer, - struct hdd_config, wlanLoggingEnable, + struct hdd_config, wlan_logging_enable, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, CFG_WLAN_LOGGING_SUPPORT_DEFAULT, CFG_WLAN_LOGGING_SUPPORT_DISABLE, @@ -3424,7 +3424,7 @@ struct reg_table_entry g_registry_table[] = { REG_VARIABLE(CFG_WLAN_LOGGING_CONSOLE_SUPPORT_NAME, WLAN_PARAM_Integer, - struct hdd_config, wlanLoggingToConsole, + struct hdd_config, wlan_logging_to_console, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, CFG_WLAN_LOGGING_CONSOLE_SUPPORT_DEFAULT, CFG_WLAN_LOGGING_CONSOLE_SUPPORT_DISABLE, diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index da7c1832a6d5..54ed75089998 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -2581,7 +2581,6 @@ int hdd_wlan_start_modules(struct hdd_context *hdd_ctx, pld_set_fw_log_mode(hdd_ctx->parent_dev, hdd_ctx->config->enable_fw_log); - ret = hdd_hif_open(qdf_dev->dev, qdf_dev->drv_hdl, qdf_dev->bid, qdf_dev->bus_type, (reinit == true) ? HIF_ENABLE_TYPE_REINIT : @@ -4613,6 +4612,19 @@ err_free_netdev: return NULL; } +#ifdef MSM_PLATFORM +static inline +void hdd_cancel_bus_bw_work(struct hdd_context *hdd_ctx) +{ + cancel_work_sync(&hdd_ctx->bus_bw_work); +} +#else +static inline +void hdd_cancel_bus_bw_work(struct hdd_context *hdd_ctx) +{ +} +#endif + QDF_STATUS hdd_close_adapter(struct hdd_context *hdd_ctx, struct hdd_adapter *adapter, bool rtnl_held) { @@ -7108,7 +7120,7 @@ void hdd_bus_bandwidth_destroy(struct hdd_context *hdd_ctx) hdd_reset_tcp_delack(hdd_ctx); hdd_debug("wait for bus bw work to flush"); - cancel_work_sync(&hdd_ctx->bus_bw_work); + hdd_cancel_bus_bw_work(hdd_ctx); qdf_timer_free(&hdd_ctx->bus_bw_timer); hdd_ctx->bus_bw_timer_running = false; qdf_spinlock_destroy(&hdd_ctx->bus_bw_timer_lock); @@ -7682,6 +7694,7 @@ static uint8_t hdd_get_safe_channel_from_pcl_and_acs_range( return INVALID_CHANNEL_ID; } +#endif /** * hdd_switch_sap_channel() - Move SAP to the given channel @@ -7763,6 +7776,7 @@ int hdd_update_acs_timer_reason(struct hdd_adapter *adapter, uint8_t reason) return status; } +#if defined(FEATURE_WLAN_CH_AVOID) /** * hdd_unsafe_channel_restart_sap() - restart sap if sap is on unsafe channel * @hdd_ctx: hdd context pointer @@ -8329,7 +8343,6 @@ static int ie_whitelist_attrs_init(struct hdd_context *hdd_ctx) return ret; } - /** * hdd_iface_change_callback() - Function invoked when stop modules expires * @priv: pointer to hdd context @@ -8356,6 +8369,18 @@ static void hdd_iface_change_callback(void *priv) EXIT(); } +#ifdef WLAN_LOGGING_SOCK_SVC_ENABLE +static void hdd_set_wlan_logging(struct hdd_context *hdd_ctx) +{ + wlan_logging_set_log_to_console(hdd_ctx->config-> + wlan_logging_to_console); + wlan_logging_set_active(hdd_ctx->config->wlan_logging_enable); +} +#else +static void hdd_set_wlan_logging(struct hdd_context *hdd_ctx) +{ } +#endif + /** * hdd_context_create() - Allocate and inialize HDD context. * @dev: Device Pointer to the underlying device @@ -8439,8 +8464,7 @@ static struct hdd_context *hdd_context_create(struct device *dev) if (ret) goto err_deinit_txrx_histogram; - wlan_logging_set_log_to_console(hdd_ctx->config->wlanLoggingToConsole); - wlan_logging_set_active(hdd_ctx->config->wlanLoggingEnable); + hdd_set_wlan_logging(hdd_ctx); skip_multicast_logging: hdd_set_trace_level_for_each(hdd_ctx); diff --git a/core/hdd/src/wlan_hdd_regulatory.c b/core/hdd/src/wlan_hdd_regulatory.c index ac7ea8c6cd77..82e4a9057c7a 100644 --- a/core/hdd/src/wlan_hdd_regulatory.c +++ b/core/hdd/src/wlan_hdd_regulatory.c @@ -391,27 +391,6 @@ static void hdd_set_dfs_region(struct hdd_context *hdd_ctx, { wlan_reg_set_dfs_region(hdd_ctx->hdd_pdev, dfs_reg); } -#else -static void hdd_set_dfs_region(struct hdd_context *hdd_ctx, - enum dfs_region dfs_reg) -{ - /* remap the ctl code to dfs region code */ - switch (hdd_ctx->reg.ctl_5g) { - case FCC: - cds_put_dfs_region(DFS_FCC_REGION); - break; - case ETSI: - cds_put_dfs_region(DFS_ETSI_REGION); - break; - case MKK: - cds_put_dfs_region(DFS_MKK_REGION); - break; - default: - /* set default dfs_region to FCC */ - cds_put_dfs_region(DFS_FCC_REGION); - break; - } -} #endif /** @@ -526,7 +505,6 @@ static void hdd_process_regulatory_data(struct hdd_context *hdd_ctx, wlan_hdd_cfg80211_update_band(hdd_ctx, wiphy, band_capability); } - /** * hdd_regulatory_init_no_offload() - regulatory init * @hdd_ctx: hdd context @@ -904,6 +882,7 @@ static void fill_wiphy_band_channels(struct wiphy *wiphy, } } +#ifdef FEATURE_WLAN_CH_AVOID /** * hdd_ch_avoid_ind() - Avoid notified channels from FW handler * @adapter: HDD adapter pointer @@ -993,7 +972,7 @@ void hdd_ch_avoid_ind(struct hdd_context *hdd_ctxt, qdf_mem_free(local_unsafe_list); } - +#endif static void hdd_regulatory_dyn_cbk(struct wlan_objmgr_psoc *psoc, struct wlan_objmgr_pdev *pdev, diff --git a/core/hdd/src/wlan_hdd_stats.c b/core/hdd/src/wlan_hdd_stats.c index 618cc3d4201f..6a93eecaa0f7 100644 --- a/core/hdd/src/wlan_hdd_stats.c +++ b/core/hdd/src/wlan_hdd_stats.c @@ -4529,9 +4529,11 @@ static bool wlan_fill_survey_result(struct survey_info *survey, int opfreq, if (clock_freq == 0) return true; - survey->time = chan_info->cycle_count / clock_freq; - survey->time_busy = chan_info->rx_clear_count / clock_freq; - survey->time_tx = chan_info->tx_frame_count / clock_freq; + survey->time = qdf_do_div(chan_info->cycle_count, clock_freq); + + survey->time_busy = qdf_do_div(chan_info->rx_clear_count, clock_freq); + + survey->time_tx = qdf_do_div(chan_info->tx_frame_count, clock_freq); survey->filled |= SURVEY_INFO_TIME | SURVEY_INFO_TIME_BUSY | @@ -4558,9 +4560,13 @@ static bool wlan_fill_survey_result(struct survey_info *survey, int opfreq, if (clock_freq == 0) return true; - survey->channel_time = chan_info->cycle_count / clock_freq; - survey->channel_time_busy = chan_info->rx_clear_count / clock_freq; - survey->channel_time_tx = chan_info->tx_frame_count / clock_freq; + survey->channel_time = qdf_do_div(chan_info->cycle_count, clock_freq); + + survey->channel_time_busy = qdf_do_div(chan_info->rx_clear_count, + clock_freq); + + survey->channel_time_tx = qdf_do_div(chan_info->tx_frame_count, + clock_freq); survey->filled |= SURVEY_INFO_CHANNEL_TIME | SURVEY_INFO_CHANNEL_TIME_BUSY | diff --git a/core/hdd/src/wlan_hdd_stats.h b/core/hdd/src/wlan_hdd_stats.h index 654c253ab178..f5049e0fbcd0 100644 --- a/core/hdd/src/wlan_hdd_stats.h +++ b/core/hdd/src/wlan_hdd_stats.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2017 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -209,6 +209,13 @@ wlan_hdd_cfg80211_ll_stats_ext_set_param(struct wiphy *wiphy, return -EINVAL; } +static inline +int wlan_hdd_ll_stats_get(hdd_adapter_t *adapter, uint32_t req_id, + uint32_t req_mask) +{ + return -EINVAL; +} + #endif /* End of WLAN_FEATURE_LINK_LAYER_STATS */ #ifdef WLAN_FEATURE_STATS_EXT diff --git a/core/hdd/src/wlan_hdd_wext.c b/core/hdd/src/wlan_hdd_wext.c index cda14f9b106f..a488cbea2fa4 100644 --- a/core/hdd/src/wlan_hdd_wext.c +++ b/core/hdd/src/wlan_hdd_wext.c @@ -10888,7 +10888,9 @@ static const iw_handler we_private[] = { iw_hdd_set_var_ints_getnone, [WLAN_PRIV_SET_NONE_GET_THREE_INT - SIOCIWFIRSTPRIV] = iw_setnone_get_threeint, +#ifdef WLAN_FEATURE_FIPS [WLAN_PRIV_FIPS_TEST - SIOCIWFIRSTPRIV] = hdd_fips_test, +#endif [WLAN_PRIV_ADD_TSPEC - SIOCIWFIRSTPRIV] = iw_add_tspec, [WLAN_PRIV_DEL_TSPEC - SIOCIWFIRSTPRIV] = iw_del_tspec, [WLAN_PRIV_GET_TSPEC - SIOCIWFIRSTPRIV] = iw_get_tspec, diff --git a/core/mac/src/pe/lim/lim_process_fils.c b/core/mac/src/pe/lim/lim_process_fils.c index 1d6141a0aaf8..49b14d4aafc0 100644 --- a/core/mac/src/pe/lim/lim_process_fils.c +++ b/core/mac/src/pe/lim/lim_process_fils.c @@ -1562,7 +1562,7 @@ static int fils_aead_encrypt(const u8 *kek, unsigned int kek_len, anonce == NULL || data_len == 0 || plain_text_len == 0 || out == NULL) { QDF_TRACE(QDF_MODULE_ID_QDF, QDF_TRACE_LEVEL_ERROR, - FL("Error missing params mac:%pK bssid:%pK snonce:%pK anonce:%pK data_len:%lu plain_text_len:%lu out:%pK"), + FL("Error missing params mac:%pK bssid:%pK snonce:%pK anonce:%pK data_len:%zu plain_text_len:%zu out:%pK"), own_mac, bssid, snonce, anonce, data_len, plain_text_len, out); return -EINVAL; @@ -1714,7 +1714,7 @@ static int fils_aead_decrypt(const u8 *kek, unsigned int kek_len, anonce == NULL || data_len == 0 || ciphered_text_len == 0 || plain_text == NULL) { QDF_TRACE(QDF_MODULE_ID_QDF, QDF_TRACE_LEVEL_ERROR, - FL("Error missing params mac:%pK bssid:%pK snonce:%pK anonce:%pK data_len:%lu ciphered_text_len:%lu plain_text:%pK"), + FL("Error missing params mac:%pK bssid:%pK snonce:%pK anonce:%pK data_len:%zu ciphered_text_len:%zu plain_text:%pK"), own_mac, bssid, snonce, anonce, data_len, ciphered_text_len, plain_text); return -EINVAL; diff --git a/core/pld/src/pld_sdio.c b/core/pld/src/pld_sdio.c index 87df90a4d737..74884667f8cb 100644 --- a/core/pld/src/pld_sdio.c +++ b/core/pld/src/pld_sdio.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2017 The Linux Foundation. All rights reserved. + * Copyright (c) 2016-2018 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 @@ -35,8 +35,32 @@ /* SDIO manufacturer ID and Codes */ #define MANUFACTURER_ID_AR6320_BASE 0x500 #define MANUFACTURER_ID_QCA9377_BASE 0x700 +#define MANUFACTURER_ID_QCA9379_BASE 0x800 #define MANUFACTURER_CODE 0x271 +#ifndef CONFIG_CNSS +static const struct pld_fw_files fw_files_qca6174_fw_1_1 = { + PREFIX "qwlan11.bin", PREFIX "bdwlan11.bin", PREFIX "otp11.bin", + PREFIX "utf11.bin", PREFIX "utfbd11.bin", PREFIX "qsetup11.bin", + PREFIX "epping11.bin", ""}; +static const struct pld_fw_files fw_files_qca6174_fw_2_0 = { + PREFIX "qwlan20.bin", PREFIX "bdwlan20.bin", PREFIX "otp20.bin", + PREFIX "utf20.bin", PREFIX "utfbd20.bin", PREFIX "qsetup20.bin", + PREFIX "epping20.bin", ""}; +static const struct pld_fw_files fw_files_qca6174_fw_1_3 = { + PREFIX "qwlan13.bin", PREFIX "bdwlan13.bin", PREFIX "otp13.bin", + PREFIX "utf13.bin", PREFIX "utfbd13.bin", PREFIX "qsetup13.bin", + PREFIX "epping13.bin", ""}; +static const struct pld_fw_files fw_files_qca6174_fw_3_0 = { + PREFIX "qwlan30.bin", PREFIX "bdwlan30.bin", PREFIX "otp30.bin", + PREFIX "utf30.bin", PREFIX "utfbd30.bin", PREFIX "qsetup30.bin", + PREFIX "epping30.bin", PREFIX "qwlan30i.bin"}; +static const struct pld_fw_files fw_files_default = { + PREFIX "qwlan.bin", PREFIX "bdwlan.bin", PREFIX "otp.bin", + PREFIX "utf.bin", PREFIX "utfbd.bin", PREFIX "qsetup.bin", + PREFIX "epping.bin", ""}; +#endif + /** * pld_sdio_probe() - Probe function for SDIO platform driver * sdio_func: pointer to sdio device function @@ -229,6 +253,22 @@ static struct sdio_device_id pld_sdio_id_table[] = { {SDIO_DEVICE(MANUFACTURER_CODE, (MANUFACTURER_ID_QCA9377_BASE | 0xD))}, {SDIO_DEVICE(MANUFACTURER_CODE, (MANUFACTURER_ID_QCA9377_BASE | 0xE))}, {SDIO_DEVICE(MANUFACTURER_CODE, (MANUFACTURER_ID_QCA9377_BASE | 0xF))}, + {SDIO_DEVICE(MANUFACTURER_CODE, (MANUFACTURER_ID_QCA9379_BASE | 0x0))}, + {SDIO_DEVICE(MANUFACTURER_CODE, (MANUFACTURER_ID_QCA9379_BASE | 0x1))}, + {SDIO_DEVICE(MANUFACTURER_CODE, (MANUFACTURER_ID_QCA9379_BASE | 0x2))}, + {SDIO_DEVICE(MANUFACTURER_CODE, (MANUFACTURER_ID_QCA9379_BASE | 0x3))}, + {SDIO_DEVICE(MANUFACTURER_CODE, (MANUFACTURER_ID_QCA9379_BASE | 0x4))}, + {SDIO_DEVICE(MANUFACTURER_CODE, (MANUFACTURER_ID_QCA9379_BASE | 0x5))}, + {SDIO_DEVICE(MANUFACTURER_CODE, (MANUFACTURER_ID_QCA9379_BASE | 0x6))}, + {SDIO_DEVICE(MANUFACTURER_CODE, (MANUFACTURER_ID_QCA9379_BASE | 0x7))}, + {SDIO_DEVICE(MANUFACTURER_CODE, (MANUFACTURER_ID_QCA9379_BASE | 0x8))}, + {SDIO_DEVICE(MANUFACTURER_CODE, (MANUFACTURER_ID_QCA9379_BASE | 0x9))}, + {SDIO_DEVICE(MANUFACTURER_CODE, (MANUFACTURER_ID_QCA9379_BASE | 0xA))}, + {SDIO_DEVICE(MANUFACTURER_CODE, (MANUFACTURER_ID_QCA9379_BASE | 0xB))}, + {SDIO_DEVICE(MANUFACTURER_CODE, (MANUFACTURER_ID_QCA9379_BASE | 0xC))}, + {SDIO_DEVICE(MANUFACTURER_CODE, (MANUFACTURER_ID_QCA9379_BASE | 0xD))}, + {SDIO_DEVICE(MANUFACTURER_CODE, (MANUFACTURER_ID_QCA9379_BASE | 0xE))}, + {SDIO_DEVICE(MANUFACTURER_CODE, (MANUFACTURER_ID_QCA9379_BASE | 0xF))}, {}, }; @@ -267,14 +307,23 @@ void pld_sdio_unregister_driver(void) cnss_sdio_wlan_unregister_driver(&pld_sdio_ops); } #else + +#ifdef CONFIG_PM +static const struct dev_pm_ops pld_device_pm_ops = { + .suspend = pld_sdio_suspend, + .resume = pld_sdio_resume, +}; +#endif + struct sdio_driver pld_sdio_ops = { .name = "pld_sdio", .id_table = pld_sdio_id_table, .probe = pld_sdio_probe, .remove = pld_sdio_remove, -#ifdef CONFIG_PM - .suspend = pld_sdio_suspend, - .resume = pld_sdio_resume, +#if defined(CONFIG_PM) + .drv = { + .pm = &pld_device_pm_ops, + } #endif }; @@ -388,6 +437,7 @@ int pld_sdio_get_fw_files_for_target(struct pld_fw_files *pfw_files, memcpy(pfw_files, &fw_files_qca6174_fw_3_0, sizeof(*pfw_files)); break; case PLD_QCA9377_REV1_1_VERSION: + case PLD_QCA9379_REV1_VERSION: get_qca9377_fw_files(pfw_files, sizeof(*pfw_files)); break; default: diff --git a/core/pld/src/pld_sdio.h b/core/pld/src/pld_sdio.h index 2468a6d77cd7..66bbb22998b9 100644 --- a/core/pld/src/pld_sdio.h +++ b/core/pld/src/pld_sdio.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2017 The Linux Foundation. All rights reserved. + * Copyright (c) 2016-2018 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 @@ -31,6 +31,7 @@ #endif #define PLD_QCA9377_REV1_1_VERSION 0x5020001 +#define PLD_QCA9379_REV1_VERSION 0x5040000 #define TOTAL_DUMP_SIZE 0x00200000 #ifndef CONFIG_CNSS @@ -45,26 +46,6 @@ #define PLD_AR6320_DEV_VERSION 0x1000000 -struct pld_fw_files fw_files_qca6174_fw_1_1 = { - PREFIX "qwlan11.bin", PREFIX "bdwlan11.bin", PREFIX "otp11.bin", - PREFIX "utf11.bin", PREFIX "utfbd11.bin", PREFIX "qsetup11.bin", - PREFIX "epping11.bin", ""}; -struct pld_fw_files fw_files_qca6174_fw_2_0 = { - PREFIX "qwlan20.bin", PREFIX "bdwlan20.bin", PREFIX "otp20.bin", - PREFIX "utf20.bin", PREFIX "utfbd20.bin", PREFIX "qsetup20.bin", - PREFIX "epping20.bin", ""}; -struct pld_fw_files fw_files_qca6174_fw_1_3 = { - PREFIX "qwlan13.bin", PREFIX "bdwlan13.bin", PREFIX "otp13.bin", - PREFIX "utf13.bin", PREFIX "utfbd13.bin", PREFIX "qsetup13.bin", - PREFIX "epping13.bin", ""}; -struct pld_fw_files fw_files_qca6174_fw_3_0 = { - PREFIX "qwlan30.bin", PREFIX "bdwlan30.bin", PREFIX "otp30.bin", - PREFIX "utf30.bin", PREFIX "utfbd30.bin", PREFIX "qsetup30.bin", - PREFIX "epping30.bin", PREFIX "qwlan30i.bin"}; -struct pld_fw_files fw_files_default = { - PREFIX "qwlan.bin", PREFIX "bdwlan.bin", PREFIX "otp.bin", - PREFIX "utf.bin", PREFIX "utfbd.bin", PREFIX "qsetup.bin", - PREFIX "epping.bin", ""}; #endif #ifndef CONFIG_SDIO @@ -94,11 +75,20 @@ int pld_sdio_register_driver(void); void pld_sdio_unregister_driver(void); int pld_sdio_get_fw_files_for_target(struct pld_fw_files *pfw_files, u32 target_type, u32 target_version); +#ifdef CONFIG_CNSS static inline uint8_t *pld_sdio_get_wlan_mac_address(struct device *dev, uint32_t *num) { return cnss_common_get_wlan_mac_address(dev, num); } +#else +static inline uint8_t *pld_sdio_get_wlan_mac_address(struct device *dev, + uint32_t *num) +{ + *num = 0; + return NULL; +} +#endif #endif #ifdef CONFIG_PLD_SDIO_CNSS diff --git a/core/sme/inc/sme_api.h b/core/sme/inc/sme_api.h index 6cb6188f02bb..8b03d369a4a9 100644 --- a/core/sme/inc/sme_api.h +++ b/core/sme/inc/sme_api.h @@ -802,7 +802,16 @@ QDF_STATUS sme_get_reg_info(tHalHandle hHal, uint8_t chanId, QDF_STATUS sme_update_fw_tdls_state(tHalHandle hHal, void *psmeTdlsParams, bool useSmeLock); #endif /* FEATURE_WLAN_TDLS */ -QDF_STATUS sme_ch_avoid_update_req(tHalHandle hHal); + +#ifdef FEATURE_WLAN_CH_AVOID +QDF_STATUS sme_ch_avoid_update_req(tHalHandle hal_handle); +#else +static inline +QDF_STATUS sme_ch_avoid_update_req(tHalHandle hal_handle) +{ + return QDF_STATUS_SUCCESS; +} +#endif #ifdef FEATURE_WLAN_AUTO_SHUTDOWN QDF_STATUS sme_set_auto_shutdown_cb(tHalHandle hHal, void (*pCallbackfn)(void)); QDF_STATUS sme_set_auto_shutdown_timer(tHalHandle hHal, uint32_t timer_value); diff --git a/core/sme/src/common/sme_api.c b/core/sme/src/common/sme_api.c index 4f5bcdc9e94a..6487ed4f1008 100644 --- a/core/sme/src/common/sme_api.c +++ b/core/sme/src/common/sme_api.c @@ -10505,6 +10505,7 @@ QDF_STATUS sme_set_auto_shutdown_timer(tHalHandle hHal, uint32_t timer_val) } #endif +#ifdef FEATURE_WLAN_CH_AVOID /* * sme_ch_avoid_update_req() - * API to request channel avoidance update from FW. @@ -10554,6 +10555,7 @@ QDF_STATUS sme_ch_avoid_update_req(tHalHandle hHal) return status; } +#endif /** * sme_set_miracast() - Function to set miracast value to UMAC diff --git a/core/wma/inc/wma_internal.h b/core/wma/inc/wma_internal.h index d5d234a49029..e599687a4be0 100644 --- a/core/wma/inc/wma_internal.h +++ b/core/wma/inc/wma_internal.h @@ -1079,10 +1079,11 @@ QDF_STATUS wma_set_led_flashing(tp_wma_handle wma_handle, struct flashing_req_params *flashing); #endif - +#ifdef FEATURE_WLAN_CH_AVOID QDF_STATUS wma_process_ch_avoid_update_req(tp_wma_handle wma_handle, tSirChAvoidUpdateReq * ch_avoid_update_req); +#endif #ifdef FEATURE_WLAN_TDLS diff --git a/core/wma/src/wma_data.c b/core/wma/src/wma_data.c index cc3a297cc064..8bc37bf8b471 100644 --- a/core/wma/src/wma_data.c +++ b/core/wma/src/wma_data.c @@ -51,6 +51,7 @@ #include "qdf_nbuf.h" #include "qdf_types.h" #include "qdf_mem.h" +#include "qdf_util.h" #include "wma_types.h" #include "lim_api.h" @@ -2764,11 +2765,15 @@ QDF_STATUS wma_tx_packet(void *wma_context, void *tx_frame, uint16_t frmLen, */ if (status) { /* Call Download Cb so that umac can free the buffer */ + u32 rem; + if (tx_frm_download_comp_cb) tx_frm_download_comp_cb(wma_handle->mac_context, tx_frame, WMA_TX_FRAME_BUFFER_FREE); - if (!(wma_handle->tx_fail_cnt % MAX_PRINT_FAILURE_CNT)) + rem = qdf_do_div_rem(wma_handle->tx_fail_cnt, + MAX_PRINT_FAILURE_CNT); + if (!rem) WMA_LOGE("%s: Failed to send Mgmt Frame", __func__); else WMA_LOGD("%s: Failed to send Mgmt Frame", __func__); diff --git a/core/wma/src/wma_features.c b/core/wma/src/wma_features.c index db0d7d0c1cea..3003184325e7 100644 --- a/core/wma/src/wma_features.c +++ b/core/wma/src/wma_features.c @@ -3863,6 +3863,7 @@ QDF_STATUS wma_set_led_flashing(tp_wma_handle wma_handle, } #endif /* WLAN_FEATURE_GPIO_LED_FLASHING */ +#ifdef FEATURE_WLAN_CH_AVOID /** * wma_process_ch_avoid_update_req() - handles channel avoid update request * @wma_handle: wma handle @@ -3896,6 +3897,7 @@ QDF_STATUS wma_process_ch_avoid_update_req(tp_wma_handle wma_handle, __func__); return status; } +#endif /** * wma_send_regdomain_info_to_fw() - send regdomain info to fw