net/bnxt: use I/O device memory read/write API
authorSantosh Shukla <santosh.shukla@caviumnetworks.com>
Wed, 18 Jan 2017 01:21:29 +0000 (06:51 +0530)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Wed, 18 Jan 2017 16:18:27 +0000 (17:18 +0100)
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.

CC: Stephen Hurd <stephen.hurd@broadcom.com>
CC: Ajit Khaparde <ajit.khaparde@broadcom.com>
Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
drivers/net/bnxt/bnxt_cpr.h
drivers/net/bnxt/bnxt_hwrm.c
drivers/net/bnxt/bnxt_txr.h

index f9f2adb..83e5376 100644 (file)
@@ -34,6 +34,8 @@
 #ifndef _BNXT_CPR_H_
 #define _BNXT_CPR_H_
 
+#include <rte_io.h>
+
 #define CMP_VALID(cmp, raw_cons, ring)                                 \
        (!!(((struct cmpl_base *)(cmp))->info3_v & CMPL_BASE_V) ==      \
         !((raw_cons) & ((ring)->ring_size)))
 #define DB_CP_FLAGS            (DB_KEY_CP | DB_IDX_VALID | DB_IRQ_DIS)
 
 #define B_CP_DB_REARM(cpr, raw_cons)                                   \
-               (*(uint32_t *)((cpr)->cp_doorbell) = (DB_CP_REARM_FLAGS | \
-                               RING_CMP(cpr->cp_ring_struct, raw_cons)))
+       rte_write32((DB_CP_REARM_FLAGS |                                \
+                   RING_CMP(((cpr)->cp_ring_struct), raw_cons)),       \
+                   ((cpr)->cp_doorbell))
 
 #define B_CP_DIS_DB(cpr, raw_cons)                                     \
-               rte_smp_wmb();                                          \
-               (*(uint32_t *)((cpr)->cp_doorbell) = (DB_CP_FLAGS |     \
-                               RING_CMP(cpr->cp_ring_struct, raw_cons)))
+       rte_write32((DB_CP_FLAGS |                                      \
+                   RING_CMP(((cpr)->cp_ring_struct), raw_cons)),       \
+                   ((cpr)->cp_doorbell))
 
 struct bnxt_ring;
 struct bnxt_cp_ring_info {
index 07e7124..3849d1a 100644 (file)
@@ -50,6 +50,8 @@
 #include "bnxt_vnic.h"
 #include "hsi_struct_def_dpdk.h"
 
+#include <rte_io.h>
+
 #define HWRM_CMD_TIMEOUT               2000
 
 /*
@@ -72,19 +74,19 @@ static int bnxt_hwrm_send_message_locked(struct bnxt *bp, void *msg,
        /* Write request msg to hwrm channel */
        for (i = 0; i < msg_len; i += 4) {
                bar = (uint8_t *)bp->bar0 + i;
-               *(volatile uint32_t *)bar = *data;
+               rte_write32(*data, bar);
                data++;
        }
 
        /* Zero the rest of the request space */
        for (; i < bp->max_req_len; i += 4) {
                bar = (uint8_t *)bp->bar0 + i;
-               *(volatile uint32_t *)bar = 0;
+               rte_write32(0, bar);
        }
 
        /* Ring channel doorbell */
        bar = (uint8_t *)bp->bar0 + 0x100;
-       *(volatile uint32_t *)bar = 1;
+       rte_write32(1, bar);
 
        /* Poll for the valid bit */
        for (i = 0; i < HWRM_CMD_TIMEOUT; i++) {
index 4c16101..5b09711 100644 (file)
 #ifndef _BNXT_TXR_H_
 #define _BNXT_TXR_H_
 
+#include <rte_io.h>
+
 #define MAX_TX_RINGS   16
 #define BNXT_TX_PUSH_THRESH 92
 
-#define B_TX_DB(db, prod)                                              \
-               rte_smp_wmb();                                          \
-               (*(uint32_t *)db = (DB_KEY_TX | prod))
+#define B_TX_DB(db, prod)      rte_write32((DB_KEY_TX | (prod)), db)
 
 struct bnxt_tx_ring_info {
        uint16_t                tx_prod;