|
|
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:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.