149ab747fSPaolo Bonzini /* 249ab747fSPaolo Bonzini * QEMU VMWARE VMXNET* paravirtual NICs - debugging facilities 349ab747fSPaolo Bonzini * 449ab747fSPaolo Bonzini * Copyright (c) 2012 Ravello Systems LTD (http://ravellosystems.com) 549ab747fSPaolo Bonzini * 649ab747fSPaolo Bonzini * Developed by Daynix Computing LTD (http://www.daynix.com) 749ab747fSPaolo Bonzini * 849ab747fSPaolo Bonzini * Authors: 949ab747fSPaolo Bonzini * Dmitry Fleytman <dmitry@daynix.com> 1049ab747fSPaolo Bonzini * Tamir Shomer <tamirs@daynix.com> 1149ab747fSPaolo Bonzini * Yan Vugenfirer <yan@daynix.com> 1249ab747fSPaolo Bonzini * 1349ab747fSPaolo Bonzini * This work is licensed under the terms of the GNU GPL, version 2 or later. 1449ab747fSPaolo Bonzini * See the COPYING file in the top-level directory. 1549ab747fSPaolo Bonzini * 1649ab747fSPaolo Bonzini */ 1749ab747fSPaolo Bonzini 1849ab747fSPaolo Bonzini #ifndef QEMU_VMXNET_DEBUG_H 1949ab747fSPaolo Bonzini #define QEMU_VMXNET_DEBUG_H 2049ab747fSPaolo Bonzini 2149ab747fSPaolo Bonzini #define VMXNET_DEVICE_NAME "vmxnet3" 2249ab747fSPaolo Bonzini 2349ab747fSPaolo Bonzini #define VMXNET_DEBUG_WARNINGS 2449ab747fSPaolo Bonzini #define VMXNET_DEBUG_ERRORS 2549ab747fSPaolo Bonzini 26*71c2f5b9SMiao Yan #undef VMXNET_DEBUG_CB 27*71c2f5b9SMiao Yan #undef VMXNET_DEBUG_INTERRUPTS 28*71c2f5b9SMiao Yan #undef VMXNET_DEBUG_CONFIG 29*71c2f5b9SMiao Yan #undef VMXNET_DEBUG_RINGS 30*71c2f5b9SMiao Yan #undef VMXNET_DEBUG_PACKETS 31*71c2f5b9SMiao Yan #undef VMXNET_DEBUG_SHMEM_ACCESS 3249ab747fSPaolo Bonzini 3349ab747fSPaolo Bonzini #ifdef VMXNET_DEBUG_CB 34*71c2f5b9SMiao Yan # define VMXNET_DEBUG_CB_ENABLED 1 3549ab747fSPaolo Bonzini #else 36*71c2f5b9SMiao Yan # define VMXNET_DEBUG_CB_ENABLED 0 3749ab747fSPaolo Bonzini #endif 3849ab747fSPaolo Bonzini 3949ab747fSPaolo Bonzini #ifdef VMXNET_DEBUG_WARNINGS 40*71c2f5b9SMiao Yan # define VMXNET_DEBUG_WARNINGS_ENABLED 1 4149ab747fSPaolo Bonzini #else 42*71c2f5b9SMiao Yan # define VMXNET_DEBUG_WARNINGS_ENABLED 0 4349ab747fSPaolo Bonzini #endif 4449ab747fSPaolo Bonzini 4549ab747fSPaolo Bonzini #ifdef VMXNET_DEBUG_ERRORS 46*71c2f5b9SMiao Yan # define VMXNET_DEBUG_ERRORS_ENABLED 1 4749ab747fSPaolo Bonzini #else 48*71c2f5b9SMiao Yan # define VMXNET_DEBUG_ERRORS_ENABLED 0 4949ab747fSPaolo Bonzini #endif 5049ab747fSPaolo Bonzini 5149ab747fSPaolo Bonzini #ifdef VMXNET_DEBUG_CONFIG 52*71c2f5b9SMiao Yan # define VMXNET_DEBUG_CONFIG_ENABLED 1 5349ab747fSPaolo Bonzini #else 54*71c2f5b9SMiao Yan # define VMXNET_DEBUG_CONFIG_ENABLED 0 5549ab747fSPaolo Bonzini #endif 5649ab747fSPaolo Bonzini 5749ab747fSPaolo Bonzini #ifdef VMXNET_DEBUG_RINGS 58*71c2f5b9SMiao Yan # define VMXNET_DEBUG_RINGS_ENABLED 1 59*71c2f5b9SMiao Yan #else 60*71c2f5b9SMiao Yan # define VMXNET_DEBUG_RINGS_ENABLED 0 61*71c2f5b9SMiao Yan #endif 62*71c2f5b9SMiao Yan 63*71c2f5b9SMiao Yan #ifdef VMXNET_DEBUG_PACKETS 64*71c2f5b9SMiao Yan # define VMXNET_DEBUG_PACKETS_ENABLED 1 65*71c2f5b9SMiao Yan #else 66*71c2f5b9SMiao Yan # define VMXNET_DEBUG_PACKETS_ENABLED 0 67*71c2f5b9SMiao Yan #endif 68*71c2f5b9SMiao Yan 69*71c2f5b9SMiao Yan #ifdef VMXNET_DEBUG_INTERRUPTS 70*71c2f5b9SMiao Yan # define VMXNET_DEBUG_INTERRUPTS_ENABLED 1 71*71c2f5b9SMiao Yan #else 72*71c2f5b9SMiao Yan # define VMXNET_DEBUG_INTERRUPTS_ENABLED 0 73*71c2f5b9SMiao Yan #endif 74*71c2f5b9SMiao Yan 75*71c2f5b9SMiao Yan #ifdef VMXNET_DEBUG_SHMEM_ACCESS 76*71c2f5b9SMiao Yan # define VMXNET_DEBUG_SHMEM_ACCESS_ENABLED 1 77*71c2f5b9SMiao Yan #else 78*71c2f5b9SMiao Yan # define VMXNET_DEBUG_SHMEM_ACCESS_ENABLED 0 79*71c2f5b9SMiao Yan #endif 80*71c2f5b9SMiao Yan 81*71c2f5b9SMiao Yan #define VMW_SHPRN(fmt, ...) \ 82*71c2f5b9SMiao Yan do { \ 83*71c2f5b9SMiao Yan if (VMXNET_DEBUG_SHMEM_ACCESS_ENABLED) { \ 84*71c2f5b9SMiao Yan printf("[%s][SH][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__, \ 85*71c2f5b9SMiao Yan ## __VA_ARGS__); \ 86*71c2f5b9SMiao Yan } \ 87*71c2f5b9SMiao Yan } while (0) 88*71c2f5b9SMiao Yan 89*71c2f5b9SMiao Yan #define VMW_CBPRN(fmt, ...) \ 90*71c2f5b9SMiao Yan do { \ 91*71c2f5b9SMiao Yan if (VMXNET_DEBUG_CB_ENABLED) { \ 92*71c2f5b9SMiao Yan printf("[%s][CB][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__, \ 93*71c2f5b9SMiao Yan ## __VA_ARGS__); \ 94*71c2f5b9SMiao Yan } \ 95*71c2f5b9SMiao Yan } while (0) 96*71c2f5b9SMiao Yan 97*71c2f5b9SMiao Yan #define VMW_PKPRN(fmt, ...) \ 98*71c2f5b9SMiao Yan do { \ 99*71c2f5b9SMiao Yan if (VMXNET_DEBUG_PACKETS_ENABLED) { \ 100*71c2f5b9SMiao Yan printf("[%s][PK][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__, \ 101*71c2f5b9SMiao Yan ## __VA_ARGS__); \ 102*71c2f5b9SMiao Yan } \ 103*71c2f5b9SMiao Yan } while (0) 104*71c2f5b9SMiao Yan 105*71c2f5b9SMiao Yan #define VMW_WRPRN(fmt, ...) \ 106*71c2f5b9SMiao Yan do { \ 107*71c2f5b9SMiao Yan if (VMXNET_DEBUG_WARNINGS_ENABLED) { \ 108*71c2f5b9SMiao Yan printf("[%s][WR][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__, \ 109*71c2f5b9SMiao Yan ## __VA_ARGS__); \ 110*71c2f5b9SMiao Yan } \ 111*71c2f5b9SMiao Yan } while (0) 112*71c2f5b9SMiao Yan 113*71c2f5b9SMiao Yan #define VMW_ERPRN(fmt, ...) \ 114*71c2f5b9SMiao Yan do { \ 115*71c2f5b9SMiao Yan if (VMXNET_DEBUG_ERRORS_ENABLED) { \ 116*71c2f5b9SMiao Yan printf("[%s][ER][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__, \ 117*71c2f5b9SMiao Yan ## __VA_ARGS__); \ 118*71c2f5b9SMiao Yan } \ 119*71c2f5b9SMiao Yan } while (0) 120*71c2f5b9SMiao Yan 121*71c2f5b9SMiao Yan #define VMW_IRPRN(fmt, ...) \ 122*71c2f5b9SMiao Yan do { \ 123*71c2f5b9SMiao Yan if (VMXNET_DEBUG_INTERRUPTS_ENABLED) { \ 124*71c2f5b9SMiao Yan printf("[%s][IR][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__, \ 125*71c2f5b9SMiao Yan ## __VA_ARGS__); \ 126*71c2f5b9SMiao Yan } \ 127*71c2f5b9SMiao Yan } while (0) 128*71c2f5b9SMiao Yan 129*71c2f5b9SMiao Yan #define VMW_CFPRN(fmt, ...) \ 130*71c2f5b9SMiao Yan do { \ 131*71c2f5b9SMiao Yan if (VMXNET_DEBUG_CONFIG_ENABLED) { \ 132*71c2f5b9SMiao Yan printf("[%s][CF][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__, \ 133*71c2f5b9SMiao Yan ## __VA_ARGS__); \ 134*71c2f5b9SMiao Yan } \ 135*71c2f5b9SMiao Yan } while (0) 136*71c2f5b9SMiao Yan 13749ab747fSPaolo Bonzini #define VMW_RIPRN(fmt, ...) \ 13849ab747fSPaolo Bonzini do { \ 139*71c2f5b9SMiao Yan if (VMXNET_DEBUG_RINGS_ENABLED) { \ 14049ab747fSPaolo Bonzini printf("[%s][RI][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__, \ 14149ab747fSPaolo Bonzini ## __VA_ARGS__); \ 142*71c2f5b9SMiao Yan } \ 14349ab747fSPaolo Bonzini } while (0) 14449ab747fSPaolo Bonzini 14549ab747fSPaolo Bonzini #endif /* QEMU_VMXNET_DEBUG_H */ 146