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

📄 wlc_key.h

📁 wi-fi sources for asus wl138g v2 pci card
💻 H
字号:
/* * Key management related declarations * and exported functions for * Broadcom 802.11abg Networking Device Driver * * Copyright 2005-2006, Broadcom Corporation * All Rights Reserved.                 *                                      * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE. * * $Id$ */#ifndef _wlc_key_h_#define _wlc_key_h_struct scb;struct wlc_info;struct wlc_bsscfg;/* Maximum # of keys that wl driver supports in S/W. * Keys supported in H/W is less than or equal to WSEC_MAX_KEYS. */#define WSEC_MAX_KEYS		54	/* Max # of keys (50 + 4 default keys) */#define WLC_DEFAULT_KEYS	4	/* Default # of keys *//** Max # of keys currently supported:**     s/w keys if WSEC_SW(wlc->wsec).*     h/w keys otherwise.*/#define WLC_MAX_WSEC_KEYS(wlc) WSEC_MAX_KEYS/* number of 802.11 default (non-paired, group keys) */#define WSEC_MAX_DEFAULT_KEYS	4	/* # of default keys *//* SHM offset to default rxkeys */#define WSEC_RXKEYOFF	(WSEC_MAX_DEFAULT_KEYS*D11_MAX_KEY_SIZE)/* Max # of hardware keys supported */#define WLC_MAX_WSEC_HW_KEYS(wlc) ((D11REV_GE((wlc)->pub.corerev, 5)) ? \		WSEC_MAX_RCMTA_KEYS : WSEC_MAX_SEC_KEYS)/* index of key in key table */#define WSEC_KEY_INDEX(wlc, key)	((key)->idx)/* get a key, non-NULL only if key allocated and not clear */#define WSEC_KEY(wlc, i)	(((wlc)->wsec_keys[i] && (wlc)->wsec_keys[i]->len) ? \	(wlc)->wsec_keys[i] : NULL)/* default key */#define WSEC_BSS_DEFAULT_KEY(bsscfg) (((bsscfg)->wsec_index == -1) ? NULL : \	(bsscfg)->bss_def_keys[(bsscfg)->wsec_index])typedef struct wsec_iv {	uint32		hi;	/* upper 32 bits of IV */	uint16		lo;	/* lower 16 bits of IV */} wsec_iv_t;#define WLC_NUMRXIVS	16	/* # rx IVs (one per 802.11e TID) */typedef struct wsec_key {	struct ether_addr ea;		/* per station */	uint8		idx;		/* key index in wsec_keys array */	uint8		id;		/* key ID [0-3] */	uint8		algo;		/* CRYPTO_ALGO_AES_CCM, CRYPTO_ALGO_WEP128, etc */	uint8		flags;		/* misc flags */	uint8 		algo_hw;	/* cache for hw register */	uint8 		aes_mode;	/* cache for hw register */	int8		iv_len;		/* IV length */	int8		icv_len;	/* ICV length */	uint32		len;		/* key length..don't move this var */	/* data is 4byte aligned */	uint8		data[DOT11_MAX_KEY_SIZE];	/* key data */	wsec_iv_t	rxiv[WLC_NUMRXIVS];		/* Rx IV (one per TID) */	wsec_iv_t	txiv;		/* Tx IV */} wsec_key_t;typedef struct {	uint8	vec[WSEC_MAX_KEYS/NBBY];	/* bitvec of wsec_key indexes */} wsec_key_vec_t;/* For use with wsec_key_t.flags */#define WSEC_BS_UPDATE		(1 << 0)	/* Indicates hw needs key update on BS switch */#define WSEC_PRIMARY_KEY	(1 << 1)	/* Indicates this key is the primary (ie tx) key */#define WSEC_TKIP_ERROR		(1 << 2)	/* Provoke deliberate MIC error */#define WSEC_REPLAY_ERROR	(1 << 3)	/* Provoke deliberate replay */extern int wlc_key_insert(struct wlc_info *wlc, struct wlc_bsscfg *bsscfg, uint32 key_len,	uint32 key_id, uint32 key_flags, uint32 key_algo, uint8 *key_data,	struct ether_addr *key_ea, wsec_iv_t *initial_iv);extern void wlc_key_update(struct wlc_info *wlc, struct wlc_bsscfg *bsscfg, int i);extern void wlc_key_mssid_change(struct wlc_info *wlc, bool old_mssid, bool new_mssid);extern void wlc_key_remove(struct wlc_info *wlc, struct wlc_bsscfg *bsscfg, wl_wsec_key_t *remove);extern void wlc_key_remove_all(struct wlc_info *wlc);extern void wlc_key_delete(struct wlc_info *wlc, struct wlc_bsscfg *bsscfg, int index);extern void wlc_scb_key_delete(struct wlc_info *wlc, struct scb *scb);extern wsec_key_t* wlc_key_lookup(struct wlc_info *wlc, struct scb *scb, struct wlc_bsscfg *bsscfg,	uint index, bool ismulti);extern void wlc_key_bsupdate(struct wlc_info *wlc);extern void wlc_key_hw_init_all(struct wlc_info *wlc);extern void wlc_key_hw_init(struct wlc_info *wlc, int i);extern void wlc_key_iv_update(struct wlc_info *wlc, struct wlc_bsscfg *bsscfg, wsec_key_t *key,	uchar *buf, bool update);extern void wlc_key_iv_init(struct wlc_info *wlc, wsec_key_t *key, wsec_iv_t *initial_iv);extern uint32 wlc_key_defkeyflag(struct wlc_info *wlc);#endif /* _wlc_key_h_ */

⌨️ 快捷键说明

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