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

📄 os_wireless.h

📁 marvell wifi driver GSPI-8385-LINUX-OMAP1510-5.0.10.p0-144-src.rar
💻 H
字号:
#ifndef _WIRELESS_H
#define _WIRELESS_H

#define IW_CUSTOM_MAX		256	/* In bytes */
/* Maximum size of the ESSID and NICKN strings */
#define IW_ESSID_MAX_SIZE	32
#define	IW_SCAN_MAX_DATA	4096	/* In bytes */
#define IW_ENCODING_TOKEN_MAX	32	/* 256 bits (for now) */
#define IW_MAX_BITRATES		8

typedef enum{
	SIOCIWFIRSTPRIV	=0x8BE0,
	SIOCGIWAP	=0x8B15,
	SIOCIWLASTPRIV	=0x8BFF
}PRIV_IOCTL;

typedef enum{
	SIOCIWFIRST	=0x8B00,
	SIOCIWLAST	=0x8BFF //SIOCIWLASTPRIV	
}CMD_IOCTL;

/* ----------------------- WIRELESS EVENTS ----------------------- */
typedef enum{
	IWEVTXDROP=	0x8C00,		/* Packet dropped to excessive retry */
	IWEVQUAL=	0x8C01,		/* Quality part of statistics (scan) */
	IWEVCUSTOM=	0x8C02,		/* Driver specific ascii string */
	IWEVREGISTERED=	0x8C03,		/* Discovered a new node (AP mode) */
	IWEVEXPIRED=	0x8C04,		/* Expired a node (AP mode) */
	IWEVFIRST=	0x8C00
}IW_EVENT;

typedef enum{
	IW_DESCR_FLAG_NONE=	0x0000,	/* Obvious */
		/* Wrapper level flags */
	IW_DESCR_FLAG_DUMP=	0x0001,	/* Not part of the dump command */
	IW_DESCR_FLAG_EVENT=	0x0002,	/* Generate an event on SET */
	IW_DESCR_FLAG_RESTRICT=	0x0004,	/* GET : request is ROOT only */
		/* Driver level flags */
	IW_DESCR_FLAG_WAIT=	0x0100
}IW_FLAG;

/* Modes of operation */
typedef enum {
	IW_MODE_AUTO = 0,	
	IW_MODE_ADHOC,
	IW_MODE_INFRA,
	IW_MODE_MASTER,
	IW_MODE_REPEAT,
	IW_MODE_SECOND,
	IW_MODE_MONITOR
}MODE;

typedef enum {
	IW_ENCODE_INDEX 	=0x00FF,	/* Token index */
	IW_ENCODE_FLAGS		=0xFF00,	/* Flags  */
	IW_ENCODE_MODE		=0xF000,	/* Modes  */
	IW_ENCODE_DISABLED	=0x8000,	/* Encoding disabled */
	IW_ENCODE_ENABLED	=0x0000,	/* Encoding enabled */
	IW_ENCODE_RESTRICTED	=0x4000,	/* Refuse non-encoded packets */
	IW_ENCODE_OPEN		=0x2000,	/* Accept non-encoded packets */
	IW_ENCODE_NOKEY         =0x0800 	 /* Key is write only, so not present */
}ENCODE;

/* Power management flags available (along with the value, if any) */
/* Transmit Power flags available */
typedef enum{
       	IW_TXPOW_TYPE		=0x00FF,	/* Type of value */
	IW_TXPOW_DBM		=0x0000,	/* Value is in dBm */
 	IW_TXPOW_MWATT		=0x0001,	/* Value is in mW */
	IW_TXPOW_RANGE		=0x1000 	/* Range of value between min/max */
}POWER;

typedef enum{
	IW_HEADER_TYPE_NULL	=0,	/* Not available */
	IW_HEADER_TYPE_CHAR	=2,	/* char [IFNAMSIZ] */
	IW_HEADER_TYPE_UINT	=4,	/* __u32 */
	IW_HEADER_TYPE_FREQ	=5,	/* struct iw_freq */
	IW_HEADER_TYPE_ADDR	=6,	/* struct sockaddr */
	IW_HEADER_TYPE_POINT	=8,	/* struct iw_point */
	IW_HEADER_TYPE_PARAM	=9,	/* struct iw_param */
	IW_HEADER_TYPE_QUAL	=10	/* struct iw_quality */
}HEADER_TYPE;

