Viewing file: orinoco.h (3.71 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* orinoco.h * * Common definitions to all pieces of the various orinoco * drivers */
#ifndef _ORINOCO_H #define _ORINOCO_H
/* To enable debug messages */ //#define ORINOCO_DEBUG 3
#if (! defined (WIRELESS_EXT)) || (WIRELESS_EXT < 10) #error "orinoco driver requires Wireless extensions v10 or later." #endif /* (! defined (WIRELESS_EXT)) || (WIRELESS_EXT < 10) */ #define WIRELESS_SPY // enable iwspy support
#define ORINOCO_MAX_KEY_SIZE 14 #define ORINOCO_MAX_KEYS 4
typedef struct orinoco_key { u16 len; /* always store little-endian */ char data[ORINOCO_MAX_KEY_SIZE]; } __attribute__ ((packed)) orinoco_key_t;
typedef orinoco_key_t orinoco_keys_t[ORINOCO_MAX_KEYS];
/*====================================================================*/
struct orinoco_private { void* card; /* Pointer to card dependant structure */ /* card dependant extra reset code (i.e. bus/interface specific */ int (*card_reset_handler)(struct orinoco_private *);
spinlock_t lock; long state; #define ORINOCO_STATE_INIRQ 0 #define ORINOCO_STATE_DOIRQ 1 atomic_t queue_length;
/* Net device stuff */ struct net_device ndev; struct net_device_stats stats; struct iw_statistics wstats;
/* Hardware control variables */ hermes_t hw; u16 txfid;
/* Capabilities of the hardware/firmware */ int firmware_type; #define FIRMWARE_TYPE_AGERE 1 #define FIRMWARE_TYPE_INTERSIL 2 #define FIRMWARE_TYPE_SYMBOL 3 int has_ibss, has_port3, prefer_port3, has_ibss_any, ibss_port; int has_wep, has_big_wep; int has_mwo; int has_pm; int has_preamble; int need_card_reset, broken_reset, broken_allocate; u16 channel_mask;
/* Current configuration */ u32 iw_mode; int port_type, allow_ibss;
u16 wep_on, wep_restrict, tx_key; orinoco_keys_t keys;
int bitratemode;
char nick[IW_ESSID_MAX_SIZE+1]; char desired_essid[IW_ESSID_MAX_SIZE+1]; u16 frag_thresh, mwo_robust; u16 channel; u16 ap_density, rts_thresh; u16 pm_on, pm_mcast, pm_period, pm_timeout; u16 preamble;
int promiscuous, mc_count;
#ifdef WIRELESS_SPY int spy_number; u_char spy_address[IW_MAX_SPY][ETH_ALEN]; struct iw_quality spy_stat[IW_MAX_SPY]; #endif
/* /proc based debugging stuff */ struct proc_dir_entry *dir_dev; struct proc_dir_entry *dir_regs; struct proc_dir_entry *dir_recs; };
/*====================================================================*/
extern struct list_head orinoco_instances;
#ifdef ORINOCO_DEBUG extern int orinoco_debug; #define DEBUG(n, args...) do { if (orinoco_debug>(n)) printk(KERN_DEBUG args); } while(0) #define DEBUGMORE(n, args...) do { if (orinoco_debug>(n)) printk(args); } while (0) #else #define DEBUG(n, args...) do { } while (0) #define DEBUGMORE(n, args...) do { } while (0) #endif /* ORINOCO_DEBUG */
#define TRACE_ENTER(devname) DEBUG(2, "%s: -> " __FUNCTION__ "()\n", devname); #define TRACE_EXIT(devname) DEBUG(2, "%s: <- " __FUNCTION__ "()\n", devname);
#define RUP_EVEN(a) ( (a) % 2 ? (a) + 1 : (a) )
/* struct net_device methods */ extern int orinoco_init(struct net_device *dev); extern int orinoco_xmit(struct sk_buff *skb, struct net_device *dev); extern void orinoco_tx_timeout(struct net_device *dev);
extern int orinoco_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); extern int orinoco_change_mtu(struct net_device *dev, int new_mtu); extern void orinoco_set_multicast_list(struct net_device *dev);
/* utility routines */ extern void orinoco_shutdown(struct orinoco_private *dev); extern int orinoco_reset(struct orinoco_private *dev); extern int orinoco_setup(struct orinoco_private* priv); extern int orinoco_proc_dev_init(struct orinoco_private *dev); extern void orinoco_proc_dev_cleanup(struct orinoco_private *priv); extern void orinoco_interrupt(int irq, void * dev_id, struct pt_regs *regs);
#endif /* _ORINOCO_H */
|