“066d3593e1b14690dc1131d50cacbb0b7eb3f160”上不存在“tools/perf/git@gitcode.net:openeuler/kernel.git”
dev.h 4.7 KB
Newer Older
1 2 3
/**
  * This file contains definitions and data structures specific
  * to Marvell 802.11 NIC. It contains the Device Information
4
  * structure struct lbs_private..
5
  */
6 7
#ifndef _LBS_DEV_H_
#define _LBS_DEV_H_
8

H
Holger Schurig 已提交
9
#include "mesh.h"
10 11
#include "scan.h"
#include "assoc.h"
12 13 14 15 16



/** sleep_params */
struct sleep_params {
17 18 19 20 21 22
	uint16_t sp_error;
	uint16_t sp_offset;
	uint16_t sp_stabletime;
	uint8_t  sp_calcontrol;
	uint8_t  sp_extsleepclk;
	uint16_t sp_reserved;
23 24 25 26
};


/** Private structure for the MV device */
27
struct lbs_private {
28 29 30 31 32 33 34 35 36 37

	/* Basic networking */
	struct net_device *dev;
	u32 connect_status;
	int infra_open;
	struct work_struct mcast_work;
	u32 nr_of_multicastmacaddr;
	u8 multicastlist[MRVDRV_MAX_MULTICAST_LIST_SIZE][ETH_ALEN];

	/* CFG80211 */
38
	struct wireless_dev *wdev;
39 40 41

	/* Mesh */
	struct net_device *mesh_dev; /* Virtual device */
H
Holger Schurig 已提交
42
#ifdef CONFIG_LIBERTAS_MESH
43 44
	u32 mesh_connect_status;
	struct lbs_mesh_stats mstats;
45
	int mesh_open;
46 47 48
	uint16_t mesh_tlv;
	u8 mesh_ssid[IEEE80211_MAX_SSID_LEN + 1];
	u8 mesh_ssid_len;
H
Holger Schurig 已提交
49
#endif
50

51
	/* Monitor mode */
52
	struct net_device *rtap_net_dev;
53
	u32 monitormode;
54

55
	/* Debugfs */
56 57 58 59 60 61 62 63
	struct dentry *debugfs_dir;
	struct dentry *debugfs_debug;
	struct dentry *debugfs_files[6];
	struct dentry *events_dir;
	struct dentry *debugfs_events_files[6];
	struct dentry *regs_dir;
	struct dentry *debugfs_regs_files[6];

64
	/* Hardware debugging */
65 66 67
	u32 mac_offset;
	u32 bbp_offset;
	u32 rf_offset;
68 69 70 71 72 73
	struct lbs_offset_value offsetvalue;

	/* Power management */
	u16 psmode;
	u32 psstate;
	u8 needtowakeup;
74

75
	/* Deep sleep */
76 77 78 79
	int is_deep_sleep;
	int is_auto_deep_sleep_enabled;
	int wakeup_dev_required;
	int is_activity_detected;
80 81 82
	int auto_deep_sleep_timeout; /* in ms */
	wait_queue_head_t ds_awake_q;
	struct timer_list auto_deepsleep_timer;
83

84 85 86 87
	/* Hardware access */
	void *card;
	u8 fw_ready;
	u8 surpriseremoved;
88
	int (*hw_host_to_card) (struct lbs_private *priv, u8 type, u8 *payload, u16 nb);
89
	void (*reset_card) (struct lbs_private *priv);
90 91 92
	int (*enter_deep_sleep) (struct lbs_private *priv);
	int (*exit_deep_sleep) (struct lbs_private *priv);
	int (*reset_deep_sleep_wakeup) (struct lbs_private *priv);
93

94
	/* Adapter info (from EEPROM) */
95
	u32 fwrelease;
96
	u32 fwcapinfo;
97 98
	u16 regioncode;
	u8 current_addr[ETH_ALEN];
99

100 101 102 103 104
	/* Command download */
	u8 dnld_sent;
	/* bit0 1/0=data_sent/data_tx_done,
	   bit1 1/0=cmd_sent/cmd_tx_done,
	   all other bits reserved 0 */
105 106 107
	u16 seqnum;
	struct cmd_ctrl_node *cmd_array;
	struct cmd_ctrl_node *cur_cmd;
108 109
	struct list_head cmdfreeq;    /* free command buffers */
	struct list_head cmdpendingq; /* pending command buffers */
110
	wait_queue_head_t cmd_pending;
111 112 113
	struct timer_list command_timer;
	int nr_retries;
	int cmd_timed_out;
114

115
	/* Command responses sent from the hardware to the driver */
116
	int cur_cmd_retcode;
117 118 119 120 121 122 123
	u8 resp_idx;
	u8 resp_buf[2][LBS_UPLD_SIZE];
	u32 resp_len[2];

