[v4,2/5] dmadev: avoid copies in tracepoints
Checks
Commit Message
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.marchand@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(-)
@@ -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}
@@ -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. */
@@ -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);
)