No need to copy values in intermediate variables.
Use the right trace point emitters.
Update the pcie struct to avoid aliasing warning.

Signed-off-by: David Marchand <david.march...@redhat.com>
---
Changes since v3:
- added anonymous union around pcie struct (which triggered an abidiff
  warning that needs waiving) and kept original call to
  rte_trace_point_emit_u64,

Changes since v2:
- split this change into multiple changes,
  only kept trivial parts in this patch,

---
 devtools/libabigail.abignore  |  5 +++++
 lib/dmadev/rte_dmadev.h       | 29 ++++++++++++++++-------------
 lib/dmadev/rte_dmadev_trace.h | 20 ++++++--------------
 3 files changed, 27 insertions(+), 27 deletions(-)

diff --git a/devtools/libabigail.abignore b/devtools/libabigail.abignore
index ce501632b3..88aa1ec981 100644
--- a/devtools/libabigail.abignore
+++ b/devtools/libabigail.abignore
@@ -36,3 +36,8 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ; Temporary exceptions till next major ABI version ;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+[suppress_type]
+        name = rte_dma_port_param
+        type_kind = struct
+        has_size_change = no
+        has_data_member = {pcie}
diff --git a/lib/dmadev/rte_dmadev.h b/lib/dmadev/rte_dmadev.h
index 2f9304a9db..26f9d4b095 100644
--- a/lib/dmadev/rte_dmadev.h
+++ b/lib/dmadev/rte_dmadev.h
@@ -523,19 +523,22 @@ struct rte_dma_port_param {
                 * and capabilities.
                 */
                __extension__
-               struct {
-                       uint64_t coreid : 4; /**< PCIe core id used. */
-                       uint64_t pfid : 8; /**< PF id used. */
-                       uint64_t vfen : 1; /**< VF enable bit. */
-                       uint64_t vfid : 16; /**< VF id used. */
-                       /** The pasid filed in TLP packet. */
-                       uint64_t pasid : 20;
-                       /** The attributes filed in TLP packet. */
-                       uint64_t attr : 3;
-                       /** The processing hint filed in TLP packet. */
-                       uint64_t ph : 2;
-                       /** The steering tag filed in TLP packet. */
-                       uint64_t st : 16;
+               union {
+                       struct {
+                               uint64_t coreid : 4; /**< PCIe core id used. */
+                               uint64_t pfid : 8; /**< PF id used. */
+                               uint64_t vfen : 1; /**< VF enable bit. */
+                               uint64_t vfid : 16; /**< VF id used. */
+                               /** The pasid filed in TLP packet. */
+                               uint64_t pasid : 20;
+                               /** The attributes filed in TLP packet. */
+                               uint64_t attr : 3;
+                               /** The processing hint filed in TLP packet. */
+                               uint64_t ph : 2;
+                               /** The steering tag filed in TLP packet. */
+                               uint64_t st : 16;
+                       };
+                       uint64_t val;
                } pcie;
        };
        uint64_t reserved[2]; /**< Reserved for future fields. */
diff --git a/lib/dmadev/rte_dmadev_trace.h b/lib/dmadev/rte_dmadev_trace.h
index be089c065c..1beb938168 100644
--- a/lib/dmadev/rte_dmadev_trace.h
+++ b/lib/dmadev/rte_dmadev_trace.h
@@ -46,11 +46,10 @@ RTE_TRACE_POINT(
        const struct rte_dma_conf __dev_conf = {0};
        dev_conf = &__dev_conf;
 #endif /* _RTE_TRACE_POINT_REGISTER_H_ */
-       int enable_silent = (int)dev_conf->enable_silent;
        rte_trace_point_emit_i16(dev_id);
        rte_trace_point_emit_u16(dev_conf->nb_vchans);
        rte_trace_point_emit_u16(dev_conf->priority);
-       rte_trace_point_emit_int(enable_silent);
+       rte_trace_point_emit_u8(dev_conf->enable_silent);
        rte_trace_point_emit_int(ret);
 )
 
@@ -83,21 +82,14 @@ RTE_TRACE_POINT(
        const struct rte_dma_vchan_conf __conf = {0};
        conf = &__conf;
 #endif /* _RTE_TRACE_POINT_REGISTER_H_ */
-       int src_port_type = conf->src_port.port_type;
-       int dst_port_type = conf->dst_port.port_type;
-       int direction = conf->direction;
-       uint64_t src_pcie_cfg;
-       uint64_t dst_pcie_cfg;
        rte_trace_point_emit_i16(dev_id);
        rte_trace_point_emit_u16(vchan);
-       rte_trace_point_emit_int(direction);
+       rte_trace_point_emit_int(conf->direction);
        rte_trace_point_emit_u16(conf->nb_desc);
-       rte_trace_point_emit_int(src_port_type);
-       memcpy(&src_pcie_cfg, &conf->src_port.pcie, sizeof(uint64_t));
-       rte_trace_point_emit_u64(src_pcie_cfg);
-       memcpy(&dst_pcie_cfg, &conf->dst_port.pcie, sizeof(uint64_t));
-       rte_trace_point_emit_int(dst_port_type);
-       rte_trace_point_emit_u64(dst_pcie_cfg);
+       rte_trace_point_emit_int(conf->src_port.port_type);
+       rte_trace_point_emit_u64(conf->src_port.pcie.val);
+       rte_trace_point_emit_int(conf->dst_port.port_type);
+       rte_trace_point_emit_u64(conf->dst_port.pcie.val);
        rte_trace_point_emit_ptr(conf->auto_free.m2d.pool);
        rte_trace_point_emit_int(ret);
 )
-- 
2.48.1

Reply via email to