net/mlx5: add RSS flow action
[dpdk.git] / doc / guides / contributing / coding_style.rst
index f90d6ee..2587605 100644 (file)
@@ -614,8 +614,8 @@ In the DPDK environment, use the logging interface provided:
   * is DEBUG) */
  rte_log_set_level(my_logtype2, RTE_LOG_NOTICE);
 
   * is DEBUG) */
  rte_log_set_level(my_logtype2, RTE_LOG_NOTICE);
 
- /* enable all PMD logs (whose identifier string starts with "pmd") */
- rte_log_set_level_regexp("pmd.*", RTE_LOG_DEBUG);
+ /* enable all PMD logs (whose identifier string starts with "pmd.") */
+ rte_log_set_level_pattern("pmd.*", RTE_LOG_DEBUG);
 
  /* log in debug level */
  rte_log_set_global_level(RTE_LOG_DEBUG);
 
  /* log in debug level */
  rte_log_set_global_level(RTE_LOG_DEBUG);
@@ -694,6 +694,56 @@ Control Statements
                  /* NOTREACHED */
          }
 
                  /* NOTREACHED */
          }
 
+Dynamic Logging
+---------------
+
+DPDK provides infrastructure to perform logging during runtime. This is very
+useful for enabling debug output without recompilation. To enable or disable
+logging of a particular topic, the ``--log-level`` parameter can be provided
+to EAL, which will change the log level. DPDK code can register topics,
+which allows the user to adjust the log verbosity for that specific topic.
+
+In general, the naming scheme is as follows: ``type.section.name``
+
+ * Type is the type of component, where ``lib``, ``pmd``, ``bus`` and ``user``
+   are the common options.
+ * Section refers to a specific area, for example a poll-mode-driver for an
+   ethernet device would use ``pmd.net``, while an eventdev PMD uses
+   ``pmd.event``.
+ * The name identifies the individual item that the log applies to.
+   The name section must align with
+   the directory that the PMD code resides. See examples below for clarity.
+
+Examples:
+
+ * The virtio network PMD in ``drivers/net/virtio`` uses ``pmd.net.virtio``
+ * The eventdev software poll mode driver in ``drivers/event/sw`` uses ``pmd.event.sw``
+ * The octeontx mempool driver in ``drivers/mempool/octeontx`` uses ``pmd.mempool.octeontx``
+ * The DPDK hash library in ``lib/librte_hash`` uses ``lib.hash``
+
+Specializations
+~~~~~~~~~~~~~~~
+
+In addition to the above logging topic, any PMD or library can further split
+logging output by using "specializations". A specialization could be the
+difference between initialization code, and logs of events that occur at runtime.
+
+An example could be the initialization log messages getting one
+specialization, while another specialization handles mailbox command logging.
+Each PMD, library or component can create as many specializations as required.
+
+A specialization looks like this:
+
+ * Initialization output: ``type.section.name.init``
+ * PF/VF mailbox output: ``type.section.name.mbox``
+
+A real world example is the i40e poll mode driver which exposes two
+specializations, one for initialization ``pmd.i40e.init`` and the other for
+the remaining driver logs ``pmd.i40e.driver``.
+
+Note that specializations have no formatting rules, but please follow
+a precedent if one exists. In order to see all current log topics and
+specializations, run the ``app/test`` binary, and use the ``dump_log_types``
 
 Python Code
 -----------
 
 Python Code
 -----------
@@ -800,7 +850,7 @@ build
 
 
 cflags
 
 
 cflags
-       **Default Value = []**.
+       **Default Value = [<-march/-mcpu flags>]**.
        Used to specify any additional cflags that need to be passed to compile
        the sources in the library.
 
        Used to specify any additional cflags that need to be passed to compile
        the sources in the library.
 
@@ -846,6 +896,15 @@ headers
        source files, these should be specified using the meson ``files()``
        function.
 
        source files, these should be specified using the meson ``files()``
        function.
 
+includes:
+       **Default Value = []**.
+       Used to indicate any additional header file paths which should be
+       added to the header search path for other libs depending on this
+       library. EAL uses this so that other libraries building against it
+       can find the headers in subdirectories of the main EAL directory. The
+       base directory of each library is always given in the include path,
+       it does not need to be specified here.
+
 name
        **Default Value = library name derived from the directory name**.
        If a library's .so or .a file differs from that given in the directory
 name
        **Default Value = library name derived from the directory name**.
        If a library's .so or .a file differs from that given in the directory