/****************************** TYPES ******************************/

struct	iw_param
{
  long int	value;		/* The value of the parameter itself */
  u8		fixed;		/* Hardware should not use auto select */
  u8		disabled;	/* Disable the feature */
  u16		flags;		/* Various specifc flags (if any) */
};

/*
 *	For all data larger than 16 octets, we need to use a
 *	pointer to memory allocated in user space.
 */
#if ALREADY_DEFND	//defined in wlan_net_device.h
struct	iw_point
{
  void *	pointer;	/* Pointer to the data  (in user space) */
  u16		length;		/* number of fields or size in bytes */
  u16		flags;		/* Optional params */
};
#endif

struct	iw_freq
{
	long int	m;		/* Mantissa */
	short int	e;		/* Exponent */
	u8		i;		/* List index (when in range struct) */
	u8		pad;		/* Unused - just for alignement */
}; 

struct	iw_quality
{
	u8		qual;		/* link quality (%retries, SNR,
					   %missed beacons or better...) */
	u8		level;		/* signal level (dBm) */
	u8		noise;		/* noise level (dBm) */
	u8		updated;	/* Flags to know if updated */
};

#define IFNAMSIZ	16
#define ARPHRD_ETHER	1

union	iwreq_data
{
	/* Config - generic */
	char		name[IFNAMSIZ];

	struct iw_point	essid;		/* Extended network name */
	struct iw_param	nwid;		/* network id (or domain - the cell) */
	struct iw_freq	freq;		/* frequency or channel :
					 * 0-1000 = channel
					 * > 1000 = frequency in Hz */

	struct iw_param	sens;		/* signal level threshold */
	struct iw_param	bitrate;	/* default bit rate */
	struct iw_param	txpower;	/* default transmit power */
	struct iw_param	rts;		/* RTS threshold threshold */
	struct iw_param	frag;		/* Fragmentation threshold */
	u32		mode;		/* Operation mode */
	struct iw_param	retry;		/* Retry limits & lifetime */

	struct iw_point	encoding;	/* Encoding stuff : tokens */
	struct iw_param	power;		/* PM duration/timeout */
	struct iw_quality qual;		/* Quality part of statistics */

	struct sockaddr	ap_addr;	/* Access point address */
	struct sockaddr	addr;		/* Destination address (hw) */

	struct iw_param	param;		/* Other small parameters */
	struct iw_point	data;		/* Other large parameters */
};

struct	iwreq 
{
	union
	{
		char	ifrn_name[IFNAMSIZ];	/* if name, e.g. "eth0" */
	} ifr_ifrn;

	union	iwreq_data	u;
};

struct iw_event
{
//This structure may not be reqrd but is retained for linux compatability	
	u16		len;			/* Real lenght of this stuff */
	u16		cmd;			/* Wireless IOCTL */
	union iwreq_data	u;		/* IOCTL fixed payload */
};

struct iw_ioctl_description
{
	u8	header_type;		/* NULL, iw_point or other */
	u8	token_type;		/* Future */
	u16	token_size;		/* Granularity of payload */
	u16	min_tokens;		/* Min acceptable token number */
	u16	max_tokens;		/* Max acceptable token number */
	u32	flags;			/* Special handling of the request */
};

#define IW_EV_LCP_LEN	(sizeof(struct iw_event) - sizeof(union iwreq_data))

#define IW_EV_CHAR_LEN	(IW_EV_LCP_LEN + IFNAMSIZ)
#define IW_EV_UINT_LEN	(IW_EV_LCP_LEN + sizeof(u32))
#define IW_EV_FREQ_LEN	(IW_EV_LCP_LEN + sizeof(struct iw_freq))
#define IW_EV_POINT_LEN	(IW_EV_LCP_LEN + sizeof(struct iw_point))
#define IW_EV_PARAM_LEN	(IW_EV_LCP_LEN + sizeof(struct iw_param))
#define IW_EV_ADDR_LEN	(IW_EV_LCP_LEN + sizeof(struct sockaddr))
#define IW_EV_QUAL_LEN	(IW_EV_LCP_LEN + sizeof(struct iw_quality))

#endif	/* _WIRELESS_H */

⌨️ 快捷键说明

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