#define BNX2X_MSG_DCB                  0x8000000
 
 /* regular debug print */
+#define DP_INNER(fmt, ...)                                     \
+       pr_notice("[%s:%d(%s)]" fmt,                            \
+                 __func__, __LINE__,                           \
+                 bp->dev ? (bp->dev->name) : "?",              \
+                 ##__VA_ARGS__);
+
 #define DP(__mask, fmt, ...)                                   \
 do {                                                           \
        if (unlikely(bp->msg_enable & (__mask)))                \
-               pr_notice("[%s:%d(%s)]" fmt,                    \
-                         __func__, __LINE__,                   \
-                         bp->dev ? (bp->dev->name) : "?",      \
-                         ##__VA_ARGS__);                       \
+               DP_INNER(fmt, ##__VA_ARGS__);                   \
+} while (0)
+
+#define DP_AND(__mask, fmt, ...)                               \
+do {                                                           \
+       if (unlikely((bp->msg_enable & (__mask)) == __mask))    \
+               DP_INNER(fmt, ##__VA_ARGS__);                   \
 } while (0)
 
 #define DP_CONT(__mask, fmt, ...)                              \
 
                        continue;
 
                case EVENT_RING_OPCODE_STAT_QUERY:
-                       DP(BNX2X_MSG_SP | BNX2X_MSG_STATS,
-                          "got statistics comp event %d\n",
-                          bp->stats_comp++);
+                       DP_AND((BNX2X_MSG_SP | BNX2X_MSG_STATS),
+                              "got statistics comp event %d\n",
+                              bp->stats_comp++);
                        /* nothing to do with stats comp */
                        goto next_spqe;
 
 
        first_queue_query_index = BNX2X_FIRST_QUEUE_QUERY_IDX -
                (is_fcoe ? 0 : 1);
 
-       DP(BNX2X_MSG_IOV,
-          "BNX2X_NUM_ETH_QUEUES %d, is_fcoe %d, first_queue_query_index %d => determined the last non virtual statistics query index is %d. Will add queries on top of that\n",
-          BNX2X_NUM_ETH_QUEUES(bp), is_fcoe, first_queue_query_index,
-          first_queue_query_index + num_queues_req);
+       DP_AND((BNX2X_MSG_IOV | BNX2X_MSG_STATS),
+              "BNX2X_NUM_ETH_QUEUES %d, is_fcoe %d, first_queue_query_index %d => determined the last non virtual statistics query index is %d. Will add queries on top of that\n",
+              BNX2X_NUM_ETH_QUEUES(bp), is_fcoe, first_queue_query_index,
+              first_queue_query_index + num_queues_req);
 
        cur_data_offset = bp->fw_stats_data_mapping +
                offsetof(struct bnx2x_fw_stats_data, queue_stats) +
                struct bnx2x_virtf *vf = BP_VF(bp, i);
 
                if (vf->state != VF_ENABLED) {
-                       DP(BNX2X_MSG_IOV,
-                          "vf %d not enabled so no stats for it\n",
-                          vf->abs_vfid);
+                       DP_AND((BNX2X_MSG_IOV | BNX2X_MSG_STATS),
+                              "vf %d not enabled so no stats for it\n",
+                              vf->abs_vfid);
                        continue;
                }
 
        /* Iterate over all VFs and invoke state transition for VFs with
         * 'in-progress' slow-path operations
         */
-       DP(BNX2X_MSG_IOV, "searching for pending vf operations\n");
+       DP_AND((BNX2X_MSG_IOV | BNX2X_MSG_SP),
+              "searching for pending vf operations\n");
        for_each_vf(bp, i) {
                struct bnx2x_virtf *vf = BP_VF(bp, i);