linux/drivers/net/wireless/intel/iwlwifi/dvm/main.c

// SPDX-License-Identifier: GPL-2.0-only
/******************************************************************************
 *
 * Copyright(c) 2003 - 2014, 2018 - 2022 Intel Corporation. All rights reserved.
 * Copyright(c) 2024 Intel Corporation. All rights reserved.
 * Copyright(c) 2015 Intel Deutschland GmbH
 *
 * Portions of this file are derived from the ipw3945 project, as well
 * as portions of the ieee80211 subsystem header files.
 *****************************************************************************/

#define pr_fmt(fmt)

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/sched.h>
#include <linux/skbuff.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
#include <linux/if_arp.h>

#include <net/mac80211.h>

#include <asm/div64.h>

#include "iwl-nvm-utils.h"
#include "iwl-io.h"
#include "iwl-trans.h"
#include "iwl-op-mode.h"
#include "iwl-drv.h"
#include "iwl-modparams.h"
#include "iwl-prph.h"

#include "dev.h"
#include "calib.h"
#include "agn.h"


/******************************************************************************
 *
 * module boiler plate
 *
 ******************************************************************************/

#define DRV_DESCRIPTION
MODULE_DESCRIPTION();
MODULE_LICENSE();
MODULE_IMPORT_NS();

/* Please keep this array *SORTED* by hex value.
 * Access is done through binary search.
 * A warning will be triggered on violation.
 */
static const struct iwl_hcmd_names iwl_dvm_cmd_names[] =;

static const struct iwl_hcmd_arr iwl_dvm_groups[] =;

static const struct iwl_op_mode_ops iwl_dvm_ops;

void iwl_update_chain_flags(struct iwl_priv *priv)
{}

/* Parse the beacon frame to find the TIM element and set tim_idx & tim_size */
static void iwl_set_beacon_tim(struct iwl_priv *priv,
			       struct iwl_tx_beacon_cmd *tx_beacon_cmd,
			       u8 *beacon, u32 frame_size)
{}

int iwlagn_send_beacon_cmd(struct iwl_priv *priv)
{}

static void iwl_bg_beacon_update(struct work_struct *work)
{}

static void iwl_bg_bt_runtime_config(struct work_struct *work)
{}

static void iwl_bg_bt_full_concurrency(struct work_struct *work)
{}

int iwl_send_statistics_request(struct iwl_priv *priv, u8 flags, bool clear)
{}

/*
 * iwl_bg_statistics_periodic - Timer callback to queue statistics
 *
 * This callback is provided in order to send a statistics request.
 *
 * This timer function is continually reset to execute within
 * REG_RECALIB_PERIOD seconds since the last STATISTICS_NOTIFICATION
 * was received.  We need to ensure we receive the statistics in order
 * to update the temperature used for calibrating the TXPOWER.
 */
static void iwl_bg_statistics_periodic(struct timer_list *t)
{}


static void iwl_print_cont_event_trace(struct iwl_priv *priv, u32 base,
					u32 start_idx, u32 num_events,
					u32 capacity, u32 mode)
{}

static void iwl_continuous_event_trace(struct iwl_priv *priv)
{}

/*
 * iwl_bg_ucode_trace - Timer callback to log ucode event
 *
 * The timer is continually set to execute every
 * UCODE_TRACE_PERIOD milliseconds after the last timer expired
 * this function is to perform continuous uCode event logging operation
 * if enabled
 */
static void iwl_bg_ucode_trace(struct timer_list *t)
{}

static void iwl_bg_tx_flush(struct work_struct *work)
{}

/*
 * queue/FIFO/AC mapping definitions
 */

static const u8 iwlagn_bss_ac_to_fifo[] =;

static const u8 iwlagn_bss_ac_to_queue[] =;

static const u8 iwlagn_pan_ac_to_fifo[] =;

static const u8 iwlagn_pan_ac_to_queue[] =;

static void iwl_init_context(struct iwl_priv *priv, u32 ucode_flags)
{}

static void iwl_rf_kill_ct_config(struct iwl_priv *priv)
{}

static int iwlagn_send_calib_cfg_rt(struct iwl_priv *priv, u32 cfg)
{}


static int iwlagn_send_tx_ant_config(struct iwl_priv *priv, u8 valid_tx_ant)
{}

static void iwl_send_bt_config(struct iwl_priv *priv)
{}

