1712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroy/* Encapsulate basic setting changes on Hermes hardware
2712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroy *
3712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroy * See copyright notice in main.c
4712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroy */
5712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroy#ifndef _ORINOCO_HW_H_
6712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroy#define _ORINOCO_HW_H_
7712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroy
8712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroy#include <linux/types.h>
9712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroy#include <linux/wireless.h>
10c63cdbe8f80487c372fe0dfe460ed30467029f01David Kilroy#include <net/cfg80211.h>
11712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroy
12712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroy/* Hardware BAPs */
13712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroy#define USER_BAP 0
14712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroy#define IRQ_BAP  1
15712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroy
16712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroy/* WEP key sizes */
17712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroy#define SMALL_KEY_SIZE 5
18712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroy#define LARGE_KEY_SIZE 13
19712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroy
20712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroy/* Number of supported channels */
21712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroy#define NUM_CHANNELS 14
22712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroy
23712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroy/* Forward declarations */
24712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroystruct orinoco_private;
25712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroy
263414fc3f527ce74cfca543c37bcb52c8e63b915eDavid Kilroyint determine_fw_capabilities(struct orinoco_private *priv, char *fw_name,
273414fc3f527ce74cfca543c37bcb52c8e63b915eDavid Kilroy			      size_t fw_name_len, u32 *hw_ver);
28e9e3d0100eae5f254024bd59229ef1be2b719b84David Kilroyint orinoco_hw_read_card_settings(struct orinoco_private *priv, u8 *dev_addr);
2942a51b933034bbed93fa54009c96a482044e5b43David Kilroyint orinoco_hw_allocate_fid(struct orinoco_private *priv);
30712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroyint orinoco_get_bitratemode(int bitrate, int automatic);
31712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroyvoid orinoco_get_ratemode_cfg(int ratemode, int *bitrate, int *automatic);
32712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroy
33721aa2f75b00399074eb443fdf16d797b4504a36David Kilroyint orinoco_hw_program_rids(struct orinoco_private *priv);
34712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroyint orinoco_hw_get_tkip_iv(struct orinoco_private *priv, int key, u8 *tsc);
35712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroyint __orinoco_hw_set_bitrate(struct orinoco_private *priv);
36712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroyint orinoco_hw_get_act_bitrate(struct orinoco_private *priv, int *bitrate);
37712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroyint __orinoco_hw_set_wap(struct orinoco_private *priv);
38712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroyint __orinoco_hw_setup_wepkeys(struct orinoco_private *priv);
39712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroyint __orinoco_hw_setup_enc(struct orinoco_private *priv);
4098e5f404485d5d11b15e8351535a0e064a37647cDavid Kilroyint __orinoco_hw_set_tkip_key(struct orinoco_private *priv, int key_idx,
4116e158480d542f3909b5aca8b125af986ae128c1David Kilroy			      int set_tx, u8 *key, u8 *rsc, size_t rsc_len,
4216e158480d542f3909b5aca8b125af986ae128c1David Kilroy			      u8 *tsc, size_t tsc_len);
43712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroyint orinoco_clear_tkip_key(struct orinoco_private *priv, int key_idx);
44712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroyint __orinoco_hw_set_multicast_list(struct orinoco_private *priv,
45655ffee284dfcf9a24ac0343f3e5ee6db85b85c5Jiri Pirko				    struct net_device *dev,
46712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroy				    int mc_count, int promisc);
47712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroyint orinoco_hw_get_essid(struct orinoco_private *priv, int *active,
48933d594313a5928ffc5325d7bbb6e2383d79622ePavel Roskin			 char buf[IW_ESSID_MAX_SIZE + 1]);
49712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroyint orinoco_hw_get_freq(struct orinoco_private *priv);
50712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroyint orinoco_hw_get_bitratelist(struct orinoco_private *priv,
51712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroy			       int *numrates, s32 *rates, int max);
52c63cdbe8f80487c372fe0dfe460ed30467029f01David Kilroyint orinoco_hw_trigger_scan(struct orinoco_private *priv,
53c63cdbe8f80487c372fe0dfe460ed30467029f01David Kilroy			    const struct cfg80211_ssid *ssid);
5407542d08ee573b6d8281f38430117b52fccaf50aDavid Kilroyint orinoco_hw_disassociate(struct orinoco_private *priv,
5507542d08ee573b6d8281f38430117b52fccaf50aDavid Kilroy			    u8 *addr, u16 reason_code);
562b2603515e26466685895e93cae59bc061389f11David Kilroyint orinoco_hw_get_current_bssid(struct orinoco_private *priv,
572b2603515e26466685895e93cae59bc061389f11David Kilroy				 u8 *addr);
58712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroy
59712a4342a0d89e855a03ba06fb11f7eb29456d45David Kilroy#endif /* _ORINOCO_HW_H_ */
60