Annotation of Gnu-Mach/linux/pcmcia-cs/wireless/orinoco.h, revision 1.1.1.1

1.1       root        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: #include <linux/types.h>
                     11: #include <linux/spinlock.h>
                     12: #include <linux/netdevice.h>
                     13: #include <linux/wireless.h>
                     14: #include <linux/version.h>
                     15: #include "hermes.h"
                     16: 
                     17: /* Workqueue / task queue backwards compatibility stuff */
                     18: 
                     19: #if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,41)
                     20: #include <linux/workqueue.h>
                     21: #else
                     22: #include <linux/tqueue.h>
                     23: #define work_struct tq_struct
                     24: #define INIT_WORK INIT_TQUEUE
                     25: #define schedule_work schedule_task
                     26: #endif
                     27: 
                     28: /* Interrupt handler backwards compatibility stuff */
                     29: #ifndef IRQ_NONE
                     30: 
                     31: #define IRQ_NONE
                     32: #define IRQ_HANDLED
                     33: typedef void irqreturn_t;
                     34: 
                     35: #endif
                     36: 
                     37: /* To enable debug messages */
                     38: //#define ORINOCO_DEBUG                3
                     39: 
                     40: #if (! defined (WIRELESS_EXT)) || (WIRELESS_EXT < 10)
                     41: #error "orinoco driver requires Wireless extensions v10 or later."
                     42: #endif /* (! defined (WIRELESS_EXT)) || (WIRELESS_EXT < 10) */
                     43: #define WIRELESS_SPY           // enable iwspy support
                     44: 
                     45: #define ORINOCO_MAX_KEY_SIZE   14
                     46: #define ORINOCO_MAX_KEYS       4
                     47: 
                     48: struct orinoco_key {
                     49:        u16 len;        /* always stored as little-endian */
                     50:        char data[ORINOCO_MAX_KEY_SIZE];
                     51: } __attribute__ ((packed));
                     52: 
                     53: #define ORINOCO_INTEN          ( HERMES_EV_RX | HERMES_EV_ALLOC | HERMES_EV_TX | \
                     54:                                HERMES_EV_TXEXC | HERMES_EV_WTERR | HERMES_EV_INFO | \
                     55:                                HERMES_EV_INFDROP )
                     56: 
                     57: 
                     58: struct orinoco_private {
                     59:        void *card;     /* Pointer to card dependent structure */
                     60:        int (*hard_reset)(struct orinoco_private *);
                     61: 
                     62:        /* Synchronisation stuff */
                     63:        spinlock_t lock;
                     64:        int hw_unavailable;
                     65:        struct work_struct reset_work;
                     66: 
                     67:        /* driver state */
                     68:        int open;
                     69:        u16 last_linkstatus;
                     70:        int connected;
                     71: 
                     72:        /* Net device stuff */
                     73:        struct net_device *ndev;
                     74:        struct net_device_stats stats;
                     75:        struct iw_statistics wstats;
                     76: 
                     77:        /* Hardware control variables */
                     78:        hermes_t hw;
                     79:        u16 txfid;
                     80: 
                     81: 
                     82:        /* Capabilities of the hardware/firmware */
                     83:        int firmware_type;
                     84: #define FIRMWARE_TYPE_AGERE 1
                     85: #define FIRMWARE_TYPE_INTERSIL 2
                     86: #define FIRMWARE_TYPE_SYMBOL 3
                     87:        int has_ibss, has_port3, has_ibss_any, ibss_port;
                     88:        int has_wep, has_big_wep;
                     89:        int has_mwo;
                     90:        int has_pm;
                     91:        int has_preamble;
                     92:        int has_sensitivity;
                     93:        int nicbuf_size;
                     94:        u16 channel_mask;
                     95:        int broken_disableport;
                     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:        u16 frag_thresh, mwo_robust;
                    106:        u16 channel;
                    107:        u16 ap_density, rts_thresh;
                    108:        u16 pm_on, pm_mcast, pm_period, pm_timeout;
                    109:        u16 preamble;
                    110: #ifdef WIRELESS_SPY
                    111:        int                     spy_number;
                    112:        u_char                  spy_address[IW_MAX_SPY][ETH_ALEN];
                    113:        struct iw_quality       spy_stat[IW_MAX_SPY];
                    114: #endif
                    115: 
                    116:        /* Configuration dependent variables */
                    117:        int port_type, createibss;
                    118:        int promiscuous, mc_count;
                    119: };
                    120: 
                    121: #ifdef ORINOCO_DEBUG
                    122: extern int orinoco_debug;
                    123: #define DEBUG(n, args...) do { if (orinoco_debug>(n)) printk(KERN_DEBUG args); } while(0)
                    124: #else
                    125: #define DEBUG(n, args...) do { } while (0)
                    126: #endif /* ORINOCO_DEBUG */
                    127: 
                    128: #define TRACE_ENTER(devname) DEBUG(2, "%s: -> " __FUNCTION__ "()\n", devname);
                    129: #define TRACE_EXIT(devname)  DEBUG(2, "%s: <- " __FUNCTION__ "()\n", devname);
                    130: 
                    131: extern struct net_device *alloc_orinocodev(int sizeof_card,
                    132:                                           int (*hard_reset)(struct orinoco_private *));
                    133: extern int __orinoco_up(struct net_device *dev);
                    134: extern int __orinoco_down(struct net_device *dev);
                    135: extern int orinoco_stop(struct net_device *dev);
                    136: extern int orinoco_reinit_firmware(struct net_device *dev);
                    137: extern irqreturn_t orinoco_interrupt(int irq, void * dev_id, struct pt_regs *regs);
                    138: 
                    139: /********************************************************************/
                    140: /* Locking and synchronization functions                            */
                    141: /********************************************************************/
                    142: 
                    143: /* These functions *must* be inline or they will break horribly on
                    144:  * SPARC, due to its weird semantics for save/restore flags. extern
                    145:  * inline should prevent the kernel from linking or module from
                    146:  * loading if they are not inlined. */
                    147: extern inline int orinoco_lock(struct orinoco_private *priv,
                    148:                               unsigned long *flags)
                    149: {
                    150:        spin_lock_irqsave(&priv->lock, *flags);
                    151:        if (priv->hw_unavailable) {
                    152:                printk(KERN_DEBUG "orinoco_lock() called with hw_unavailable (dev=%p)\n",
                    153:                       priv->ndev);
                    154:                spin_unlock_irqrestore(&priv->lock, *flags);
                    155:                return -EBUSY;
                    156:        }
                    157:        return 0;
                    158: }
                    159: 
                    160: extern inline void orinoco_unlock(struct orinoco_private *priv,
                    161:                                  unsigned long *flags)
                    162: {
                    163:        spin_unlock_irqrestore(&priv->lock, *flags);
                    164: }
                    165: 
                    166: #endif /* _ORINOCO_H */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.