On Wed, Dec 14, 2016 at 07:25:57AM +0530, Jerin Jacob wrote:
> From: Santosh Shukla <santosh.shu...@caviumnetworks.com>
> 
> Replace the raw I/O device memory read/write access with eal
> abstraction for I/O device memory read/write access to fix
> portability issues across different architectures.
> 
> Signed-off-by: Santosh Shukla <santosh.shu...@caviumnetworks.com>
> Signed-off-by: Jerin Jacob <jerin.ja...@caviumnetworks.com>
> CC: Yong Wang <yongw...@vmware.com>
> ---
>  drivers/net/vmxnet3/vmxnet3_ethdev.h | 14 ++++++++++----
>  1 file changed, 10 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.h 
> b/drivers/net/vmxnet3/vmxnet3_ethdev.h
> index 7d3b11e..5b6501b 100644
> --- a/drivers/net/vmxnet3/vmxnet3_ethdev.h
> +++ b/drivers/net/vmxnet3/vmxnet3_ethdev.h
> @@ -34,6 +34,8 @@
>  #ifndef _VMXNET3_ETHDEV_H_
>  #define _VMXNET3_ETHDEV_H_
>  
> +#include <rte_io.h>
> +
>  #define VMXNET3_MAX_MAC_ADDRS 1
>  
>  /* UPT feature to negotiate */
> @@ -120,7 +122,11 @@ struct vmxnet3_hw {
>  
>  /* Config space read/writes */
>  
> -#define VMXNET3_PCI_REG(reg) (*((volatile uint32_t *)(reg)))
> +#define VMXNET3_PCI_REG(reg) ({              \
> +     uint32_t __val;                 \
> +     __val = rte_readl(reg);         \
> +     __val;                          \
> +})

Why not simply using rte_readl directly?

        #define VMXNET3_PCI_REG(reg)    rte_readl(reg)

>  
>  static inline uint32_t
>  vmxnet3_read_addr(volatile void *addr)
> @@ -128,9 +134,9 @@ vmxnet3_read_addr(volatile void *addr)
>       return VMXNET3_PCI_REG(addr);
>  }
>  
> -#define VMXNET3_PCI_REG_WRITE(reg, value) do { \
> -     VMXNET3_PCI_REG((reg)) = (value); \
> -} while(0)
> +#define VMXNET3_PCI_REG_WRITE(reg, value) ({ \
> +     rte_writel(value, reg);                 \
> +})

I think this could be done in one line.

        --yliu

Reply via email to