[VNIC] Initial checkin of VNIC code. Not yet fully functional.
[mirror/winof/.git] / ulp / inic / kernel / vnic_util.h
1 /*\r
2  * Copyright (c) 2005 SilverStorm Technologies.  All rights reserved.\r
3  *\r
4  * This software is available to you under the OpenIB.org BSD license\r
5  * below:\r
6  *\r
7  *     Redistribution and use in source and binary forms, with or\r
8  *     without modification, are permitted provided that the following\r
9  *     conditions are met:\r
10  *\r
11  *      - Redistributions of source code must retain the above\r
12  *        copyright notice, this list of conditions and the following\r
13  *        disclaimer.\r
14  *\r
15  *      - Redistributions in binary form must reproduce the above\r
16  *        copyright notice, this list of conditions and the following\r
17  *        disclaimer in the documentation and/or other materials\r
18  *        provided with the distribution.\r
19  *\r
20  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
21  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
22  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
23  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\r
24  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\r
25  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
26  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r
27  * SOFTWARE.\r
28  *\r
29  * $Id$\r
30  */\r
31 \r
32 #ifndef _VNIC_UTIL_H_\r
33 #define _VNIC_UTIL_H_\r
34 \r
35 #include "vnic_debug.h"\r
36 \r
37 #define MAXU32 0xffffffff\r
38 #define MAXU64 ((uint64_t)(~0))\r
39 \r
40 #define MODULE_NAME     "VNIC"\r
41 \r
42 #define PTR64(what) ((uint64_t)(void * __ptr64)(what))\r
43 \r
44 #define CONV2JIFFIES(time) (((time) * HZ) / 100) /* source time is 100ths of a sec */\r
45 #define CONV2USEC(time)    ((time) * 10000) /* source time is 100ths of a sec */\r
46 \r
47 #ifndef min\r
48 #define min(a,b) ((a)<(b)?(a):(b))\r
49 #endif\r
50 \r
51 #define hton16(x)               _byteswap_ushort(x)\r
52 #define hton32(x)               _byteswap_ulong(x)\r
53 #define hton64(x)               _byteswap_uint64(x)\r
54 \r
55 #define ntoh16(x)               hton16(x)\r
56 #define ntoh32(x)               hton32(x)\r
57 #define ntoh64(x)               hton64(x)\r
58 \r
59 #define IsPowerOf2(value) (((value) & ((value - 1))) == 0)\r
60 /* round down to closest power of 2 value */\r
61 \r
62 #define SetMinPowerOf2(_val) ((_val) & ( 1 << RtlFindMostSignificantBit( (uint64_t)(_val) )))\r
63 \r
64 #define PRINT(level,x)   VNIC_PRINT(level, x )\r
65 \r
66 #define PRINT_CONDITIONAL(level,x,condition) if (condition){PRINT( level, x)}\r
67 \r
68 #ifdef _DEBUG_\r
69 #define IB_FSTATUS(functionName) \\r
70                         if( (ib_status != IB_SUCCESS) &&        \\r
71                                 (ib_status != IB_PENDING) )             \\r
72                                 VNIC_PRINT( g_vnic_dbg_lvl,("[%s]: %d\n", functionName,ib_status))\r
73 \r
74 #else\r
75 #define IB_FSTATUS(functionName)\r
76 #endif\r
77 \r
78 #define IB_TEST_FSTATUS( functionName ) IB_FSTATUS( functionName ); \\r
79         if ((ib_status != IB_SUCCESS) && (ib_status != IB_PENDING)) goto failure\r
80 \r
81 #endif /* _VNIC_UTIL_H_ */\r
82 \r