diff mbox

[v2,2/3] net/vmxnet3: fix debug macro pattern for vmxnet3

Message ID 1449305702-2122-3-git-send-email-yanmiaobest@gmail.com
State New
Headers show

Commit Message

Miao Yan Dec. 5, 2015, 8:55 a.m. UTC
Vmxnet3 uses the following debug macro style:

 #ifdef SOME_DEBUG
 #  define debug(...) do{ printf(...); } while (0)
 # else
 #  define debug(...) do{ } while (0)
 #endif

If SOME_DEBUG is undefined, then format string inside the
debug macro will never be checked by compiler. Code is
likely to break in the future when SOME_DEBUG is enabled
 because of lack of testing. This patch changes this
to the following:

 #define debug(...) \
  do { if (SOME_DEBUG_ENABLED) printf(...); } while (0)

Signed-off-by: Miao Yan <yanmiaobest@gmail.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
---
Changes in v2:
  - Fix grammar error in commit log

 hw/net/vmxnet_debug.h | 139 +++++++++++++++++++++++++++++++-------------------
 1 file changed, 86 insertions(+), 53 deletions(-)

Comments

Jason Wang Dec. 7, 2015, 2:47 a.m. UTC | #1
On 12/05/2015 04:55 PM, Miao Yan wrote:
> Vmxnet3 uses the following debug macro style:
>
>  #ifdef SOME_DEBUG
>  #  define debug(...) do{ printf(...); } while (0)
>  # else
>  #  define debug(...) do{ } while (0)
>  #endif
>
> If SOME_DEBUG is undefined, then format string inside the
> debug macro will never be checked by compiler. Code is
> likely to break in the future when SOME_DEBUG is enabled
>  because of lack of testing. This patch changes this
> to the following:
>
>  #define debug(...) \
>   do { if (SOME_DEBUG_ENABLED) printf(...); } while (0)
>
> Signed-off-by: Miao Yan <yanmiaobest@gmail.com>
> Reviewed-by: Eric Blake <eblake@redhat.com>
> ---
> Changes in v2:
>   - Fix grammar error in commit log

Applied in my -net for 2.5. Thanks

