[dpdk-dev] [PATCH v2 1/2] virtio: one way barrier for split vring used idx
Stephen Hemminger
stephen at networkplumber.org
Thu Apr 2 17:47:56 CEST 2020
On Thu, 2 Apr 2020 10:57:52 +0800
Joyce Kong <joyce.kong at arm.com> wrote:
> - (vq)->vq_used_cons_idx))
> +static inline uint16_t
> +virtqueue_nused(struct virtqueue *vq)
vq is unmodified and should be const
> +{
> + uint16_t idx;
> + if (vq->hw->weak_barriers) {
Put blank line between declaration and if statement
> +/* x86 prefers to using rte_smp_rmb over __atomic_load_n as it reports
> + * a slightly better perf, which comes from the saved branch by the compiler.
> + * The if and else branches are identical with the smp and cio barriers both
> + * defined as compiler barriers on x86.
> + */
Do not put comments on left margin (except in function prolog).
> +#ifdef RTE_ARCH_X86_64
> + idx = vq->vq_split.ring.used->idx;
> + rte_smp_rmb();
> +#else
> + idx = __atomic_load_n(&(vq)->vq_split.ring.used->idx,
> + __ATOMIC_ACQUIRE);
> +#endif
> + } else {
> + idx = vq->vq_split.ring.used->idx;
> + rte_cio_rmb();
> + }
> + return (idx - vq->vq_used_cons_idx);
Parenthesis around arguments to return are unnecessary.
BSD code likes it, Linux style does not.
> +}
This kind of arch specific code is hard to maintain.
Does it really make that much difference.
More information about the dev
mailing list