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