>
>  hw/net/vmxnet_debug.h | 139 +++++++++++++++++++++++++++++++-------------------
>  1 file changed, 86 insertions(+), 53 deletions(-)
>
> diff --git a/hw/net/vmxnet_debug.h b/hw/net/vmxnet_debug.h
> index 96dae0f..96495db 100644
> --- a/hw/net/vmxnet_debug.h
> +++ b/hw/net/vmxnet_debug.h
> @@ -20,94 +20,127 @@
>  
>  #define VMXNET_DEVICE_NAME "vmxnet3"
>  
> -/* #define VMXNET_DEBUG_CB */
>  #define VMXNET_DEBUG_WARNINGS
>  #define VMXNET_DEBUG_ERRORS
> -/* #define VMXNET_DEBUG_INTERRUPTS */
> -/* #define VMXNET_DEBUG_CONFIG */
> -/* #define VMXNET_DEBUG_RINGS */
> -/* #define VMXNET_DEBUG_PACKETS */
> -/* #define VMXNET_DEBUG_SHMEM_ACCESS */
> +
> +#undef VMXNET_DEBUG_CB
> +#undef VMXNET_DEBUG_INTERRUPTS
> +#undef VMXNET_DEBUG_CONFIG
> +#undef VMXNET_DEBUG_RINGS
> +#undef VMXNET_DEBUG_PACKETS
> +#undef VMXNET_DEBUG_SHMEM_ACCESS
> +
> +#ifdef VMXNET_DEBUG_CB
> +#  define VMXNET_DEBUG_CB_ENABLED 1
> +#else
> +#  define VMXNET_DEBUG_CB_ENABLED 0
> +#endif
> +
> +#ifdef VMXNET_DEBUG_WARNINGS
> +#  define VMXNET_DEBUG_WARNINGS_ENABLED 1
> +#else
> +#  define VMXNET_DEBUG_WARNINGS_ENABLED 0
> +#endif
> +
> +#ifdef VMXNET_DEBUG_ERRORS
> +#  define VMXNET_DEBUG_ERRORS_ENABLED 1
> +#else
> +#  define VMXNET_DEBUG_ERRORS_ENABLED 0
> +#endif
> +
> +#ifdef VMXNET_DEBUG_CONFIG
> +#  define VMXNET_DEBUG_CONFIG_ENABLED 1
> +#else
> +#  define VMXNET_DEBUG_CONFIG_ENABLED 0
> +#endif
> +
> +#ifdef VMXNET_DEBUG_RINGS
> +#  define VMXNET_DEBUG_RINGS_ENABLED 1
> +#else
> +#  define VMXNET_DEBUG_RINGS_ENABLED 0
> +#endif
> +
> +#ifdef VMXNET_DEBUG_PACKETS
> +#  define VMXNET_DEBUG_PACKETS_ENABLED 1
> +#else
> +#  define VMXNET_DEBUG_PACKETS_ENABLED 0
> +#endif
> +
> +#ifdef VMXNET_DEBUG_INTERRUPTS
> +#  define VMXNET_DEBUG_INTERRUPTS_ENABLED 1
> +#else
> +#  define VMXNET_DEBUG_INTERRUPTS_ENABLED 0
> +#endif
>  
>  #ifdef VMXNET_DEBUG_SHMEM_ACCESS
> +#  define VMXNET_DEBUG_SHMEM_ACCESS_ENABLED 1
> +#else
> +#  define VMXNET_DEBUG_SHMEM_ACCESS_ENABLED 0
> +#endif
> +
>  #define VMW_SHPRN(fmt, ...)                                                   \
>      do {                                                                      \
> -        printf("[%s][SH][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,       \
> -            ## __VA_ARGS__);                                                  \
> +        if (VMXNET_DEBUG_SHMEM_ACCESS_ENABLED) {                              \
> +            printf("[%s][SH][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,   \
> +                ## __VA_ARGS__);                                              \
> +       }                                                                      \
>      } while (0)
> -#else
> -#define VMW_SHPRN(fmt, ...) do {} while (0)
> -#endif
>  
> -#ifdef VMXNET_DEBUG_CB
>  #define VMW_CBPRN(fmt, ...)                                                   \
>      do {                                                                      \
> -        printf("[%s][CB][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,       \
> -            ## __VA_ARGS__);                                                  \
> +        if (VMXNET_DEBUG_CB_ENABLED) {                                        \
> +            printf("[%s][CB][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,   \
> +                ## __VA_ARGS__);                                              \
> +        }                                                                     \
>      } while (0)
> -#else
> -#define VMW_CBPRN(fmt, ...) do {} while (0)
> -#endif
>  
> -#ifdef VMXNET_DEBUG_PACKETS
>  #define VMW_PKPRN(fmt, ...)                                                   \
>      do {                                                                      \
> -        printf("[%s][PK][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,       \
> -            ## __VA_ARGS__);                                                  \
> +        if (VMXNET_DEBUG_PACKETS_ENABLED) {                                   \
> +            printf("[%s][PK][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,   \
> +                ## __VA_ARGS__);                                              \
> +        }                                                                     \
>      } while (0)
> -#else
> -#define VMW_PKPRN(fmt, ...) do {} while (0)
> -#endif
>  
> -#ifdef VMXNET_DEBUG_WARNINGS
>  #define VMW_WRPRN(fmt, ...)                                                   \
>      do {                                                                      \
> -        printf("[%s][WR][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,       \
> -            ## __VA_ARGS__);                                                  \
> +        if (VMXNET_DEBUG_WARNINGS_ENABLED) {                                  \
> +            printf("[%s][WR][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,   \
> +                ## __VA_ARGS__);                                              \
> +        }                                                                     \
>      } while (0)
> -#else
> -#define VMW_WRPRN(fmt, ...) do {} while (0)
> -#endif
>  
> -#ifdef VMXNET_DEBUG_ERRORS
>  #define VMW_ERPRN(fmt, ...)                                                   \
>      do {                                                                      \
> -        printf("[%s][ER][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,       \
> -            ## __VA_ARGS__);                                                  \
> +        if (VMXNET_DEBUG_ERRORS_ENABLED) {                                    \
> +            printf("[%s][ER][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,   \
> +                ## __VA_ARGS__);                                              \
> +        }                                                                     \
>      } while (0)
> -#else
> -#define VMW_ERPRN(fmt, ...) do {} while (0)
> -#endif
>  
> -#ifdef VMXNET_DEBUG_INTERRUPTS
>  #define VMW_IRPRN(fmt, ...)                                                   \
>      do {                                                                      \
> -        printf("[%s][IR][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,       \
> -            ## __VA_ARGS__);                                                  \
> +        if (VMXNET_DEBUG_INTERRUPTS_ENABLED) {                                \
> +            printf("[%s][IR][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,   \
> +                ## __VA_ARGS__);                                              \
> +        }                                                                     \
>      } while (0)
> -#else
> -#define VMW_IRPRN(fmt, ...) do {} while (0)
> -#endif
>  
> -#ifdef VMXNET_DEBUG_CONFIG
>  #define VMW_CFPRN(fmt, ...)                                                   \
>      do {                                                                      \
> -        printf("[%s][CF][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,       \
> -            ## __VA_ARGS__);                                                  \
> +        if (VMXNET_DEBUG_CONFIG_ENABLED) {                                    \
> +            printf("[%s][CF][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,   \
> +                ## __VA_ARGS__);                                              \
> +        }                                                                     \
>      } while (0)
> -#else
> -#define VMW_CFPRN(fmt, ...) do {} while (0)
> -#endif
>  
> -#ifdef VMXNET_DEBUG_RINGS
>  #define VMW_RIPRN(fmt, ...)                                                   \
>      do {                                                                      \
> -        printf("[%s][RI][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,       \
> -            ## __VA_ARGS__);                                                  \
> +        if (VMXNET_DEBUG_RINGS_ENABLED) {                                     \
> +            printf("[%s][RI][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,   \
> +                ## __VA_ARGS__);                                              \
> +        }                                                                     \
>      } while (0)
> -#else
> -#define VMW_RIPRN(fmt, ...) do {} while (0)
> -#endif
>  
>  #define VMXNET_MF       "%02X:%02X:%02X:%02X:%02X:%02X"
>  #define VMXNET_MA(a)    (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
Eric Blake Dec. 7, 2015, 10:04 p.m. UTC | #2
On 12/06/2015 07:47 PM, Jason Wang wrote:
> 
> 
> On 12/05/2015 04:55 PM, Miao Yan wrote:
>> Vmxnet3 uses the following debug macro style:
>>
>>  #ifdef SOME_DEBUG
>>  #  define debug(...) do{ printf(...); } while (0)
>>  # else
>>  #  define debug(...) do{ } while (0)
>>  #endif
>>
>> If SOME_DEBUG is undefined, then format string inside the
>> debug macro will never be checked by compiler. Code is
>> likely to break in the future when SOME_DEBUG is enabled
>>  because of lack of testing. This patch changes this
>> to the following:
>>
>>  #define debug(...) \
>>   do { if (SOME_DEBUG_ENABLED) printf(...); } while (0)
>>
>> Signed-off-by: Miao Yan <yanmiaobest@gmail.com>
>> Reviewed-by: Eric Blake <eblake@redhat.com>
>> ---
>> Changes in v2:
>>   - Fix grammar error in commit log
> 
> Applied in my -net for 2.5. Thanks

I don't know if Miao saw Peter's reaction to the pull request, but just
as I guessed on v1, exposing more format strings turned up more latent
bugs in the format strings, with failures such as:

> I'm afraid this doesn't build on 32-bit due to format string errors:
> 
> /home/petmay01/qemu/hw/net/vmxnet3.c: In function 'vmxnet3_complete_packet':
> /home/petmay01/qemu/hw/net/vmxnet3.c:500:5: error: format '%lu'
> expects argument of type 'long unsigned int', but argument 7 has type
> 'size_t' [-Werror=format=]
> VMXNET3_RING_DUMP(VMW_RIPRN, "TXC", qidx, &s->txq_descr[qidx].comp_ring);

Looks like it will need a v3; and sorry that I didn't catch the problems
in my review (I was just going off of whether the macro conversion was
correct, and not an actual compile test to see if all the now-live
format strings were always valid).
Miao Yan Dec. 8, 2015, 2:53 a.m. UTC | #3
2015-12-08 6:04 GMT+08:00 Eric Blake <eblake@redhat.com>:
> On 12/06/2015 07:47 PM, Jason Wang wrote:
>>
>>
>> On 12/05/2015 04:55 PM, Miao Yan wrote:
>>> Vmxnet3 uses the following debug macro style:
>>>
>>>  #ifdef SOME_DEBUG
>>>  #  define debug(...) do{ printf(...); } while (0)
>>>  # else
>>>  #  define debug(...) do{ } while (0)
>>>  #endif
>>>
>>> If SOME_DEBUG is undefined, then format string inside the
>>> debug macro will never be checked by compiler. Code is
>>> likely to break in the future when SOME_DEBUG is enabled
>>>  because of lack of testing. This patch changes this
>>> to the following:
>>>
>>>  #define debug(...) \
>>>   do { if (SOME_DEBUG_ENABLED) printf(...); } while (0)
>>>
>>> Signed-off-by: Miao Yan <yanmiaobest@gmail.com>
>>> Reviewed-by: Eric Blake <eblake@redhat.com>
>>> ---
>>> Changes in v2:
>>>   - Fix grammar error in commit log
>>
>> Applied in my -net for 2.5. Thanks
>
> I don't know if Miao saw Peter's reaction to the pull request, but just
> as I guessed on v1, exposing more format strings turned up more latent
> bugs in the format strings, with failures such as:

Very sorry about this.

>
>> I'm afraid this doesn't build on 32-bit due to format string errors:
>>
>> /home/petmay01/qemu/hw/net/vmxnet3.c: In function 'vmxnet3_complete_packet':
>> /home/petmay01/qemu/hw/net/vmxnet3.c:500:5: error: format '%lu'
>> expects argument of type 'long unsigned int', but argument 7 has type
>> 'size_t' [-Werror=format=]
>> VMXNET3_RING_DUMP(VMW_RIPRN, "TXC", qidx, &s->txq_descr[qidx].comp_ring);


I don't have a 32 bit machine for a long time, I'll create a VM to test this.

>
> Looks like it will need a v3; and sorry that I didn't catch the problems
> in my review (I was just going off of whether the macro conversion was
> correct, and not an actual compile test to see if all the now-live
> format strings were always valid).


I guess %zu should fix this.  I'll send v3. Thanks.


>
> --
> Eric Blake   eblake redhat com    +1-919-301-3266
> Libvirt virtualization library http://libvirt.org
>
Jason Wang Dec. 11, 2015, 3:12 a.m. UTC | #4
On 12/08/2015 06:04 AM, Eric Blake wrote:
> On 12/06/2015 07:47 PM, Jason Wang wrote:
>>
>> On 12/05/2015 04:55 PM, Miao Yan wrote:
>>> Vmxnet3 uses the following debug macro style:
>>>
>>>  #ifdef SOME_DEBUG
>>>  #  define debug(...) do{ printf(...); } while (0)
>>>  # else
>>>  #  define debug(...) do{ } while (0)
>>>  #endif
>>>
>>> If SOME_DEBUG is undefined, then format string inside the
>>> debug macro will never be checked by compiler. Code is
>>> likely to break in the future when SOME_DEBUG is enabled
>>>  because of lack of testing. This patch changes this
>>> to the following:
>>>
>>>  #define debug(...) \
>>>   do { if (SOME_DEBUG_ENABLED) printf(...); } while (0)
>>>
>>> Signed-off-by: Miao Yan <yanmiaobest@gmail.com>
>>> Reviewed-by: Eric Blake <eblake@redhat.com>
>>> ---
>>> Changes in v2:
>>>   - Fix grammar error in commit log
>> Applied in my -net for 2.5. Thanks
> I don't know if Miao saw Peter's reaction to the pull request, but just
> as I guessed on v1, exposing more format strings turned up more latent
> bugs in the format strings, with failures such as:
>
>> I'm afraid this doesn't build on 32-bit due to format string errors:
>>
>> /home/petmay01/qemu/hw/net/vmxnet3.c: In function 'vmxnet3_complete_packet':
>> /home/petmay01/qemu/hw/net/vmxnet3.c:500:5: error: format '%lu'
>> expects argument of type 'long unsigned int', but argument 7 has type
>> 'size_t' [-Werror=format=]
>> VMXNET3_RING_DUMP(VMW_RIPRN, "TXC", qidx, &s->txq_descr[qidx].comp_ring);
> Looks like it will need a v3; and sorry that I didn't catch the problems
> in my review (I was just going off of whether the macro conversion was
> correct, and not an actual compile test to see if all the now-live
> format strings were always valid).
>

No problem, this also reminds me to do 32-bit compile test before
submitting pull request.

Thanks
diff mbox

Patch

diff --git a/hw/net/vmxnet_debug.h b/hw/net/vmxnet_debug.h
index 96dae0f..96495db 100644
--- a/hw/net/vmxnet_debug.h
+++ b/hw/net/vmxnet_debug.h
@@ -20,94 +20,127 @@ 
 
 #define VMXNET_DEVICE_NAME "vmxnet3"
 
-/* #define VMXNET_DEBUG_CB */
 #define VMXNET_DEBUG_WARNINGS
 #define VMXNET_DEBUG_ERRORS
-/* #define VMXNET_DEBUG_INTERRUPTS */
-/* #define VMXNET_DEBUG_CONFIG */
-/* #define VMXNET_DEBUG_RINGS */
-/* #define VMXNET_DEBUG_PACKETS */
-/* #define VMXNET_DEBUG_SHMEM_ACCESS */
+
+#undef VMXNET_DEBUG_CB
+#undef VMXNET_DEBUG_INTERRUPTS
+#undef VMXNET_DEBUG_CONFIG
+#undef VMXNET_DEBUG_RINGS
+#undef VMXNET_DEBUG_PACKETS
+#undef VMXNET_DEBUG_SHMEM_ACCESS
+
+#ifdef VMXNET_DEBUG_CB
+#  define VMXNET_DEBUG_CB_ENABLED 1
+#else
+#  define VMXNET_DEBUG_CB_ENABLED 0
+#endif
+
+#ifdef VMXNET_DEBUG_WARNINGS
+#  define VMXNET_DEBUG_WARNINGS_ENABLED 1
+#else
+#  define VMXNET_DEBUG_WARNINGS_ENABLED 0
+#endif
+
+#ifdef VMXNET_DEBUG_ERRORS
+#  define VMXNET_DEBUG_ERRORS_ENABLED 1
+#else
+#  define VMXNET_DEBUG_ERRORS_ENABLED 0
+#endif
+
+#ifdef VMXNET_DEBUG_CONFIG
+#  define VMXNET_DEBUG_CONFIG_ENABLED 1
+#else
+#  define VMXNET_DEBUG_CONFIG_ENABLED 0
+#endif
+
+#ifdef VMXNET_DEBUG_RINGS
+#  define VMXNET_DEBUG_RINGS_ENABLED 1
+#else
+#  define VMXNET_DEBUG_RINGS_ENABLED 0
+#endif
+
+#ifdef VMXNET_DEBUG_PACKETS
+#  define VMXNET_DEBUG_PACKETS_ENABLED 1
+#else
+#  define VMXNET_DEBUG_PACKETS_ENABLED 0
+#endif
+
+#ifdef VMXNET_DEBUG_INTERRUPTS
+#  define VMXNET_DEBUG_INTERRUPTS_ENABLED 1
+#else
+#  define VMXNET_DEBUG_INTERRUPTS_ENABLED 0
+#endif
 
 #ifdef VMXNET_DEBUG_SHMEM_ACCESS
+#  define VMXNET_DEBUG_SHMEM_ACCESS_ENABLED 1
+#else
+#  define VMXNET_DEBUG_SHMEM_ACCESS_ENABLED 0
+#endif
+
 #define VMW_SHPRN(fmt, ...)                                                   \
     do {                                                                      \
-        printf("[%s][SH][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,       \
-            ## __VA_ARGS__);                                                  \
+        if (VMXNET_DEBUG_SHMEM_ACCESS_ENABLED) {                              \
+            printf("[%s][SH][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,   \
+                ## __VA_ARGS__);                                              \
+       }                                                                      \
     } while (0)
-#else
-#define VMW_SHPRN(fmt, ...) do {} while (0)
-#endif
 
-#ifdef VMXNET_DEBUG_CB
 #define VMW_CBPRN(fmt, ...)                                                   \
     do {                                                                      \
-        printf("[%s][CB][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,       \
-            ## __VA_ARGS__);                                                  \
+        if (VMXNET_DEBUG_CB_ENABLED) {                                        \
+            printf("[%s][CB][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,   \
+                ## __VA_ARGS__);                                              \
+        }                                                                     \
     } while (0)
-#else
-#define VMW_CBPRN(fmt, ...) do {} while (0)
-#endif
 
-#ifdef VMXNET_DEBUG_PACKETS
 #define VMW_PKPRN(fmt, ...)                                                   \
     do {                                                                      \
-        printf("[%s][PK][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,       \
-            ## __VA_ARGS__);                                                  \
+        if (VMXNET_DEBUG_PACKETS_ENABLED) {                                   \
+            printf("[%s][PK][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,   \
+                ## __VA_ARGS__);                                              \
+        }                                                                     \
     } while (0)
-#else
-#define VMW_PKPRN(fmt, ...) do {} while (0)
-#endif
 
-#ifdef VMXNET_DEBUG_WARNINGS
 #define VMW_WRPRN(fmt, ...)                                                   \
     do {                                                                      \
-        printf("[%s][WR][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,       \
-            ## __VA_ARGS__);                                                  \
+        if (VMXNET_DEBUG_WARNINGS_ENABLED) {                                  \
+            printf("[%s][WR][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,   \
+                ## __VA_ARGS__);                                              \
+        }                                                                     \
     } while (0)
-#else
-#define VMW_WRPRN(fmt, ...) do {} while (0)
-#endif
 
-#ifdef VMXNET_DEBUG_ERRORS
 #define VMW_ERPRN(fmt, ...)                                                   \
     do {                                                                      \
-        printf("[%s][ER][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,       \
-            ## __VA_ARGS__);                                                  \
+        if (VMXNET_DEBUG_ERRORS_ENABLED) {                                    \
+            printf("[%s][ER][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,   \
+                ## __VA_ARGS__);                                              \
+        }                                                                     \
     } while (0)
-#else
-#define VMW_ERPRN(fmt, ...) do {} while (0)
-#endif
 
-#ifdef VMXNET_DEBUG_INTERRUPTS
 #define VMW_IRPRN(fmt, ...)                                                   \
     do {                                                                      \
-        printf("[%s][IR][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,       \
-            ## __VA_ARGS__);                                                  \
+        if (VMXNET_DEBUG_INTERRUPTS_ENABLED) {                                \
+            printf("[%s][IR][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,   \
+                ## __VA_ARGS__);                                              \
+        }                                                                     \
     } while (0)
-#else
-#define VMW_IRPRN(fmt, ...) do {} while (0)
-#endif
 
-#ifdef VMXNET_DEBUG_CONFIG
 #define VMW_CFPRN(fmt, ...)                                                   \
     do {                                                                      \
-        printf("[%s][CF][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,       \
-            ## __VA_ARGS__);                                                  \
+        if (VMXNET_DEBUG_CONFIG_ENABLED) {                                    \
+            printf("[%s][CF][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,   \
+                ## __VA_ARGS__);                                              \
+        }                                                                     \
     } while (0)
-#else
-#define VMW_CFPRN(fmt, ...) do {} while (0)
-#endif
 
-#ifdef VMXNET_DEBUG_RINGS
 #define VMW_RIPRN(fmt, ...)                                                   \
     do {                                                                      \
-        printf("[%s][RI][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,       \
-            ## __VA_ARGS__);                                                  \
+        if (VMXNET_DEBUG_RINGS_ENABLED) {                                     \
+            printf("[%s][RI][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__,   \
+                ## __VA_ARGS__);                                              \
+        }                                                                     \
     } while (0)
-#else
-#define VMW_RIPRN(fmt, ...) do {} while (0)
-#endif
 
 #define VMXNET_MF       "%02X:%02X:%02X:%02X:%02X:%02X"
 #define VMXNET_MA(a)    (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]