[dpdk-dev] [PATCH v3 16/29] net/bnxt: use eal I/O device memory read/write API
Ferruh Yigit
ferruh.yigit at intel.com
Thu Jan 12 20:10:24 CET 2017
On 1/12/2017 9:17 AM, Jerin Jacob wrote:
<...>
> #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 | \
Just asking, can this be rte_write32_relaxed() since there is explicit
memory barrier defined for B_CP_DIS_DB but not for here?
> + 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))
>
<...>
> @@ -80,11 +82,12 @@ static int bnxt_hwrm_send_message_locked(struct bnxt *bp, void *msg,
> for (; i < bp->max_req_len; i += 4) {
> bar = (uint8_t *)bp->bar0 + i;
> *(volatile uint32_t *)bar = 0;
Should this line be removed?
> + 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++) {
<...>
More information about the dev
mailing list