defs.h 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327
  1. /**
  2. * This header file contains global constant/enum definitions,
  3. * global variable declaration.
  4. */
  5. #ifndef _WLAN_DEFS_H_
  6. #define _WLAN_DEFS_H_
  7. #include <linux/spinlock.h>
  8. extern unsigned int libertas_debug;
  9. #ifdef CONFIG_LIBERTAS_DEBUG
  10. #define DEBUG
  11. #define PROC_DEBUG
  12. #endif
  13. #define DRV_NAME "usb8xxx"
  14. #define lbs_pr_info(format, args...) \
  15. printk(KERN_INFO DRV_NAME": " format, ## args)
  16. #define lbs_pr_err(format, args...) \
  17. printk(KERN_ERR DRV_NAME": " format, ## args)
  18. #define lbs_pr_alert(format, args...) \
  19. printk(KERN_ALERT DRV_NAME": " format, ## args)
  20. #ifdef DEBUG
  21. #define lbs_pr_debug(level, format, args...) \
  22. do { if (libertas_debug >= level) \
  23. printk(KERN_INFO DRV_NAME": " format, ##args); } while (0)
  24. #define lbs_dev_dbg(level, device, format, args...) \
  25. lbs_pr_debug(level, "%s: " format, \
  26. (device)->bus_id , ## args)
  27. static inline void lbs_dbg_hex(char *prompt, u8 * buf, int len)
  28. {
  29. int i = 0;
  30. if (!libertas_debug)
  31. return;
  32. printk(KERN_DEBUG "%s: ", prompt);
  33. for (i = 1; i <= len; i++) {
  34. printk(KERN_DEBUG "%02x ", (u8) * buf);
  35. buf++;
  36. }
  37. printk("\n");
  38. }
  39. #else
  40. #define lbs_pr_debug(level, format, args...) do {} while (0)
  41. #define lbs_dev_dbg(level, device, format, args...) do {} while (0)
  42. #define lbs_dbg_hex(x,y,z) do {} while (0)
  43. #endif
  44. #define ENTER() lbs_pr_debug(1, "Enter: %s, %s:%i\n", \
  45. __FUNCTION__, __FILE__, __LINE__)
  46. #define LEAVE() lbs_pr_debug(1, "Leave: %s, %s:%i\n", \
  47. __FUNCTION__, __FILE__, __LINE__)
  48. /** Buffer Constants */
  49. /* The size of SQ memory PPA, DPA are 8 DWORDs, that keep the physical
  50. * addresses of TxPD buffers. Station has only 8 TxPD available, Whereas
  51. * driver has more local TxPDs. Each TxPD on the host memory is associated
  52. * with a Tx control node. The driver maintains 8 RxPD descriptors for
  53. * station firmware to store Rx packet information.
  54. *
  55. * Current version of MAC has a 32x6 multicast address buffer.
  56. *
  57. * 802.11b can have up to 14 channels, the driver keeps the
  58. * BSSID(MAC address) of each APs or Ad hoc stations it has sensed.
  59. */
  60. #define MRVDRV_MAX_MULTICAST_LIST_SIZE 32
  61. #define MRVDRV_NUM_OF_CMD_BUFFER 10
  62. #define MRVDRV_SIZE_OF_CMD_BUFFER (2 * 1024)
  63. #define MRVDRV_MAX_CHANNEL_SIZE 14
  64. #define MRVDRV_MAX_BSSID_LIST 64
  65. #define MRVDRV_ASSOCIATION_TIME_OUT 255
  66. #define MRVDRV_SNAP_HEADER_LEN 8
  67. #define WLAN_UPLD_SIZE 2312
  68. #define DEV_NAME_LEN 32
  69. /** Misc constants */
  70. /* This section defines 802.11 specific contants */
  71. #define MRVDRV_MAX_BSS_DESCRIPTS 16
  72. #define MRVDRV_MAX_REGION_CODE 6
  73. #define MRVDRV_IGNORE_MULTIPLE_DTIM 0xfffe
  74. #define MRVDRV_MIN_MULTIPLE_DTIM 1
  75. #define MRVDRV_MAX_MULTIPLE_DTIM 5
  76. #define MRVDRV_DEFAULT_MULTIPLE_DTIM 1
  77. #define MRVDRV_DEFAULT_LISTEN_INTERVAL 10
  78. #define MRVDRV_CHANNELS_PER_SCAN 4
  79. #define MRVDRV_MAX_CHANNELS_PER_SCAN 14
  80. #define MRVDRV_DEBUG_RX_PATH 0x00000001
  81. #define MRVDRV_DEBUG_TX_PATH 0x00000002
  82. #define MRVDRV_MIN_BEACON_INTERVAL 20
  83. #define MRVDRV_MAX_BEACON_INTERVAL 1000
  84. #define MRVDRV_BEACON_INTERVAL 100
  85. /** TxPD status */
  86. /* Station firmware use TxPD status field to report final Tx transmit
  87. * result, Bit masks are used to present combined situations.
  88. */
  89. #define MRVDRV_TxPD_POWER_MGMT_NULL_PACKET 0x01
  90. #define MRVDRV_TxPD_POWER_MGMT_LAST_PACKET 0x08
  91. /** Tx mesh flag */
  92. /* Currently we are using normal WDS flag as mesh flag.
  93. * TODO: change to proper mesh flag when MAC understands it.
  94. */
  95. #define TxPD_CONTROL_WDS_FRAME (1<<17)
  96. #define TxPD_MESH_FRAME TxPD_CONTROL_WDS_FRAME
  97. /** RxPD status */
  98. #define MRVDRV_RXPD_STATUS_OK 0x0001
  99. /** RxPD status - Received packet types */
  100. /** Rx mesh flag */
  101. /* Currently we are using normal WDS flag as mesh flag.
  102. * TODO: change to proper mesh flag when MAC understands it.
  103. */
  104. #define RxPD_CONTROL_WDS_FRAME (0x40)
  105. #define RxPD_MESH_FRAME RxPD_CONTROL_WDS_FRAME
  106. /** RSSI-related defines */
  107. /* RSSI constants are used to implement 802.11 RSSI threshold
  108. * indication. if the Rx packet signal got too weak for 5 consecutive
  109. * times, miniport driver (driver) will report this event to wrapper
  110. */
  111. #define MRVDRV_NF_DEFAULT_SCAN_VALUE (-96)
  112. /** RTS/FRAG related defines */
  113. #define MRVDRV_RTS_MIN_VALUE 0
  114. #define MRVDRV_RTS_MAX_VALUE 2347
  115. #define MRVDRV_FRAG_MIN_VALUE 256
  116. #define MRVDRV_FRAG_MAX_VALUE 2346
  117. /* This is for firmware specific length */
  118. #define EXTRA_LEN 36
  119. #define MRVDRV_ETH_TX_PACKET_BUFFER_SIZE \
  120. (ETH_FRAME_LEN + sizeof(struct txpd) + EXTRA_LEN)
  121. #define MRVDRV_ETH_RX_PACKET_BUFFER_SIZE \
  122. (ETH_FRAME_LEN + sizeof(struct rxpd) \
  123. + MRVDRV_SNAP_HEADER_LEN + EXTRA_LEN)
  124. #define CMD_F_HOSTCMD (1 << 0)
  125. #define FW_CAPINFO_WPA (1 << 0)
  126. /** WPA key LENGTH*/
  127. #define MRVL_MAX_KEY_WPA_KEY_LENGTH 32
  128. #define KEY_LEN_WPA_AES 16
  129. #define KEY_LEN_WPA_TKIP 32
  130. #define KEY_LEN_WEP_104 13
  131. #define KEY_LEN_WEP_40 5
  132. #define RF_ANTENNA_1 0x1
  133. #define RF_ANTENNA_2 0x2
  134. #define RF_ANTENNA_AUTO 0xFFFF
  135. #define BAND_B (0x01)
  136. #define BAND_G (0x02)
  137. #define ALL_802_11_BANDS (BAND_B | BAND_G)
  138. /** MACRO DEFINITIONS */
  139. #define CAL_NF(NF) ((s32)(-(s32)(NF)))
  140. #define CAL_RSSI(SNR, NF) ((s32)((s32)(SNR) + CAL_NF(NF)))
  141. #define SCAN_RSSI(RSSI) (0x100 - ((u8)(RSSI)))
  142. #define DEFAULT_BCN_AVG_FACTOR 8
  143. #define DEFAULT_DATA_AVG_FACTOR 8
  144. #define AVG_SCALE 100
  145. #define CAL_AVG_SNR_NF(AVG, SNRNF, N) \
  146. (((AVG) == 0) ? ((u16)(SNRNF) * AVG_SCALE) : \
  147. ((((int)(AVG) * (N -1)) + ((u16)(SNRNF) * \
  148. AVG_SCALE)) / N))
  149. #define B_SUPPORTED_RATES 8
  150. #define G_SUPPORTED_RATES 14
  151. #define WLAN_SUPPORTED_RATES 14
  152. #define MAX_LEDS 8
  153. #define IS_MESH_FRAME(x) (x->cb[6])
  154. #define SET_MESH_FRAME(x) (x->cb[6]=1)
  155. #define UNSET_MESH_FRAME(x) (x->cb[6]=0)
  156. /** Global Variable Declaration */
  157. typedef struct _wlan_private wlan_private;
  158. typedef struct _wlan_adapter wlan_adapter;
  159. extern const char libertas_driver_version[];
  160. extern u16 libertas_region_code_to_index[MRVDRV_MAX_REGION_CODE];
  161. extern u8 libertas_wlan_data_rates[WLAN_SUPPORTED_RATES];
  162. extern u8 libertas_supported_rates[G_SUPPORTED_RATES];
  163. extern u8 libertas_adhoc_rates_g[G_SUPPORTED_RATES];
  164. extern u8 libertas_adhoc_rates_b[4];
  165. /** ENUM definition*/
  166. /** SNRNF_TYPE */
  167. enum SNRNF_TYPE {
  168. TYPE_BEACON = 0,
  169. TYPE_RXPD,
  170. MAX_TYPE_B
  171. };
  172. /** SNRNF_DATA*/
  173. enum SNRNF_DATA {
  174. TYPE_NOAVG = 0,
  175. TYPE_AVG,
  176. MAX_TYPE_AVG
  177. };
  178. /** WLAN_802_11_POWER_MODE */
  179. enum WLAN_802_11_POWER_MODE {
  180. wlan802_11powermodecam,
  181. wlan802_11powermodemax_psp,
  182. wlan802_11Powermodefast_psp,
  183. /*not a real mode, defined as an upper bound */
  184. wlan802_11powemodemax
  185. };
  186. /** PS_STATE */
  187. enum PS_STATE {
  188. PS_STATE_FULL_POWER,
  189. PS_STATE_AWAKE,
  190. PS_STATE_PRE_SLEEP,
  191. PS_STATE_SLEEP
  192. };
  193. /** DNLD_STATE */
  194. enum DNLD_STATE {
  195. DNLD_RES_RECEIVED,
  196. DNLD_DATA_SENT,
  197. DNLD_CMD_SENT
  198. };
  199. /** WLAN_MEDIA_STATE */
  200. enum WLAN_MEDIA_STATE {
  201. libertas_connected,
  202. libertas_disconnected
  203. };
  204. /** WLAN_802_11_PRIVACY_FILTER */
  205. enum WLAN_802_11_PRIVACY_FILTER {
  206. wlan802_11privfilteracceptall,
  207. wlan802_11privfilter8021xWEP
  208. };
  209. /** mv_ms_type */
  210. enum mv_ms_type {
  211. MVMS_DAT = 0,
  212. MVMS_CMD = 1,
  213. MVMS_TXDONE = 2,
  214. MVMS_EVENT
  215. };
  216. /** SNMP_MIB_INDEX_e */
  217. enum SNMP_MIB_INDEX_e {
  218. desired_bsstype_i = 0,
  219. op_rateset_i,
  220. bcnperiod_i,
  221. dtimperiod_i,
  222. assocrsp_timeout_i,
  223. rtsthresh_i,
  224. short_retrylim_i,
  225. long_retrylim_i,
  226. fragthresh_i,
  227. dot11d_i,
  228. dot11h_i,
  229. manufid_i,
  230. prodID_i,
  231. manuf_oui_i,
  232. manuf_name_i,
  233. manuf_prodname_i,
  234. manuf_prodver_i,
  235. };
  236. /** KEY_TYPE_ID */
  237. enum KEY_TYPE_ID {
  238. KEY_TYPE_ID_WEP = 0,
  239. KEY_TYPE_ID_TKIP,
  240. KEY_TYPE_ID_AES
  241. };
  242. /** KEY_INFO_WPA (applies to both TKIP and AES/CCMP) */
  243. enum KEY_INFO_WPA {
  244. KEY_INFO_WPA_MCAST = 0x01,
  245. KEY_INFO_WPA_UNICAST = 0x02,
  246. KEY_INFO_WPA_ENABLED = 0x04
  247. };
  248. /** SNMP_MIB_VALUE_e */
  249. enum SNMP_MIB_VALUE_e {
  250. SNMP_MIB_VALUE_INFRA = 1,
  251. SNMP_MIB_VALUE_ADHOC
  252. };
  253. /* Default values for fwt commands. */
  254. #define FWT_DEFAULT_METRIC 0
  255. #define FWT_DEFAULT_DIR 1
  256. #define FWT_DEFAULT_SSN 0xffffffff
  257. #define FWT_DEFAULT_DSN 0
  258. #define FWT_DEFAULT_HOPCOUNT 0
  259. #define FWT_DEFAULT_TTL 0
  260. #define FWT_DEFAULT_EXPIRATION 0
  261. #define FWT_DEFAULT_SLEEPMODE 0
  262. #define FWT_DEFAULT_SNR 0
  263. #endif /* _WLAN_DEFS_H_ */