[dpdk-dev] [PATCH] i40e: Fix the endian issue for the i40e read&write registers functions

Zhe Tao zhe.tao at intel.com
Tue Jul 14 12:36:56 CEST 2015


Linux kernel uses the writel and readl related functions to perform the PCI memory access via ioremap region,
those functions will handle the big little endian properly by doing the conversion between little and big endian if necessary,
so Add this conversion in the read&write registers functions for i40e.

Signed-off-by: Zhe Tao <zhe.tao at intel.com>
---
 drivers/net/i40e/base/i40e_osdep.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/i40e/base/i40e_osdep.h b/drivers/net/i40e/base/i40e_osdep.h
index 3ce8057..d35c494 100644
--- a/drivers/net/i40e/base/i40e_osdep.h
+++ b/drivers/net/i40e/base/i40e_osdep.h
@@ -122,10 +122,10 @@ do {                                                            \
 	((volatile uint32_t *)((char *)(a)->hw_addr + (reg)))
 static inline uint32_t i40e_read_addr(volatile void *addr)
 {
-	return I40E_PCI_REG(addr);
+	return rte_cpu_to_le_32(I40E_PCI_REG(addr));
 }
 #define I40E_PCI_REG_WRITE(reg, value) \
-	do {I40E_PCI_REG((reg)) = (value);} while(0)
+	do { I40E_PCI_REG((reg)) = rte_cpu_to_le_32(value); } while (0)
 
 #define I40E_WRITE_FLUSH(a) I40E_READ_REG(a, I40E_GLGEN_STAT)
 #define I40EVF_WRITE_FLUSH(a) I40E_READ_REG(a, I40E_VFGEN_RSTAT)
-- 
1.9.3



More information about the dev mailing list