mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-12 07:37:31 -04:00
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:
parent
b45a07658c
commit
eb017befbd
30 changed files with 317 additions and 141 deletions
18
Kbuild
18
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
|
||||
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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 --------------------------------------------------*/
|
||||
|
||||
|
|
|
|||
|
|
@ -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_ */
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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) */
|
||||
|
|
|
|||
|
|
@ -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] = {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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 |
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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__);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue