linux/drivers/net/wireless/intersil/p54/lmac.h

/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * LMAC Interface specific definitions for mac80211 Prism54 drivers
 *
 * Copyright (c) 2006, Michael Wu <[email protected]>
 * Copyright (c) 2007 - 2009, Christian Lamparter <[email protected]>
 *
 * Based on:
 * - the islsm (softmac prism54) driver, which is:
 *   Copyright 2004-2006 Jean-Baptiste Note <[email protected]>, et al.
 *
 * - LMAC API interface header file for STLC4560 (lmac_longbow.h)
 *   Copyright (C) 2007 Conexant Systems, Inc.
 */

#ifndef LMAC_H
#define LMAC_H

enum p54_control_frame_types {};

#define P54_HDR_FLAG_CONTROL
#define P54_HDR_FLAG_CONTROL_OPSET
#define P54_HDR_FLAG_DATA_ALIGN

#define P54_HDR_FLAG_DATA_OUT_PROMISC
#define P54_HDR_FLAG_DATA_OUT_TIMESTAMP
#define P54_HDR_FLAG_DATA_OUT_SEQNR
#define P54_HDR_FLAG_DATA_OUT_BIT3
#define P54_HDR_FLAG_DATA_OUT_BURST
#define P54_HDR_FLAG_DATA_OUT_NOCANCEL
#define P54_HDR_FLAG_DATA_OUT_CLEARTIM
#define P54_HDR_FLAG_DATA_OUT_HITCHHIKE
#define P54_HDR_FLAG_DATA_OUT_COMPRESS
#define P54_HDR_FLAG_DATA_OUT_CONCAT
#define P54_HDR_FLAG_DATA_OUT_PCS_ACCEPT
#define P54_HDR_FLAG_DATA_OUT_WAITEOSP

#define P54_HDR_FLAG_DATA_IN_FCS_GOOD
#define P54_HDR_FLAG_DATA_IN_MATCH_MAC
#define P54_HDR_FLAG_DATA_IN_MCBC
#define P54_HDR_FLAG_DATA_IN_BEACON
#define P54_HDR_FLAG_DATA_IN_MATCH_BSS
#define P54_HDR_FLAG_DATA_IN_BCAST_BSS
#define P54_HDR_FLAG_DATA_IN_DATA
#define P54_HDR_FLAG_DATA_IN_TRUNCATED
#define P54_HDR_FLAG_DATA_IN_BIT8
#define P54_HDR_FLAG_DATA_IN_TRANSPARENT

struct p54_hdr {} __packed;

#define GET_REQ_ID(skb)	\

#define FREE_AFTER_TX(skb)

#define IS_DATA_FRAME(skb)

#define GET_HW_QUEUE(skb)

/*
 * shared interface ID definitions
 * The interface ID is a unique identification of a specific interface.
 * The following values are reserved: 0x0000, 0x0002, 0x0012, 0x0014, 0x0015
 */
#define IF_ID_ISL36356A
#define IF_ID_MVC
#define IF_ID_DEBUG
#define IF_ID_PRODUCT
#define IF_ID_OEM
#define IF_ID_PCI3877
#define IF_ID_ISL37704C
#define IF_ID_ISL39000
#define IF_ID_ISL39300A
#define IF_ID_ISL37700_UAP
#define IF_ID_ISL39000_UAP
#define IF_ID_LMAC

struct exp_if {} __packed;

struct dep_if {} __packed;

/* driver <-> lmac definitions */
struct p54_eeprom_lm86 {} __packed;

enum p54_rx_decrypt_status {};

struct p54_rx_data {} __packed;

enum p54_trap_type {};

struct p54_trap {} __packed;

enum p54_frame_sent_status {};

struct p54_frame_sent {} __packed;

enum p54_tx_data_crypt {};

enum p54_tx_data_queue {};

#define IS_QOS_QUEUE(n)

struct p54_tx_data {} __packed;

/* unit is ms */
#define P54_TX_FRAME_LIFETIME
#define P54_TX_TIMEOUT
#define P54_STATISTICS_UPDATE