/*
 * iwl_alive_start - called after REPLY_ALIVE notification received
 *                   from protocol/runtime uCode (initialization uCode's
 *                   Alive gets handled by iwl_init_alive_start()).
 */
int iwl_alive_start(struct iwl_priv *priv)
{}

/**
 * iwl_clear_driver_stations - clear knowledge of all stations from driver
 * @priv: iwl priv struct
 *
 * This is called during iwl_down() to make sure that in the case
 * we're coming there from a hardware restart mac80211 will be
 * able to reconfigure stations -- if we're getting there in the
 * normal down flow then the stations will already be cleared.
 */
static void iwl_clear_driver_stations(struct iwl_priv *priv)
{}

void iwl_down(struct iwl_priv *priv)
{}

/*****************************************************************************
 *
 * Workqueue callbacks
 *
 *****************************************************************************/

static void iwl_bg_run_time_calib_work(struct work_struct *work)
{}

void iwlagn_prepare_restart(struct iwl_priv *priv)
{}

static void iwl_bg_restart(struct work_struct *data)
{}

/*****************************************************************************
 *
 * driver setup and teardown
 *
 *****************************************************************************/

static void iwl_setup_deferred_work(struct iwl_priv *priv)
{}

void iwl_cancel_deferred_work(struct iwl_priv *priv)
{}

static int iwl_init_drv(struct iwl_priv *priv)
{}

static void iwl_uninit_drv(struct iwl_priv *priv)
{}

static void iwl_set_hw_params(struct iwl_priv *priv)
{}



/* show what optional capabilities we have */
static void iwl_option_config(struct iwl_priv *priv)
{}

static int iwl_eeprom_init_hw_params(struct iwl_priv *priv)
{}

static int iwl_nvm_check_version(struct iwl_nvm_data *data,
				 struct iwl_trans *trans)
{}

static struct iwl_op_mode *iwl_op_mode_dvm_start(struct iwl_trans *trans,
						 const struct iwl_cfg *cfg,
						 const struct iwl_fw *fw,
						 struct dentry *dbgfs_dir)
{}

static void iwl_op_mode_dvm_stop(struct iwl_op_mode *op_mode)
{}

static const char * const desc_lookup_text[] =;

static struct {} advanced_lookup[] =;

static const char *desc_lookup(u32 num)
{}

#define ERROR_START_OFFSET
#define ERROR_ELEM_SIZE

static void iwl_dump_nic_error_log(struct iwl_priv *priv)
{}

#define EVENT_START_OFFSET

/*
 * iwl_print_event_log - Dump error event log to syslog
 */
static int iwl_print_event_log(struct iwl_priv *priv, u32 start_idx,
			       u32 num_events, u32 mode,
			       int pos, char **buf, size_t bufsz)
{}

/*
 * iwl_print_last_event_logs - Dump the newest # of event log to syslog
 */
static int iwl_print_last_event_logs(struct iwl_priv *priv, u32 capacity,
				    u32 num_wraps, u32 next_entry,
				    u32 size, u32 mode,
				    int pos, char **buf, size_t bufsz)
{}

#define DEFAULT_DUMP_EVENT_LOG_ENTRIES

int iwl_dump_nic_event_log(struct iwl_priv *priv, bool full_log,
			    char **buf)
{}

static void iwlagn_fw_error(struct iwl_priv *priv, bool ondemand)
{}

static void iwl_nic_error(struct iwl_op_mode *op_mode, bool sync)
{}

static void iwl_cmd_queue_full(struct iwl_op_mode *op_mode)
{}

#define EEPROM_RF_CONFIG_TYPE_MAX

static void iwl_nic_config(struct iwl_op_mode *op_mode)
{}

static void iwl_wimax_active(struct iwl_op_mode *op_mode)
{}

static void iwl_stop_sw_queue(struct iwl_op_mode *op_mode, int queue)
{}

static void iwl_wake_sw_queue(struct iwl_op_mode *op_mode, int queue)
{}

void iwlagn_lift_passive_no_rx(struct iwl_priv *priv)
{}

static void iwl_free_skb(struct iwl_op_mode *op_mode, struct sk_buff *skb)
{}

static bool iwl_set_hw_rfkill_state(struct iwl_op_mode *op_mode, bool state)
{}

static const struct iwl_op_mode_ops iwl_dvm_ops =;

/*****************************************************************************
 *
 * driver and module entry point
 *
 *****************************************************************************/
static int __init iwl_init(void)
{}
module_init();

static void __exit iwl_exit(void)
{}
module_exit(iwl_exit);