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.15-rc7 177 lines 4.7 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.15rc3" 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 33struct header_struct { 34 /* 802.3 */ 35 u8 dest[ETH_ALEN]; 36 u8 src[ETH_ALEN]; 37 __be16 len; 38 /* 802.2 */ 39 u8 dsap; 40 u8 ssap; 41 u8 ctrl; 42 /* SNAP */ 43 u8 oui[3]; 44 unsigned short ethertype; 45} __attribute__ ((packed)); 46 47typedef enum { 48 FIRMWARE_TYPE_AGERE, 49 FIRMWARE_TYPE_INTERSIL, 50 FIRMWARE_TYPE_SYMBOL 51} fwtype_t; 52 53struct orinoco_private { 54 void *card; /* Pointer to card dependent structure */ 55 int (*hard_reset)(struct orinoco_private *); 56 57 /* Synchronisation stuff */ 58 spinlock_t lock; 59 int hw_unavailable; 60 struct work_struct reset_work; 61 62 /* driver state */ 63 int open; 64 u16 last_linkstatus; 65 struct work_struct join_work; 66 struct work_struct wevent_work; 67 68 /* Net device stuff */ 69 struct net_device *ndev; 70 struct net_device_stats stats; 71 struct iw_statistics wstats; 72 73 /* Hardware control variables */ 74 hermes_t hw; 75 u16 txfid; 76 77 /* Capabilities of the hardware/firmware */ 78 fwtype_t firmware_type; 79 char fw_name[32]; 80 int ibss_port; 81 int nicbuf_size; 82 u16 channel_mask; 83 84 /* Boolean capabilities */ 85 unsigned int has_ibss:1; 86 unsigned int has_port3:1; 87 unsigned int has_wep:1; 88 unsigned int has_big_wep:1; 89 unsigned int has_mwo:1; 90 unsigned int has_pm:1; 91 unsigned int has_preamble:1; 92 unsigned int has_sensitivity:1; 93 unsigned int has_hostscan:1; 94 unsigned int broken_disableport:1; 95 unsigned int broken_monitor:1; 96 97 /* Configuration paramaters */ 98 u32 iw_mode; 99 int prefer_port3; 100 u16 wep_on, wep_restrict, tx_key; 101 struct orinoco_key keys[ORINOCO_MAX_KEYS]; 102 int bitratemode; 103 char nick[IW_ESSID_MAX_SIZE+1]; 104 char desired_essid[IW_ESSID_MAX_SIZE+1]; 105 char desired_bssid[ETH_ALEN]; 106 int bssid_fixed; 107 u16 frag_thresh, mwo_robust; 108 u16 channel; 109 u16 ap_density, rts_thresh; 110 u16 pm_on, pm_mcast, pm_period, pm_timeout; 111 u16 preamble; 112#ifdef WIRELESS_SPY 113 struct iw_spy_data spy_data; /* iwspy support */ 114 struct iw_public_data wireless_data; 115#endif 116 117 /* Configuration dependent variables */ 118 int port_type, createibss; 119 int promiscuous, mc_count; 120 121 /* Scanning support */ 122 int scan_inprogress; /* Scan pending... */ 123 u32 scan_mode; /* Type of scan done */ 124 char * scan_result; /* Result of previous scan */ 125 int scan_len; /* Lenght of result */ 126}; 127 128#ifdef ORINOCO_DEBUG 129extern int orinoco_debug; 130#define DEBUG(n, args...) do { if (orinoco_debug>(n)) printk(KERN_DEBUG args); } while(0) 131#else 132#define DEBUG(n, args...) do { } while (0) 133#endif /* ORINOCO_DEBUG */ 134 135#define TRACE_ENTER(devname) DEBUG(2, "%s: -> %s()\n", devname, __FUNCTION__); 136#define TRACE_EXIT(devname) DEBUG(2, "%s: <- %s()\n", devname, __FUNCTION__); 137 138/********************************************************************/ 139/* Exported prototypes */ 140/********************************************************************/ 141 142extern struct net_device *alloc_orinocodev(int sizeof_card, 143 int (*hard_reset)(struct orinoco_private *)); 144extern void free_orinocodev(struct net_device *dev); 145extern int __orinoco_up(struct net_device *dev); 146extern int __orinoco_down(struct net_device *dev); 147extern int orinoco_reinit_firmware(struct net_device *dev); 148extern irqreturn_t orinoco_interrupt(int irq, void * dev_id, struct pt_regs *regs); 149 150/********************************************************************/ 151/* Locking and synchronization functions */ 152/********************************************************************/ 153 154/* These functions *must* be inline or they will break horribly on 155 * SPARC, due to its weird semantics for save/restore flags. extern 156 * inline should prevent the kernel from linking or module from 157 * loading if they are not inlined. */ 158extern inline int orinoco_lock(struct orinoco_private *priv, 159 unsigned long *flags) 160{ 161 spin_lock_irqsave(&priv->lock, *flags); 162 if (priv->hw_unavailable) { 163 DEBUG(1, "orinoco_lock() called with hw_unavailable (dev=%p)\n", 164 priv->ndev); 165 spin_unlock_irqrestore(&priv->lock, *flags); 166 return -EBUSY; 167 } 168 return 0; 169} 170 171extern inline void orinoco_unlock(struct orinoco_private *priv, 172 unsigned long *flags) 173{ 174 spin_unlock_irqrestore(&priv->lock, *flags); 175} 176 177#endif /* _ORINOCO_H */