Annotation of qemu/roms/ipxe/src/drivers/net/wlan_compat.h, revision 1.1.1.1

1.1       root        1: /* src/include/wlan/wlan_compat.h
                      2: *
                      3: * Types and macros to aid in portability
                      4: *
                      5: * Copyright (C) 1999 AbsoluteValue Systems, Inc.  All Rights Reserved.
                      6: * --------------------------------------------------------------------
                      7: *
                      8: * linux-wlan
                      9: *
                     10: *   The contents of this file are subject to the Mozilla Public
                     11: *   License Version 1.1 (the "License"); you may not use this file
                     12: *   except in compliance with the License. You may obtain a copy of
                     13: *   the License at http://www.mozilla.org/MPL/
                     14: *
                     15: *   Software distributed under the License is distributed on an "AS
                     16: *   IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
                     17: *   implied. See the License for the specific language governing
                     18: *   rights and limitations under the License.
                     19: *
                     20: *   Alternatively, the contents of this file may be used under the
                     21: *   terms of the GNU Public License version 2 (the "GPL"), in which
                     22: *   case the provisions of the GPL are applicable instead of the
                     23: *   above.  If you wish to allow the use of your version of this file
                     24: *   only under the terms of the GPL and not to allow others to use
                     25: *   your version of this file under the MPL, indicate your decision
                     26: *   by deleting the provisions above and replace them with the notice
                     27: *   and other provisions required by the GPL.  If you do not delete
                     28: *   the provisions above, a recipient may use your version of this
                     29: *   file under either the MPL or the GPL.
                     30: *
                     31: * --------------------------------------------------------------------
                     32: *
                     33: * Inquiries regarding the linux-wlan Open Source project can be
                     34: * made directly to:
                     35: *
                     36: * AbsoluteValue Systems Inc.
                     37: * [email protected]
                     38: * http://www.linux-wlan.com
                     39: *
                     40: * --------------------------------------------------------------------
                     41: *
                     42: * Portions of the development of this software were funded by 
                     43: * Intersil Corporation as part of PRISM(R) chipset product development.
                     44: *
                     45: * --------------------------------------------------------------------
                     46: */
                     47: 
                     48: FILE_LICENCE ( GPL2_ONLY );
                     49: 
                     50: #ifndef _WLAN_COMPAT_H
                     51: #define _WLAN_COMPAT_H
                     52: 
                     53: /*=============================================================*/
                     54: /*------ Establish Platform Identity --------------------------*/
                     55: /*=============================================================*/
                     56: /* Key macros: */
                     57: /* WLAN_CPU_FAMILY */
                     58:        #define WLAN_Ix86                       1
                     59:        #define WLAN_PPC                        2
                     60:        #define WLAN_Ix96                       3
                     61:        #define WLAN_ARM                        4
                     62:        #define WLAN_ALPHA                      5
                     63:        #define WLAN_MIPS                       6
                     64:        #define WLAN_HPPA                       7
                     65: /* WLAN_CPU_CORE */
                     66:        #define WLAN_I386CORE                   1
                     67:        #define WLAN_PPCCORE                    2
                     68:        #define WLAN_I296                       3
                     69:        #define WLAN_ARMCORE                    4
                     70:        #define WLAN_ALPHACORE                  5
                     71:        #define WLAN_MIPSCORE                   6
                     72:        #define WLAN_HPPACORE                   7
                     73: /* WLAN_CPU_PART */
                     74:        #define WLAN_I386PART                   1
                     75:        #define WLAN_MPC860                     2
                     76:        #define WLAN_MPC823                     3
                     77:        #define WLAN_I296SA                     4
                     78:        #define WLAN_PPCPART                    5
                     79:        #define WLAN_ARMPART                    6
                     80:        #define WLAN_ALPHAPART                  7
                     81:        #define WLAN_MIPSPART                   8
                     82:        #define WLAN_HPPAPART                   9
                     83: /* WLAN_SYSARCH */
                     84:        #define WLAN_PCAT                       1
                     85:        #define WLAN_MBX                        2
                     86:        #define WLAN_RPX                        3
                     87:        #define WLAN_LWARCH                     4
                     88:        #define WLAN_PMAC                       5
                     89:        #define WLAN_SKIFF                      6
                     90:        #define WLAN_BITSY                      7
                     91:        #define WLAN_ALPHAARCH                  7
                     92:        #define WLAN_MIPSARCH                   9
                     93:        #define WLAN_HPPAARCH                   10
                     94: /* WLAN_OS */
                     95:        #define WLAN_LINUX_KERNEL               1
                     96:        #define WLAN_LINUX_USER                 2
                     97: /* WLAN_HOSTIF (generally set on the command line, not detected) */
                     98:        #define WLAN_PCMCIA                     1
                     99:        #define WLAN_ISA                        2
                    100:        #define WLAN_PCI                        3
                    101:        #define WLAN_USB                        4
                    102:        #define WLAN_PLX                        5
                    103: 
                    104: /* Note: the PLX HOSTIF above refers to some vendors implementations for */
                    105: /*       PCI.  It's a PLX chip that is a PCI to PCMCIA adapter, but it   */
                    106: /*       isn't a real PCMCIA host interface adapter providing all the    */
                    107: /*       card&socket services.                                           */
                    108: 
                    109: /* Lets try to figure out what we've got.  Kernel mode or User mode? */
                    110: #if defined(__KERNEL__)
                    111:        #define WLAN_OS                         WLAN_LINUX_KERNEL
                    112: #else 
                    113:        #define WLAN_OS                         WLAN_LINUX_USER
                    114: #endif
                    115: 
                    116: #ifdef __powerpc__
                    117: #ifndef __ppc__
                    118: #define __ppc__
                    119: #endif
                    120: #endif
                    121: 
                    122: #if (defined(CONFIG_PPC) || defined(CONFIG_8xx))
                    123: #ifndef __ppc__
                    124: #define __ppc__
                    125: #endif
                    126: #endif
                    127: 
                    128: #if defined(__KERNEL__)
                    129: #if defined(__i386__) || defined(__i486__) || defined(__i586__) || defined(__i686__)
                    130:        #define WLAN_CPU_FAMILY         WLAN_Ix86
                    131:        #define WLAN_CPU_CORE           WLAN_I386CORE
                    132:        #define WLAN_CPU_PART           WLAN_I386PART
                    133:        #define WLAN_SYSARCH            WLAN_PCAT
                    134: #elif defined(__ppc__)
                    135:        #define WLAN_CPU_FAMILY         WLAN_PPC
                    136:        #define WLAN_CPU_CORE           WLAN_PPCCORE
                    137:        #if defined(CONFIG_MBX)
                    138:                #define WLAN_CPU_PART   WLAN_MPC860
                    139:                #define WLAN_SYSARCH    WLAN_MBX
                    140:        #elif defined(CONFIG_RPXLITE)
                    141:                #define WLAN_CPU_PART   WLAN_MPC823
                    142:                #define WLAN_SYSARCH    WLAN_RPX
                    143:        #elif defined(CONFIG_RPXCLASSIC)
                    144:                #define WLAN_CPU_PART   WLAN_MPC860
                    145:                #define WLAN_SYSARCH    WLAN_RPX
                    146:        #else
                    147:                #define WLAN_CPU_PART   WLAN_PPCPART
                    148:                #define WLAN_SYSARCH    WLAN_PMAC
                    149:        #endif
                    150: #elif defined(__arm__)
                    151:        #define WLAN_CPU_FAMILY         WLAN_ARM
                    152:        #define WLAN_CPU_CORE           WLAN_ARMCORE
                    153:         #define WLAN_CPU_PART          WLAN_ARM_PART
                    154:        #define WLAN_SYSARCH            WLAN_SKIFF
                    155: #elif defined(__alpha__)
                    156:        #define WLAN_CPU_FAMILY         WLAN_ALPHA
                    157:        #define WLAN_CPU_CORE           WLAN_ALPHACORE
                    158:        #define WLAN_CPU_PART           WLAN_ALPHAPART
                    159:        #define WLAN_SYSARCH            WLAN_ALPHAARCH
                    160: #elif defined(__mips__)
                    161:        #define WLAN_CPU_FAMILY         WLAN_MIPS
                    162:        #define WLAN_CPU_CORE           WLAN_MIPSCORE
                    163:         #define WLAN_CPU_PART          WLAN_MIPSPART
                    164:        #define WLAN_SYSARCH            WLAN_MIPSARCH
                    165: #elif defined(__hppa__)
                    166:        #define WLAN_CPU_FAMILY         WLAN_HPPA
                    167:        #define WLAN_CPU_CORE           WLAN_HPPACORE
                    168:        #define WLAN_CPU_PART           WLAN_HPPAPART
                    169:        #define WLAN_SYSARCH            WLAN_HPPAARCH
                    170: #else
                    171:        #error "No CPU identified!"
                    172: #endif
                    173: #endif /* __KERNEL__ */
                    174: 
                    175: /*
                    176:    Some big endian machines implicitly do all I/O in little endian mode.
                    177: 
                    178:    In particular:
                    179:           Linux/PPC on PowerMacs (PCI)
                    180:          Arm/Intel Xscale (PCI)
                    181: 
                    182:    This may also affect PLX boards and other BE &| PPC platforms; 
                    183:    as new ones are discovered, add them below. 
                    184: */
                    185: 
                    186: #if (WLAN_HOSTIF == WLAN_PCI)
                    187: #if ((WLAN_SYSARCH == WLAN_SKIFF) || (WLAN_SYSARCH == WLAN_PMAC))
                    188: #define REVERSE_ENDIAN
                    189: #endif
                    190: #endif
                    191: 
                    192: /*=============================================================*/
                    193: /*------ Bit settings -----------------------------------------*/
                    194: /*=============================================================*/
                    195: 
                    196: #define BIT0   0x00000001
                    197: #define BIT1   0x00000002
                    198: #define BIT2   0x00000004
                    199: #define BIT3   0x00000008
                    200: #define BIT4   0x00000010
                    201: #define BIT5   0x00000020
                    202: #define BIT6   0x00000040
                    203: #define BIT7   0x00000080
                    204: #define BIT8   0x00000100
                    205: #define BIT9   0x00000200
                    206: #define BIT10  0x00000400
                    207: #define BIT11  0x00000800
                    208: #define BIT12  0x00001000
                    209: #define BIT13  0x00002000
                    210: #define BIT14  0x00004000
                    211: #define BIT15  0x00008000
                    212: #define BIT16  0x00010000
                    213: #define BIT17  0x00020000
                    214: #define BIT18  0x00040000
                    215: #define BIT19  0x00080000
                    216: #define BIT20  0x00100000
                    217: #define BIT21  0x00200000
                    218: #define BIT22  0x00400000
                    219: #define BIT23  0x00800000
                    220: #define BIT24  0x01000000
                    221: #define BIT25  0x02000000
                    222: #define BIT26  0x04000000
                    223: #define BIT27  0x08000000
                    224: #define BIT28  0x10000000
                    225: #define BIT29  0x20000000
                    226: #define BIT30  0x40000000
                    227: #define BIT31  0x80000000
                    228: 
                    229: typedef unsigned char   UINT8;
                    230: typedef unsigned short  UINT16;
                    231: typedef unsigned long   UINT32;
                    232: 
                    233: typedef signed char     INT8;
                    234: typedef signed short    INT16;
                    235: typedef signed long     INT32;
                    236: 
                    237: typedef unsigned int    UINT;
                    238: typedef signed int      INT;
                    239: 
                    240: typedef unsigned long long     UINT64;
                    241: typedef signed long long       INT64;
                    242: 
                    243: #define UINT8_MAX      (0xffUL)
                    244: #define UINT16_MAX     (0xffffUL)
                    245: #define UINT32_MAX     (0xffffffffUL)
                    246: 
                    247: #define INT8_MAX       (0x7fL)
                    248: #define INT16_MAX      (0x7fffL)
                    249: #define INT32_MAX      (0x7fffffffL)
                    250: 
                    251: /*=============================================================*/
                    252: /*------ Compiler Portability Macros --------------------------*/
                    253: /*=============================================================*/
                    254: #define __WLAN_ATTRIB_PACK__           __attribute__ ((packed))
                    255: #define __WLAN_PRAGMA_PACK1__
                    256: #define __WLAN_PRAGMA_PACKDFLT__
                    257: #define __WLAN_INLINE__                        inline
                    258: #define WLAN_MIN_ARRAY                 0
                    259: 
                    260: /*=============================================================*/
                    261: /*------ OS Portability Macros --------------------------------*/
                    262: /*=============================================================*/
                    263: 
                    264: #ifndef WLAN_DBVAR
                    265: #define WLAN_DBVAR     wlan_debug
                    266: #endif
                    267: 
                    268: #if (WLAN_OS == WLAN_LINUX_KERNEL)
                    269:        #define WLAN_LOG_ERROR0(x) printk(KERN_ERR "%s: " x , __FUNCTION__ );
                    270:        #define WLAN_LOG_ERROR1(x,n) printk(KERN_ERR "%s: " x , __FUNCTION__ , (n));
                    271:        #define WLAN_LOG_ERROR2(x,n1,n2) printk(KERN_ERR "%s: " x , __FUNCTION__ , (n1), (n2));
                    272:        #define WLAN_LOG_ERROR3(x,n1,n2,n3) printk(KERN_ERR "%s: " x , __FUNCTION__, (n1), (n2), (n3));
                    273:        #define WLAN_LOG_ERROR4(x,n1,n2,n3,n4) printk(KERN_ERR "%s: " x , __FUNCTION__, (n1), (n2), (n3), (n4));
                    274: 
                    275:        #define WLAN_LOG_WARNING0(x) printk(KERN_WARNING "%s: " x , __FUNCTION__);
                    276:        #define WLAN_LOG_WARNING1(x,n) printk(KERN_WARNING "%s: " x , __FUNCTION__, (n));
                    277:        #define WLAN_LOG_WARNING2(x,n1,n2) printk(KERN_WARNING "%s: " x , __FUNCTION__, (n1), (n2));
                    278:        #define WLAN_LOG_WARNING3(x,n1,n2,n3) printk(KERN_WARNING "%s: " x , __FUNCTION__, (n1), (n2), (n3));
                    279:        #define WLAN_LOG_WARNING4(x,n1,n2,n3,n4) printk(KERN_WARNING "%s: " x , __FUNCTION__ , (n1), (n2), (n3), (n4));
                    280: 
                    281:        #define WLAN_LOG_NOTICE0(x) printk(KERN_NOTICE "%s: " x , __FUNCTION__);
                    282:        #define WLAN_LOG_NOTICE1(x,n) printk(KERN_NOTICE "%s: " x , __FUNCTION__, (n));
                    283:        #define WLAN_LOG_NOTICE2(x,n1,n2) printk(KERN_NOTICE "%s: " x , __FUNCTION__, (n1), (n2));
                    284:        #define WLAN_LOG_NOTICE3(x,n1,n2,n3) printk(KERN_NOTICE "%s: " x , __FUNCTION__, (n1), (n2), (n3));
                    285:        #define WLAN_LOG_NOTICE4(x,n1,n2,n3,n4) printk(KERN_NOTICE "%s: " x , __FUNCTION__, (n1), (n2), (n3), (n4));
                    286: 
                    287:        #define WLAN_LOG_INFO0(x) printk(KERN_INFO x);
                    288:        #define WLAN_LOG_INFO1(x,n) printk(KERN_INFO x, (n));
                    289:        #define WLAN_LOG_INFO2(x,n1,n2) printk(KERN_INFO x, (n1), (n2));
                    290:        #define WLAN_LOG_INFO3(x,n1,n2,n3) printk(KERN_INFO x, (n1), (n2), (n3));
                    291:        #define WLAN_LOG_INFO4(x,n1,n2,n3,n4) printk(KERN_INFO x, (n1), (n2), (n3), (n4));
                    292:        #define WLAN_LOG_INFO5(x,n1,n2,n3,n4,n5) printk(KERN_INFO x, (n1), (n2), (n3), (n4), (n5));
                    293: 
                    294:        #if defined(WLAN_INCLUDE_DEBUG)
                    295:                #define WLAN_ASSERT(c) if ((!(c)) && WLAN_DBVAR >= 1) { \
                    296:                        WLAN_LOG_DEBUG0(1, "Assertion failure!\n"); }
                    297:                #define WLAN_HEX_DUMP( l, x, p, n)      if( WLAN_DBVAR >= (l) ){ \
                    298:                        int __i__; \
                    299:                        printk(KERN_DEBUG x ":"); \
                    300:                        for( __i__=0; __i__ < (n); __i__++) \
                    301:                                printk( " %02x", ((UINT8*)(p))[__i__]); \
                    302:                        printk("\n"); }
                    303: 
                    304:                #define DBFENTER { if ( WLAN_DBVAR >= 4 ){ WLAN_LOG_DEBUG0(3,"Enter\n"); } }
                    305:                #define DBFEXIT  { if ( WLAN_DBVAR >= 4 ){ WLAN_LOG_DEBUG0(3,"Exit\n"); } }
                    306: 
                    307:                #define WLAN_LOG_DEBUG0(l,x) if ( WLAN_DBVAR >= (l)) printk(KERN_DEBUG "%s: " x ,  __FUNCTION__ );
                    308:                #define WLAN_LOG_DEBUG1(l,x,n) if ( WLAN_DBVAR >= (l)) printk(KERN_DEBUG "%s: " x , __FUNCTION__ , (n));
                    309:                #define WLAN_LOG_DEBUG2(l,x,n1,n2) if ( WLAN_DBVAR >= (l)) printk(KERN_DEBUG "%s: " x , __FUNCTION__ , (n1), (n2));
                    310:                #define WLAN_LOG_DEBUG3(l,x,n1,n2,n3) if ( WLAN_DBVAR >= (l)) printk(KERN_DEBUG "%s: " x , __FUNCTION__ , (n1), (n2), (n3));
                    311:                #define WLAN_LOG_DEBUG4(l,x,n1,n2,n3,n4) if ( WLAN_DBVAR >= (l)) printk(KERN_DEBUG "%s: " x , __FUNCTION__ , (n1), (n2), (n3), (n4));
                    312:                #define WLAN_LOG_DEBUG5(l,x,n1,n2,n3,n4,n5) if ( WLAN_DBVAR >= (l)) printk(KERN_DEBUG "%s: " x , __FUNCTION__ , (n1), (n2), (n3), (n4), (n5));
                    313:                #define WLAN_LOG_DEBUG6(l,x,n1,n2,n3,n4,n5,n6) if ( WLAN_DBVAR >= (l)) printk(KERN_DEBUG "%s: " x , __FUNCTION__ , (n1), (n2), (n3), (n4), (n5), (n6));
                    314:        #else
                    315:                #define WLAN_ASSERT(c) 
                    316:                #define WLAN_HEX_DUMP( l, s, p, n)
                    317: 
                    318:                #define DBFENTER 
                    319:                #define DBFEXIT 
                    320: 
                    321:                #define WLAN_LOG_DEBUG0(l, s)
                    322:                #define WLAN_LOG_DEBUG1(l, s,n)
                    323:                #define WLAN_LOG_DEBUG2(l, s,n1,n2)
                    324:                #define WLAN_LOG_DEBUG3(l, s,n1,n2,n3)
                    325:                #define WLAN_LOG_DEBUG4(l, s,n1,n2,n3,n4)
                    326:                #define WLAN_LOG_DEBUG5(l, s,n1,n2,n3,n4,n5)
                    327:        #endif
                    328: #else
                    329:        #define WLAN_LOG_ERROR0(s)
                    330:        #define WLAN_LOG_ERROR1(s,n)
                    331:        #define WLAN_LOG_ERROR2(s,n1,n2)
                    332:        #define WLAN_LOG_ERROR3(s,n1,n2,n3)
                    333:        #define WLAN_LOG_ERROR4(s,n1,n2,n3,n4)
                    334: 
                    335:        #define WLAN_LOG_WARNING0(s)
                    336:        #define WLAN_LOG_WARNING1(s,n)
                    337:        #define WLAN_LOG_WARNING2(s,n1,n2)
                    338:        #define WLAN_LOG_WARNING3(s,n1,n2,n3)
                    339:        #define WLAN_LOG_WARNING4(s,n1,n2,n3,n4)
                    340: 
                    341:        #define WLAN_LOG_NOTICE0(s)
                    342:        #define WLAN_LOG_NOTICE1(s,n)
                    343:        #define WLAN_LOG_NOTICE2(s,n1,n2)
                    344:        #define WLAN_LOG_NOTICE3(s,n1,n2,n3)
                    345:        #define WLAN_LOG_NOTICE4(s,n1,n2,n3,n4)
                    346: 
                    347:                #define WLAN_ASSERT(c) 
                    348:                #define WLAN_HEX_DUMP( l, s, p, n)
                    349: 
                    350:                #define DBFENTER 
                    351:                #define DBFEXIT 
                    352: 
                    353:                #define WLAN_LOG_INFO0(s)
                    354:                #define WLAN_LOG_INFO1(s,n)
                    355:                #define WLAN_LOG_INFO2(s,n1,n2)
                    356:                #define WLAN_LOG_INFO3(s,n1,n2,n3)
                    357:                #define WLAN_LOG_INFO4(s,n1,n2,n3,n4)
                    358:                #define WLAN_LOG_INFO5(s,n1,n2,n3,n4,n5)
                    359: 
                    360:                #define WLAN_LOG_DEBUG0(l, s)
                    361:                #define WLAN_LOG_DEBUG1(l, s,n)
                    362:                #define WLAN_LOG_DEBUG2(l, s,n1,n2)
                    363:                #define WLAN_LOG_DEBUG3(l, s,n1,n2,n3)
                    364:                #define WLAN_LOG_DEBUG4(l, s,n1,n2,n3,n4)
                    365:                #define WLAN_LOG_DEBUG5(l, s,n1,n2,n3,n4,n5)
                    366: #endif
                    367: 
                    368: #define wlan_ms_per_tick               (1000UL / (wlan_ticks_per_sec))
                    369: #define wlan_ms_to_ticks(n)            ( (n) / (wlan_ms_per_tick))
                    370: #define wlan_tu2ticks(n)               ( (n) / (wlan_ms_per_tick))
                    371: #define WLAN_INT_DISABLE(n)            { save_flags((n)); cli(); }
                    372: #define WLAN_INT_ENABLE(n)             { sti(); restore_flags((n)); }
                    373: 
                    374: #ifdef CONFIG_MODVERSIONS
                    375: #define MODVERSIONS            1
                    376: #include <linux/modversions.h>
                    377: #endif
                    378: 
                    379: #ifdef CONFIG_SMP
                    380: #define __SMP__                        1
                    381: #endif 
                    382: 
                    383: #ifndef KERNEL_VERSION
                    384: #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
                    385: #endif
                    386: 
                    387: #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,17))
                    388: #define CONFIG_NETLINK         1
                    389: #endif
                    390: 
                    391: #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0))
                    392: #define kfree_s(a, b)  kfree((a))
                    393: #endif
                    394: 
                    395: #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,2,18))
                    396: #ifndef init_waitqueue_head
                    397: #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,0,16))
                    398: #define init_waitqueue_head(p)  (*(p) = NULL)
                    399: #else
                    400: #define init_waitqueue_head(p)  init_waitqueue(p)
                    401: #endif
                    402: typedef struct wait_queue *wait_queue_head_t;
                    403: typedef struct wait_queue wait_queue_t;
                    404: #define set_current_state(b)  { current->state = (b); mb(); }
                    405: #define init_waitqueue_entry(a, b) { (a)->task = current; }
                    406: #endif
                    407: #endif
                    408: 
                    409: #ifndef wait_event_interruptible_timeout
                    410: // retval == 0; signal met; we're good.
                    411: // retval < 0; interrupted by signal.
                    412: // retval > 0; timed out.
                    413: #define __wait_event_interruptible_timeout(wq, condition, timeout, ret)   \
                    414: do {                                                                      \
                    415:         int __ret = 0;                                                    \
                    416:         if (!(condition)) {                                               \
                    417:           wait_queue_t __wait;                                            \
                    418:           unsigned long expire;                                           \
                    419:           init_waitqueue_entry(&__wait, current);                         \
                    420:                                                                          \
                    421:           expire = timeout + jiffies;                                     \
                    422:           add_wait_queue(&wq, &__wait);                                   \
                    423:           for (;;) {                                                      \
                    424:                   set_current_state(TASK_INTERRUPTIBLE);                  \
                    425:                   if (condition)                                          \
                    426:                           break;                                          \
                    427:                   if (jiffies > expire) {                                 \
                    428:                           ret = jiffies - expire;                         \
                    429:                           break;                                          \
                    430:                   }                                                       \
                    431:                   if (!signal_pending(current)) {                         \
                    432:                           schedule_timeout(timeout);                      \
                    433:                           continue;                                       \
                    434:                   }                                                       \
                    435:                   ret = -ERESTARTSYS;                                     \
                    436:                   break;                                                  \
                    437:           }                                                               \
                    438:           set_current_state(TASK_RUNNING);                                \
                    439:           remove_wait_queue(&wq, &__wait);                                \
                    440:        }                                                                 \
                    441: } while (0)
                    442: 
                    443: #define wait_event_interruptible_timeout(wq, condition, timeout)       \
                    444: ({                                                                     \
                    445:        int __ret = 0;                                                  \
                    446:        if (!(condition))                                               \
                    447:                __wait_event_interruptible_timeout(wq, condition,       \
                    448:                                                timeout, __ret);        \
                    449:        __ret;                                                          \
                    450: })
                    451: 
                    452: #endif
                    453: 
                    454: #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,1,90))
                    455: #define spin_lock(l)            do { } while (0)
                    456: #define spin_unlock(l)          do { } while (0)
                    457: #define spin_lock_irqsave(l,f)  do { save_flags(f); cli(); } while (0)
                    458: #define spin_unlock_irqrestore(l,f) do { restore_flags(f); } while (0)
                    459: #define spin_lock_init(s)       do { } while (0)
                    460: #define spin_trylock(l)         (1)
                    461: typedef int spinlock_t;
                    462: #endif
                    463: 
                    464: #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0))
                    465: #ifdef CONFIG_SMP
                    466: #define spin_is_locked(x)       (*(volatile char *)(&(x)->lock) <= 0)
                    467: #else
                    468: #define spin_is_locked(l)       (0)
                    469: #endif
                    470: #endif
                    471: 
                    472: #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,38))
                    473: typedef struct device netdevice_t;
                    474: #elif (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,4))
                    475: typedef struct net_device netdevice_t;
                    476: #else
                    477: #undef netdevice_t
                    478: typedef struct net_device netdevice_t;
                    479: #endif
                    480: 
                    481: #ifdef WIRELESS_EXT
                    482: #if (WIRELESS_EXT < 13)
                    483: struct iw_request_info
                    484: {
                    485:         __u16           cmd;            /* Wireless Extension command */
                    486:         __u16           flags;          /* More to come ;-) */
                    487: };
                    488: #endif
                    489: #endif
                    490: 
                    491: 
                    492: #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,1,18))
                    493: #define MODULE_PARM(a,b)        extern int __bogus_decl
                    494: #define MODULE_AUTHOR(a)        extern int __bogus_decl
                    495: #define MODULE_DESCRIPTION(a)   extern int __bogus_decl
                    496: #define MODULE_SUPPORTED_DEVICE(a) extern int __bogus_decl
                    497: #undef  GET_USE_COUNT
                    498: #define GET_USE_COUNT(m)        mod_use_count_
                    499: #endif
                    500: 
                    501: #ifndef MODULE_LICENSE
                    502: #define MODULE_LICENSE(m)       extern int __bogus_decl
                    503: #endif
                    504: 
                    505: /* TODO:  Do we care about this? */
                    506: #ifndef MODULE_DEVICE_TABLE
                    507: #define MODULE_DEVICE_TABLE(foo,bar)
                    508: #endif
                    509: 
                    510: #define wlan_minutes2ticks(a) ((a)*(wlan_ticks_per_sec *  60))
                    511: #define wlan_seconds2ticks(a) ((a)*(wlan_ticks_per_sec))
                    512: 
                    513: /*=============================================================*/
                    514: /*------ Hardware Portability Macros --------------------------*/
                    515: /*=============================================================*/
                    516: 
                    517: #define ieee2host16(n) __le16_to_cpu(n)
                    518: #define ieee2host32(n) __le32_to_cpu(n)
                    519: #define host2ieee16(n) __cpu_to_le16(n)
                    520: #define host2ieee32(n) __cpu_to_le32(n)
                    521: 
                    522: #if (WLAN_CPU_FAMILY == WLAN_PPC)
                    523:        #define wlan_inw(a)                     in_be16((unsigned short *)((a)+_IO_BASE))
                    524:        #define wlan_inw_le16_to_cpu(a)         inw((a))
                    525:        #define wlan_outw(v,a)                  out_be16((unsigned short *)((a)+_IO_BASE), (v))
                    526:        #define wlan_outw_cpu_to_le16(v,a)      outw((v),(a))
                    527: #else
                    528:        #define wlan_inw(a)                     inw((a))
                    529:        #define wlan_inw_le16_to_cpu(a)         __cpu_to_le16(inw((a)))
                    530:        #define wlan_outw(v,a)                  outw((v),(a))
                    531:        #define wlan_outw_cpu_to_le16(v,a)      outw(__cpu_to_le16((v)),(a))
                    532: #endif
                    533: 
                    534: /*=============================================================*/
                    535: /*--- General Macros ------------------------------------------*/
                    536: /*=============================================================*/
                    537: 
                    538: #define wlan_max(a, b) (((a) > (b)) ? (a) : (b))
                    539: #define wlan_min(a, b) (((a) < (b)) ? (a) : (b))
                    540: 
                    541: #define wlan_isprint(c)        (((c) > (0x19)) && ((c) < (0x7f)))
                    542: 
                    543: #define wlan_hexchar(x) (((x) < 0x0a) ? ('0' + (x)) : ('a' + ((x) - 0x0a)))
                    544: 
                    545: /* Create a string of printable chars from something that might not be */
                    546: /* It's recommended that the str be 4*len + 1 bytes long */
                    547: #define wlan_mkprintstr(buf, buflen, str, strlen) \
                    548: { \
                    549:        int i = 0; \
                    550:        int j = 0; \
                    551:        memset(str, 0, (strlen)); \
                    552:        for (i = 0; i < (buflen); i++) { \
                    553:                if ( wlan_isprint((buf)[i]) ) { \
                    554:                        (str)[j] = (buf)[i]; \
                    555:                        j++; \
                    556:                } else { \
                    557:                        (str)[j] = '\\'; \
                    558:                        (str)[j+1] = 'x'; \
                    559:                        (str)[j+2] = wlan_hexchar(((buf)[i] & 0xf0) >> 4); \
                    560:                        (str)[j+3] = wlan_hexchar(((buf)[i] & 0x0f)); \
                    561:                        j += 4; \
                    562:                } \
                    563:        } \
                    564: }
                    565: 
                    566: /*=============================================================*/
                    567: /*--- Variables -----------------------------------------------*/
                    568: /*=============================================================*/
                    569: 
                    570: extern int wlan_debug;
                    571: extern int wlan_ethconv;               /* What's the default ethconv? */
                    572: 
                    573: /*=============================================================*/
                    574: /*--- Functions -----------------------------------------------*/
                    575: /*=============================================================*/
                    576: #endif /* _WLAN_COMPAT_H */
                    577: 

unix.superglobalmegacorp.com

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