	/* Events sent from hardware to driver */
	struct kfifo *event_fifo;

124 125 126 127
	/** thread to service interrupts */
	struct task_struct *main_thread;
	wait_queue_head_t waitq;
	struct workqueue_struct *work_thread;
128

129 130 131 132 133 134 135 136
	/** Encryption stuff */
	struct lbs_802_11_security secinfo;
	struct enc_key wpa_mcast_key;
	struct enc_key wpa_unicast_key;
	u8 wpa_ie[MAX_WPA_IE_LEN];
	u8 wpa_ie_len;
	u16 wep_tx_keyidx;
	struct enc_key wep_keys[4];
137

138 139 140 141
	/* Wake On LAN */
	uint32_t wol_criteria;
	uint8_t wol_gpio;
	uint8_t wol_gap;
142

143 144 145 146
	/* Transmitting */
	int tx_pending_len;		/* -1 while building packet */
	u8 tx_pending_buf[LBS_UPLD_SIZE];
	/* protected by hard_start_xmit serialization */
147 148 149
	u8 txretrycount;
	struct sk_buff *currenttxskb;

150 151 152 153 154
	/* Locks */
	struct mutex lock;
	spinlock_t driver_lock;

	/* NIC/link operation characteristics */
155
	u16 mac_control;
156
	u8 radio_on;
157
	u8 channel;
158 159 160
	s16 txpower_cur;
	s16 txpower_min;
	s16 txpower_max;
161

162 163 164 165 166 167
	/** Scanning */
	struct delayed_work scan_work;
	int scan_channel;
	/* remember which channel was scanned last, != 0 if currently scanning */
	u8 scan_ssid[IEEE80211_MAX_SSID_LEN + 1];
	u8 scan_ssid_len;
168

169 170 171 172 173 174 175
	/* Associating */
	struct delayed_work assoc_work;
	struct current_bss_params curbssparams;
	u8 mode;
	struct list_head network_list;
	struct list_head network_free_list;
	struct bss_descriptor *networks;
176 177
	struct assoc_request * pending_assoc_req;
	struct assoc_request * in_progress_assoc_req;
178
	uint16_t enablehwauto;
179

180 181 182 183
	/* ADHOC */
	u16 beacon_period;
	u8 beacon_enable;
	u8 adhoccreate;
184

185 186 187 188 189 190 191
	/* WEXT */
	char name[DEV_NAME_LEN];
	u8 nodename[16];
	struct iw_statistics wstats;
	u8 cur_rate;
#define	MAX_REGION_CHANNEL_NUM	2
	struct region_channel region_channel[MAX_REGION_CHANNEL_NUM];
192 193 194 195 196 197 198 199 200 201 202

	/** Requested Signal Strength*/
	u16 SNR[MAX_TYPE_B][MAX_TYPE_AVG];
	u16 NF[MAX_TYPE_B][MAX_TYPE_AVG];
	u8 RSSI[MAX_TYPE_B][MAX_TYPE_AVG];
	u8 rawSNR[DEFAULT_DATA_AVG_FACTOR];
	u8 rawNF[DEFAULT_DATA_AVG_FACTOR];
	u16 nextSNRNF;
	u16 numSNRNF;
};

203 204
extern struct cmd_confirm_sleep confirm_sleep;

205
#endif