#define P54_FILTER_TYPE_NONE
#define P54_FILTER_TYPE_STATION
#define P54_FILTER_TYPE_IBSS
#define P54_FILTER_TYPE_AP
#define P54_FILTER_TYPE_TRANSPARENT
#define P54_FILTER_TYPE_PROMISCUOUS
#define P54_FILTER_TYPE_HIBERNATE
#define P54_FILTER_TYPE_NOACK
#define P54_FILTER_TYPE_RX_DISABLED

struct p54_setup_mac {} __packed;

#define P54_SETUP_V1_LEN
#define P54_SETUP_V2_LEN

#define P54_SCAN_EXIT
#define P54_SCAN_TRAP
#define P54_SCAN_ACTIVE
#define P54_SCAN_FILTER

struct p54_scan_head {} __packed;

struct p54_pa_curve_data_sample {} __packed;

struct p54_scan_body {} __packed;

/*
 * Warning: Longbow's structures are bogus.
 */
struct p54_channel_output_limit_longbow {} __packed;

struct p54_pa_curve_data_sample_longbow {} __packed;

struct p54_scan_body_longbow {} __packed;

p54_scan_body_union __packed;

struct p54_scan_tail_rate {} __packed;

struct p54_led {} __packed;

struct p54_edcf {} __packed;

struct p54_statistics {} __packed;

struct p54_xbow_synth {} __packed;

struct p54_timer {} __packed;

struct p54_keycache {} __packed;

struct p54_burst {} __packed;

struct p54_psm_interval {} __packed;

#define P54_PSM_CAM
#define P54_PSM
#define P54_PSM_DTIM
#define P54_PSM_MCBC
#define P54_PSM_CHECKSUM
#define P54_PSM_SKIP_MORE_DATA
#define P54_PSM_BEACON_TIMEOUT
#define P54_PSM_HFOSLEEP
#define P54_PSM_AUTOSWITCH_SLEEP
#define P54_PSM_LPIT
#define P54_PSM_BF_UCAST_SKIP
#define P54_PSM_BF_MCAST_SKIP

struct p54_psm {} __packed;

#define MC_FILTER_ADDRESS_NUM

struct p54_group_address_table {} __packed;

struct p54_txcancel {} __packed;

struct p54_sta_unlock {} __packed;

#define P54_TIM_CLEAR
struct p54_tim {} __packed;

struct p54_cce_quiet {} __packed;

struct p54_bt_balancer {} __packed;

struct p54_arp_table {} __packed;

/* LED control */
int p54_set_leds(struct p54_common *priv);
int p54_init_leds(struct p54_common *priv);
void p54_unregister_leds(struct p54_common *priv);

/* xmit functions */
void p54_tx_80211(struct ieee80211_hw *dev,
		  struct ieee80211_tx_control *control,
		  struct sk_buff *skb);
int p54_tx_cancel(struct p54_common *priv, __le32 req_id);
void p54_tx(struct p54_common *priv, struct sk_buff *skb);

/* synth/phy configuration */
int p54_init_xbow_synth(struct p54_common *priv);
int p54_scan(struct p54_common *priv, u16 mode, u16 dwell);

/* MAC */
int p54_sta_unlock(struct p54_common *priv, u8 *addr);
int p54_update_beacon_tim(struct p54_common *priv, u16 aid, bool set);
int p54_setup_mac(struct p54_common *priv);
int p54_set_ps(struct p54_common *priv);
int p54_fetch_statistics(struct p54_common *priv);
int p54_set_groupfilter(struct p54_common *priv);

/* e/v DCF setup */
int p54_set_edcf(struct p54_common *priv);

/* cryptographic engine */
int p54_upload_key(struct p54_common *priv, u8 algo, int slot,
		   u8 idx, u8 len, u8 *addr, u8* key);

/* eeprom */
int p54_download_eeprom(struct p54_common *priv, void *buf,
			u16 offset, u16 len);
struct p54_rssi_db_entry *p54_rssi_find(struct p54_common *p, const u16 freq);

/* utility */
u8 *p54_find_ie(struct sk_buff *skb, u8 ie);

#endif /* LMAC_H */