Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v2.6.25 164 lines 4.2 kB view raw
1/* orinoco.h 2 * 3 * Common definitions to all pieces of the various orinoco 4 * drivers 5 */ 6 7#ifndef _ORINOCO_H 8#define _ORINOCO_H 9 10#define DRIVER_VERSION "0.15" 11 12#include <linux/netdevice.h> 13#include <linux/wireless.h> 14#include <net/iw_handler.h> 15 16#include "hermes.h" 17 18/* To enable debug messages */ 19//#define ORINOCO_DEBUG 3 20 21#define WIRELESS_SPY // enable iwspy support 22 23#define MAX_SCAN_LEN 4096 24 25#define ORINOCO_MAX_KEY_SIZE 14 26#define ORINOCO_MAX_KEYS 4 27 28struct orinoco_key { 29 __le16 len; /* always stored as little-endian */ 30 char data[ORINOCO_MAX_KEY_SIZE]; 31} __attribute__ ((packed)); 32 33typedef enum { 34 FIRMWARE_TYPE_AGERE, 35 FIRMWARE_TYPE_INTERSIL, 36 FIRMWARE_TYPE_SYMBOL 37} fwtype_t; 38 39typedef struct { 40 union hermes_scan_info bss; 41 unsigned long last_scanned; 42 struct list_head list; 43} bss_element; 44 45struct orinoco_private { 46 void *card; /* Pointer to card dependent structure */ 47 int (*hard_reset)(struct orinoco_private *); 48 49 /* Synchronisation stuff */ 50 spinlock_t lock; 51 int hw_unavailable; 52 struct work_struct reset_work; 53 54 /* driver state */ 55 int open; 56 u16 last_linkstatus; 57 struct work_struct join_work; 58 struct work_struct wevent_work; 59 60 /* Net device stuff */ 61 struct net_device *ndev; 62 struct net_device_stats stats; 63 struct iw_statistics wstats; 64 65 /* Hardware control variables */ 66 hermes_t hw; 67 u16 txfid; 68 69 /* Capabilities of the hardware/firmware */ 70 fwtype_t firmware_type; 71 char fw_name[32]; 72 int ibss_port; 73 int nicbuf_size; 74 u16 channel_mask; 75 76 /* Boolean capabilities */ 77 unsigned int has_ibss:1; 78 unsigned int has_port3:1; 79 unsigned int has_wep:1; 80 unsigned int has_big_wep:1; 81 unsigned int has_mwo:1; 82 unsigned int has_pm:1; 83 unsigned int has_preamble:1; 84 unsigned int has_sensitivity:1; 85 unsigned int has_hostscan:1; 86 unsigned int broken_disableport:1; 87 unsigned int broken_monitor:1; 88 89 /* Configuration paramaters */ 90 u32 iw_mode; 91 int prefer_port3; 92 u16 wep_on, wep_restrict, tx_key; 93 struct orinoco_key keys[ORINOCO_MAX_KEYS]; 94 int bitratemode; 95 char nick[IW_ESSID_MAX_SIZE+1]; 96 char desired_essid[IW_ESSID_MAX_SIZE+1]; 97 char desired_bssid[ETH_ALEN]; 98 int bssid_fixed; 99 u16 frag_thresh, mwo_robust; 100 u16 channel; 101 u16 ap_density, rts_thresh; 102 u16 pm_on, pm_mcast, pm_period, pm_timeout; 103 u16 preamble; 104#ifdef WIRELESS_SPY 105 struct iw_spy_data spy_data; /* iwspy support */ 106 struct iw_public_data wireless_data; 107#endif 108 109 /* Configuration dependent variables */ 110 int port_type, createibss; 111 int promiscuous, mc_count; 112 113 /* Scanning support */ 114 struct list_head bss_list; 115 struct list_head bss_free_list; 116 bss_element *bss_data; 117 118 int scan_inprogress; /* Scan pending... */ 119 u32 scan_mode; /* Type of scan done */ 120}; 121 122#ifdef ORINOCO_DEBUG 123extern int orinoco_debug; 124#define DEBUG(n, args...) do { if (orinoco_debug>(n)) printk(KERN_DEBUG args); } while(0) 125#else 126#define DEBUG(n, args...) do { } while (0) 127#endif /* ORINOCO_DEBUG */ 128 129/********************************************************************/ 130/* Exported prototypes */ 131/********************************************************************/ 132 133extern struct net_device *alloc_orinocodev(int sizeof_card, 134 int (*hard_reset)(struct orinoco_private *)); 135extern void free_orinocodev(struct net_device *dev); 136extern int __orinoco_up(struct net_device *dev); 137extern int __orinoco_down(struct net_device *dev); 138extern int orinoco_reinit_firmware(struct net_device *dev); 139extern irqreturn_t orinoco_interrupt(int irq, void * dev_id); 140 141/********************************************************************/ 142/* Locking and synchronization functions */ 143/********************************************************************/ 144 145static inline int orinoco_lock(struct orinoco_private *priv, 146 unsigned long *flags) 147{ 148 spin_lock_irqsave(&priv->lock, *flags); 149 if (priv->hw_unavailable) { 150 DEBUG(1, "orinoco_lock() called with hw_unavailable (dev=%p)\n", 151 priv->ndev); 152 spin_unlock_irqrestore(&priv->lock, *flags); 153 return -EBUSY; 154 } 155 return 0; 156} 157 158static inline void orinoco_unlock(struct orinoco_private *priv, 159 unsigned long *flags) 160{ 161 spin_unlock_irqrestore(&priv->lock, *flags); 162} 163 164#endif /* _ORINOCO_H */