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
This commit is contained in:
Nirav Shah 2018-02-15 11:20:58 +05:30 • committed by snandini
commit eb017befbd
30 changed files with 317 additions and 141 deletions

18
Kbuild
View file

@ -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

View file

@ -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, &reg_table);
if (!reg_table.section || !reg_table.section_size || !section_len) {

View file

@ -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);

View file

@ -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

View file

@ -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);

View file

@ -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 --------------------------------------------------*/

View file

@ -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_ */

View file

@ -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;

View file

@ -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

View file

@ -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 <ol_txrx_internal.h> /* TXRX_ASSERT, etc. */
#include <ol_rx_reorder.h> /* ol_rx_reorder_flush, etc. */
#include <ol_rx_reorder_timeout.h>
#ifdef QCA_SUPPORT_OL_RX_REORDER_TIMEOUT

View file

@ -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) */

View file

@ -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] = {

View file

@ -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

View file

@ -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

View file

@ -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;

View file

@ -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);
/**

View file

@ -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,

View file

@ -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);

View file

@ -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,

View file

@ -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 |

View file

@ -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

View file

@ -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,

View file

@ -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;

View file

@ -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:

View file

@ -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

View file

@ -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);

View file

@ -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

View file

@ -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

View file

@ -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__);

View file

@ -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