⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p80211netdev.h

📁 uClinux2.6上兼容PRISM2.0芯片组的USB设备驱动程序.
💻 H
字号:
/* src/include/wlan/p80211netdev.h** WLAN net device structure and functions** Copyright (C) 1999 AbsoluteValue Systems, Inc.  All Rights Reserved.* --------------------------------------------------------------------** linux-wlan**   The contents of this file are subject to the Mozilla Public*   License Version 1.1 (the "License"); you may not use this file*   except in compliance with the License. You may obtain a copy of*   the License at http://www.mozilla.org/MPL/**   Software distributed under the License is distributed on an "AS*   IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or*   implied. See the License for the specific language governing*   rights and limitations under the License.**   Alternatively, the contents of this file may be used under the*   terms of the GNU Public License version 2 (the "GPL"), in which*   case the provisions of the GPL are applicable instead of the*   above.  If you wish to allow the use of your version of this file*   only under the terms of the GPL and not to allow others to use*   your version of this file under the MPL, indicate your decision*   by deleting the provisions above and replace them with the notice*   and other provisions required by the GPL.  If you do not delete*   the provisions above, a recipient may use your version of this*   file under either the MPL or the GPL.** --------------------------------------------------------------------** Inquiries regarding the linux-wlan Open Source project can be* made directly to:** AbsoluteValue Systems Inc.* info@linux-wlan.com* http://www.linux-wlan.com** --------------------------------------------------------------------** Portions of the development of this software were funded by * Intersil Corporation as part of PRISM(R) chipset product development.** --------------------------------------------------------------------** This file declares the structure type that represents each wlan* interface.  ** --------------------------------------------------------------------*/#ifndef _LINUX_P80211NETDEV_H#define _LINUX_P80211NETDEV_H#include <linux/interrupt.h>#include <linux/wireless.h>/*================================================================*//* Constants */#define WLAN_DEVICE_CLOSED	0#define WLAN_DEVICE_OPEN	1#define WLAN_MACMODE_NONE	0#define WLAN_MACMODE_IBSS_STA	1#define WLAN_MACMODE_ESS_STA	2#define WLAN_MACMODE_ESS_AP	3/* MSD States */#define WLAN_MSD_START			-1#define WLAN_MSD_DRIVERLOADED		0#define WLAN_MSD_HWPRESENT_PENDING	1#define WLAN_MSD_HWFAIL			2#define WLAN_MSD_HWPRESENT		3#define WLAN_MSD_FWLOAD_PENDING		4#define WLAN_MSD_FWLOAD			5#define WLAN_MSD_RUNNING_PENDING	6#define WLAN_MSD_RUNNING		7#ifndef ETH_P_ECONET#define ETH_P_ECONET   0x0018    /* needed for 2.2.x kernels */#endif#define ETH_P_80211_RAW        (ETH_P_ECONET + 1)#ifndef ARPHRD_IEEE80211#define ARPHRD_IEEE80211 801     /* kernel 2.4.6 */#endif#ifndef ARPHRD_IEEE80211_PRISM  /* kernel 2.4.18 */#define ARPHRD_IEEE80211_PRISM 802#endif/*--- NSD Capabilities Flags ------------------------------*/#define P80211_NSDCAP_HARDWAREWEP           0x01  /* hardware wep engine */#define P80211_NSDCAP_TIEDWEP               0x02  /* can't decouple en/de */#define P80211_NSDCAP_NOHOSTWEP             0x04  /* must use hardware wep */#define P80211_NSDCAP_PBCC                  0x08  /* hardware supports PBCC */#define P80211_NSDCAP_SHORT_PREAMBLE        0x10  /* hardware supports */#define P80211_NSDCAP_AGILITY               0x20  /* hardware supports */#define P80211_NSDCAP_AP_RETRANSMIT         0x40  /* nsd handles retransmits */#define P80211_NSDCAP_HWFRAGMENT            0x80  /* nsd handles frag/defrag */#define P80211_NSDCAP_AUTOJOIN              0x100  /* nsd does autojoin */#define P80211_NSDCAP_NOSCAN                0x200  /* nsd can scan *//*================================================================*//* Macros *//*================================================================*//* Types *//* Received frame statistics */typedef struct p80211_frmrx_t {	UINT32	mgmt;	UINT32	assocreq;	UINT32	assocresp;	UINT32	reassocreq;	UINT32	reassocresp;	UINT32	probereq;	UINT32	proberesp;	UINT32	beacon;	UINT32	atim;	UINT32	disassoc;	UINT32	authen;	UINT32	deauthen;	UINT32	mgmt_unknown;	UINT32	ctl;	UINT32	pspoll;	UINT32	rts;	UINT32	cts;	UINT32	ack;	UINT32	cfend;	UINT32	cfendcfack;	UINT32	ctl_unknown;	UINT32	data;	UINT32	dataonly;	UINT32	data_cfack;	UINT32	data_cfpoll;	UINT32	data__cfack_cfpoll;	UINT32	null;	UINT32	cfack;	UINT32	cfpoll;	UINT32	cfack_cfpoll;	UINT32	data_unknown;	UINT32  decrypt;	UINT32  decrypt_err;} p80211_frmrx_t;#ifdef WIRELESS_EXT/* called by /proc/net/wireless */struct iw_statistics* p80211wext_get_wireless_stats(netdevice_t *dev);/* wireless extensions' ioctls */ int p80211wext_support_ioctl(netdevice_t *dev, struct ifreq *ifr, int cmd);#if WIRELESS_EXT > 12extern struct iw_handler_def p80211wext_handler_def;#endif#endif /* wireless extensions *//* WEP stuff */#define NUM_WEPKEYS 4#define MAX_KEYLEN 32#define HOSTWEP_DEFAULTKEY_MASK (BIT1|BIT0)#define HOSTWEP_DECRYPT  BIT4#define HOSTWEP_ENCRYPT  BIT5#define HOSTWEP_PRIVACYINVOKED BIT6#define HOSTWEP_EXCLUDEUNENCRYPTED BIT7extern int wlan_watchdog;extern int wlan_wext_write;/* WLAN device type */typedef struct wlandevice{	struct wlandevice	*next;		/* link for list of devices */	void			*priv;		/* private data for MSD */	/* Subsystem State */	char		name[WLAN_DEVNAMELEN_MAX]; /* Dev name, from register_wlandev()*/	char		*nsdname; 	UINT32          state;          /* Device I/F state (open/closed) */	UINT32		msdstate;	/* state of underlying driver */	UINT32		hwremoved;	/* Has the hw been yanked out? */	/* Hardware config */	UINT		irq;	UINT		iobase;	UINT		membase;	UINT32          nsdcaps;  /* NSD Capabilities flags */	/* Config vars */	UINT		ethconv;	/* device methods (init by MSD, used by p80211 */	int		(*open)(struct wlandevice *wlandev);	int		(*close)(struct wlandevice *wlandev);	void		(*reset)(struct wlandevice *wlandev );	int		(*txframe)(struct wlandevice *wlandev, struct sk_buff *skb, p80211_hdr_t *p80211_hdr, p80211_metawep_t *p80211_wep);	int		(*mlmerequest)(struct wlandevice *wlandev, p80211msg_t *msg);	int             (*set_multicast_list)(struct wlandevice *wlandev, 					      netdevice_t *dev);	void		(*tx_timeout)(struct wlandevice *wlandev);#ifdef CONFIG_PROC_FS	int             (*nsd_proc_read)(char *page, char **start, off_t offset, int count, int	*eof, void *data);#endif	/* 802.11 State */	UINT8		bssid[WLAN_BSSID_LEN];	p80211pstr32_t	ssid;	UINT32		macmode;	UINT            shortpreamble;  /* C bool */	/* WEP State */	UINT8 wep_keys[NUM_WEPKEYS][MAX_KEYLEN];	UINT8 wep_keylens[NUM_WEPKEYS];	int   hostwep;  	/* Request/Confirm i/f state (used by p80211) */	long			request_pending; /* flag, access atomically */	/* netlink socket */	/* queue for indications waiting for cmd completion */	/* Linux netdevice and support */	netdevice_t		*netdev;	/* ptr to linux netdevice */	struct net_device_stats linux_stats;#ifdef CONFIG_PROC_FS	/* Procfs support */	struct proc_dir_entry	*procdir;	struct proc_dir_entry	*procwlandev;#endif	/* Rx bottom half */	struct tasklet_struct	rx_bh;	struct sk_buff_head	nsd_rxq;	/* 802.11 device statistics */	struct p80211_frmrx_t	rx;/* compatibility to wireless extensions */#ifdef WIRELESS_EXT	struct iw_statistics	wstats;	/* jkriegl: iwspy fields */        UINT8			spy_number;        char			spy_address[IW_MAX_SPY][ETH_ALEN];        struct iw_quality       spy_stat[IW_MAX_SPY];#endif} wlandevice_t;/* WEP stuff */int wep_change_key(wlandevice_t *wlandev, int keynum, UINT8* key, int keylen);int wep_decrypt(wlandevice_t *wlandev, UINT8 *buf, UINT32 len, int key_override, UINT8 *iv, UINT8 *icv);int wep_encrypt(wlandevice_t *wlandev, UINT8 *buf, UINT8 *dst, UINT32 len, int keynum, UINT8 *iv, UINT8 *icv);/*================================================================*//* Externs *//*================================================================*//* Function Declarations */void	p80211netdev_startup(void);void	p80211netdev_shutdown(void);int	wlan_setup(wlandevice_t *wlandev);int	wlan_unsetup(wlandevice_t *wlandev);int	register_wlandev(wlandevice_t *wlandev);int	unregister_wlandev(wlandevice_t *wlandev);void	p80211netdev_rx(wlandevice_t *wlandev, struct sk_buff *skb);void	p80211netdev_hwremoved(wlandevice_t *wlandev);void    p80211_suspend(wlandevice_t *wlandev);void    p80211_resume(wlandevice_t *wlandev);/*================================================================*//* Function Definitions */static inline voidp80211netdev_stop_queue(wlandevice_t *wlandev){	if ( !wlandev ) return;	if ( !wlandev->netdev ) return;#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,38) )	wlandev->netdev->tbusy = 1;	wlandev->netdev->start = 0;#else	netif_stop_queue(wlandev->netdev);#endif}static inline voidp80211netdev_start_queue(wlandevice_t *wlandev){	if ( !wlandev ) return;	if ( !wlandev->netdev ) return;#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,38) )	wlandev->netdev->tbusy = 0;	wlandev->netdev->start = 1;#else	netif_start_queue(wlandev->netdev);#endif}static inline voidp80211netdev_wake_queue(wlandevice_t *wlandev){	if ( !wlandev ) return;	if ( !wlandev->netdev ) return;#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,38) )	wlandev->netdev->tbusy = 0;	mark_bh(NET_BH);#else	netif_wake_queue(wlandev->netdev);#endif}#ifdef CONFIG_HOTPLUG#define WLAN_HOTPLUG_REGISTER "register"#define WLAN_HOTPLUG_REMOVE   "remove"#define WLAN_HOTPLUG_STARTUP  "startup"#define WLAN_HOTPLUG_SHUTDOWN "shutdown"#define WLAN_HOTPLUG_SUSPEND "suspend"#define WLAN_HOTPLUG_RESUME "resume"int p80211_run_sbin_hotplug(wlandevice_t *wlandev, char *action);#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -