[dpdk-dev] [PATCH v2] log: do not drop debug logs at compile time

2016-11-23 Thread Olivier Matz
Today, all logs whose level is lower than INFO are dropped at
compile-time. This prevents from enabling debug logs at runtime using
--log-level=8.

The rationale was to remove debug logs from the data path at
compile-time, avoiding a test at run-time.

This patch changes the behavior of RTE_LOG() to avoid the compile-time
optimization, and introduces the RTE_LOG_DP() macro that has the same
behavior than the previous RTE_LOG(), for the rare cases where debug
logs are in the data path.

So it is now possible to enable debug logs at run-time by just
specifying --log-level=8. Some drivers still have special compile-time
options to enable more debug log. Maintainers may consider to
remove/reduce them.

Signed-off-by: Olivier Matz 
---
v1 -> v2:
- fix test in RTE_LOG_DP() as pointed-out by David

 config/common_base  |  1 +
 doc/guides/faq/faq.rst  |  2 +-
 drivers/net/bnxt/bnxt_txr.c |  2 +-
 drivers/net/nfp/nfp_net.c   |  8 +++---
 examples/distributor/main.c |  4 +--
 examples/ipsec-secgw/esp.c  |  2 +-
 examples/ipsec-secgw/ipsec.c|  4 +--
 examples/packet_ordering/main.c |  6 ++--
 examples/quota_watermark/qw/main.c  |  2 +-
 examples/tep_termination/main.c |  4 +--
 examples/vhost/main.c   | 14 -
 examples/vhost_xen/main.c   | 20 ++---
 lib/librte_eal/common/include/rte_log.h | 51 +
 13 files changed, 68 insertions(+), 52 deletions(-)

diff --git a/config/common_base b/config/common_base
index 4bff83a..652a839 100644
--- a/config/common_base
+++ b/config/common_base
@@ -89,6 +89,7 @@ CONFIG_RTE_MAX_MEMSEG=256
 CONFIG_RTE_MAX_MEMZONE=2560
 CONFIG_RTE_MAX_TAILQ=32
 CONFIG_RTE_LOG_LEVEL=RTE_LOG_INFO
+CONFIG_RTE_LOG_DP_LEVEL=RTE_LOG_INFO
 CONFIG_RTE_LOG_HISTORY=256
 CONFIG_RTE_LIBEAL_USE_HPET=n
 CONFIG_RTE_EAL_ALLOW_INV_SOCKET_ID=n
diff --git a/doc/guides/faq/faq.rst b/doc/guides/faq/faq.rst
index 8d1ea6c..0adc549 100644
--- a/doc/guides/faq/faq.rst
+++ b/doc/guides/faq/faq.rst
@@ -101,7 +101,7 @@ Yes, the option ``--log-level=`` accepts one of these 
numbers:
 #define RTE_LOG_INFO 7U /* Informational. */
 #define RTE_LOG_DEBUG 8U/* Debug-level messages. */

-It is also possible to change the maximum (and default level) at compile time
+It is also possible to change the default level at compile time
 with ``CONFIG_RTE_LOG_LEVEL``.


diff --git a/drivers/net/bnxt/bnxt_txr.c b/drivers/net/bnxt/bnxt_txr.c
index 8bf8fee..0d15bb1 100644
--- a/drivers/net/bnxt/bnxt_txr.c
+++ b/drivers/net/bnxt/bnxt_txr.c
@@ -298,7 +298,7 @@ static int bnxt_handle_tx_cp(struct bnxt_tx_queue *txq)
if (CMP_TYPE(txcmp) == TX_CMPL_TYPE_TX_L2)
nb_tx_pkts++;
else
-   RTE_LOG(DEBUG, PMD,
+   RTE_LOG_DP(DEBUG, PMD,
"Unhandled CMP type %02x\n",
CMP_TYPE(txcmp));
raw_cons = NEXT_RAW_CMP(raw_cons);
diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c
index 707be8b..e315dd8 100644
--- a/drivers/net/nfp/nfp_net.c
+++ b/drivers/net/nfp/nfp_net.c
@@ -1707,7 +1707,7 @@ nfp_net_recv_pkts(void *rx_queue, struct rte_mbuf 
**rx_pkts, uint16_t nb_pkts)
 * DPDK just checks the queue is lower than max queues
 * enabled. But the queue needs to be configured
 */
-   RTE_LOG(ERR, PMD, "RX Bad queue\n");
+   RTE_LOG_DP(ERR, PMD, "RX Bad queue\n");
return -EINVAL;
}

@@ -1720,7 +1720,7 @@ nfp_net_recv_pkts(void *rx_queue, struct rte_mbuf 
**rx_pkts, uint16_t nb_pkts)

rxb = &rxq->rxbufs[idx];
if (unlikely(rxb == NULL)) {
-   RTE_LOG(ERR, PMD, "rxb does not exist!\n");
+   RTE_LOG_DP(ERR, PMD, "rxb does not exist!\n");
break;
}

@@ -1740,7 +1740,7 @@ nfp_net_recv_pkts(void *rx_queue, struct rte_mbuf 
**rx_pkts, uint16_t nb_pkts)
 */
new_mb = rte_pktmbuf_alloc(rxq->mem_pool);
if (unlikely(new_mb == NULL)) {
-   RTE_LOG(DEBUG, PMD, "RX mbuf alloc failed port_id=%u "
+   RTE_LOG_DP(DEBUG, PMD, "RX mbuf alloc failed port_id=%u 
"
"queue_id=%u\n", (unsigned)rxq->port_id,
(unsigned)rxq->qidx);
nfp_net_mbuf_alloc_failed(rxq);
@@ -1771,7 +1771,7 @@ nfp_net_recv_pkts(void *rx_queue, struct rte_mbuf 
**rx_pkts, uint16_t nb_pkts)
 * responsibility of avoiding it. But we have
 * to give some info about the error
 */
-   RTE_LOG(ERR, PMD,

Re: [dpdk-dev] [PATCH v2] log: do not drop debug logs at compile time

2016-12-05 Thread Thomas Monjalon
2016-11-23 16:34, Olivier Matz:
> Today, all logs whose level is lower than INFO are dropped at
> compile-time. This prevents from enabling debug logs at runtime using
> --log-level=8.
> 
> The rationale was to remove debug logs from the data path at
> compile-time, avoiding a test at run-time.
> 
> This patch changes the behavior of RTE_LOG() to avoid the compile-time
> optimization, and introduces the RTE_LOG_DP() macro that has the same
> behavior than the previous RTE_LOG(), for the rare cases where debug
> logs are in the data path.
> 
> So it is now possible to enable debug logs at run-time by just
> specifying --log-level=8. Some drivers still have special compile-time
> options to enable more debug log. Maintainers may consider to
> remove/reduce them.
> 
> Signed-off-by: Olivier Matz 

Applied, thanks