From patchwork Mon Jun 12 12:03:19 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matej Vido X-Patchwork-Id: 25271 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 5281C2BB9; Mon, 12 Jun 2017 14:03:45 +0200 (CEST) Received: from office2.cesnet.cz (office2.cesnet.cz [195.113.144.244]) by dpdk.org (Postfix) with ESMTP id 40EAC968 for ; Mon, 12 Jun 2017 14:03:44 +0200 (CEST) Received: from pcvido.fit.vutbr.cz (unknown [IPv6:2001:67c:1220:80c:f8f4:f055:211e:fe80]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) by office2.cesnet.cz (Postfix) with ESMTPSA id 0C38C200B1; Mon, 12 Jun 2017 14:03:44 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cesnet.cz; s=office2; t=1497269024; bh=/2Kf3SzliRx1iUFWzXi9vJ9C9MUqFgKftUZ1AyROS98=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=AaqV1JgxMD0FzknzUW8c9zRY6rU0Zaulz8wkIFCsLN+RESP8tN9/7fCQTFozPBLio FBYYoKIu3RyaLOkREwzaq1Jdh1eRZoTR0/rYNpWmjj+Io3W1/8rs7rD1kHm2Qc5k0I TnTdYQ5hsonjz9kQuWhMc4Pu8fhgS6/l5bobkGXo= From: Matej Vido To: dev@dpdk.org Cc: ferruh.yigit@intel.com Date: Mon, 12 Jun 2017 14:03:19 +0200 Message-Id: <1497269002-19760-2-git-send-email-vido@cesnet.cz> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1497269002-19760-1-git-send-email-vido@cesnet.cz> References: <1495821956-5050-1-git-send-email-vido@cesnet.cz> <1497269002-19760-1-git-send-email-vido@cesnet.cz> Subject: [dpdk-dev] [PATCH v2 2/5] net/szedata2: refactor ibuf and obuf read and write X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Remove unused read and write functions. Use rte_read*, rte_write* functions to access ibuf and obuf address space. Signed-off-by: Matej Vido --- drivers/net/szedata2/rte_eth_szedata2.c | 4 +- drivers/net/szedata2/rte_eth_szedata2.h | 184 +++++++++++--------------------- 2 files changed, 64 insertions(+), 124 deletions(-) diff --git a/drivers/net/szedata2/rte_eth_szedata2.c b/drivers/net/szedata2/rte_eth_szedata2.c index 5be08da..f8ec331 100644 --- a/drivers/net/szedata2/rte_eth_szedata2.c +++ b/drivers/net/szedata2/rte_eth_szedata2.c @@ -1149,9 +1149,9 @@ struct pmd_internals { struct rte_eth_link *dev_link = &dev->data->dev_link; struct pmd_internals *internals = (struct pmd_internals *) dev->data->dev_private; - volatile struct szedata2_ibuf *ibuf = SZEDATA2_PCI_RESOURCE_PTR( + const volatile struct szedata2_ibuf *ibuf = SZEDATA2_PCI_RESOURCE_PTR( internals->pci_rsc, SZEDATA2_IBUF_BASE_OFF, - volatile struct szedata2_ibuf *); + const volatile struct szedata2_ibuf *); switch (get_link_speed(ibuf)) { case SZEDATA2_LINK_SPEED_10G: diff --git a/drivers/net/szedata2/rte_eth_szedata2.h b/drivers/net/szedata2/rte_eth_szedata2.h index 4f56fcf..0b635d0 100644 --- a/drivers/net/szedata2/rte_eth_szedata2.h +++ b/drivers/net/szedata2/rte_eth_szedata2.h @@ -37,6 +37,7 @@ #include #include +#include /* PCI Vendor ID */ #define PCI_VENDOR_ID_NETCOPE 0x1b26 @@ -113,82 +114,16 @@ struct szedata { int numa_node; }; -/* - * @return Byte from PCI resource at offset "offset". - */ -static inline uint8_t -pci_resource_read8(struct rte_mem_resource *rsc, uint32_t offset) -{ - return *((uint8_t *)((uint8_t *)rsc->addr + offset)); -} - -/* - * @return Two bytes from PCI resource starting at offset "offset". - */ -static inline uint16_t -pci_resource_read16(struct rte_mem_resource *rsc, uint32_t offset) -{ - return rte_le_to_cpu_16(*((uint16_t *)((uint8_t *)rsc->addr + - offset))); -} - -/* - * @return Four bytes from PCI resource starting at offset "offset". - */ static inline uint32_t -pci_resource_read32(struct rte_mem_resource *rsc, uint32_t offset) -{ - return rte_le_to_cpu_32(*((uint32_t *)((uint8_t *)rsc->addr + - offset))); -} - -/* - * @return Eight bytes from PCI resource starting at offset "offset". - */ -static inline uint64_t -pci_resource_read64(struct rte_mem_resource *rsc, uint32_t offset) -{ - return rte_le_to_cpu_64(*((uint64_t *)((uint8_t *)rsc->addr + - offset))); -} - -/* - * Write one byte to PCI resource address space at offset "offset". - */ -static inline void -pci_resource_write8(struct rte_mem_resource *rsc, uint32_t offset, uint8_t val) +szedata2_read32(const volatile void *addr) { - *((uint8_t *)((uint8_t *)rsc->addr + offset)) = val; + return rte_le_to_cpu_32(rte_read32(addr)); } -/* - * Write two bytes to PCI resource address space at offset "offset". - */ static inline void -pci_resource_write16(struct rte_mem_resource *rsc, uint32_t offset, - uint16_t val) +szedata2_write32(uint32_t value, volatile void *addr) { - *((uint16_t *)((uint8_t *)rsc->addr + offset)) = rte_cpu_to_le_16(val); -} - -/* - * Write four bytes to PCI resource address space at offset "offset". - */ -static inline void -pci_resource_write32(struct rte_mem_resource *rsc, uint32_t offset, - uint32_t val) -{ - *((uint32_t *)((uint8_t *)rsc->addr + offset)) = rte_cpu_to_le_32(val); -} - -/* - * Write eight bytes to PCI resource address space at offset "offset". - */ -static inline void -pci_resource_write64(struct rte_mem_resource *rsc, uint32_t offset, - uint64_t val) -{ - *((uint64_t *)((uint8_t *)rsc->addr + offset)) = rte_cpu_to_le_64(val); + rte_write32(rte_cpu_to_le_32(value), addr); } #define SZEDATA2_PCI_RESOURCE_PTR(rsc, offset, type) \ @@ -209,57 +144,64 @@ enum szedata2_mac_check_mode { }; /* + * Maximum possible number of MAC addresses (limited by IBUF status + * register value MAC_COUNT which has 5 bits). + */ +#define SZEDATA2_IBUF_MAX_MAC_COUNT 32 + +/* * Structure describes IBUF address space */ struct szedata2_ibuf { /** Total Received Frames Counter low part */ - uint32_t trfcl; + uint32_t trfcl; /**< 0x00 */ /** Correct Frames Counter low part */ - uint32_t cfcl; + uint32_t cfcl; /**< 0x04 */ /** Discarded Frames Counter low part */ - uint32_t dfcl; + uint32_t dfcl; /**< 0x08 */ /** Counter of frames discarded due to buffer overflow low part */ - uint32_t bodfcl; + uint32_t bodfcl; /**< 0x0C */ /** Total Received Frames Counter high part */ - uint32_t trfch; + uint32_t trfch; /**< 0x10 */ /** Correct Frames Counter high part */ - uint32_t cfch; + uint32_t cfch; /**< 0x14 */ /** Discarded Frames Counter high part */ - uint32_t dfch; + uint32_t dfch; /**< 0x18 */ /** Counter of frames discarded due to buffer overflow high part */ - uint32_t bodfch; + uint32_t bodfch; /**< 0x1C */ /** IBUF enable register */ - uint32_t ibuf_en; + uint32_t ibuf_en; /**< 0x20 */ /** Error mask register */ - uint32_t err_mask; + uint32_t err_mask; /**< 0x24 */ /** IBUF status register */ - uint32_t ibuf_st; + uint32_t ibuf_st; /**< 0x28 */ /** IBUF command register */ - uint32_t ibuf_cmd; + uint32_t ibuf_cmd; /**< 0x2C */ /** Minimum frame length allowed */ - uint32_t mfla; + uint32_t mfla; /**< 0x30 */ /** Frame MTU */ - uint32_t mtu; + uint32_t mtu; /**< 0x34 */ /** MAC address check mode */ - uint32_t mac_chmode; + uint32_t mac_chmode; /**< 0x38 */ /** Octets Received OK Counter low part */ - uint32_t orocl; + uint32_t orocl; /**< 0x3C */ /** Octets Received OK Counter high part */ - uint32_t oroch; + uint32_t oroch; /**< 0x40 */ + /** reserved */ + uint8_t reserved[60]; /**< 0x4C */ + /** IBUF memory for MAC addresses */ + uint32_t mac_mem[2 * SZEDATA2_IBUF_MAX_MAC_COUNT]; /**< 0x80 */ } __rte_packed; -/* Offset of IBUF memory for MAC addresses */ -#define SZEDATA2_IBUF_MAC_MEM_OFF 0x80 - /* * @return * true if IBUF is enabled * false if IBUF is disabled */ static inline bool -ibuf_is_enabled(volatile struct szedata2_ibuf *ibuf) +ibuf_is_enabled(const volatile struct szedata2_ibuf *ibuf) { - return ((rte_le_to_cpu_32(ibuf->ibuf_en) & 0x1) != 0) ? true : false; + return ((szedata2_read32(&ibuf->ibuf_en) & 0x1) != 0) ? true : false; } /* @@ -268,8 +210,7 @@ struct szedata2_ibuf { static inline void ibuf_enable(volatile struct szedata2_ibuf *ibuf) { - ibuf->ibuf_en = - rte_cpu_to_le_32(rte_le_to_cpu_32(ibuf->ibuf_en) | 0x1); + szedata2_write32(szedata2_read32(&ibuf->ibuf_en) | 0x1, &ibuf->ibuf_en); } /* @@ -278,8 +219,8 @@ struct szedata2_ibuf { static inline void ibuf_disable(volatile struct szedata2_ibuf *ibuf) { - ibuf->ibuf_en = - rte_cpu_to_le_32(rte_le_to_cpu_32(ibuf->ibuf_en) & ~0x1); + szedata2_write32(szedata2_read32(&ibuf->ibuf_en) & ~0x1, + &ibuf->ibuf_en); } /* @@ -288,9 +229,9 @@ struct szedata2_ibuf { * false if ibuf link is down */ static inline bool -ibuf_is_link_up(volatile struct szedata2_ibuf *ibuf) +ibuf_is_link_up(const volatile struct szedata2_ibuf *ibuf) { - return ((rte_le_to_cpu_32(ibuf->ibuf_st) & 0x80) != 0) ? true : false; + return ((szedata2_read32(&ibuf->ibuf_st) & 0x80) != 0) ? true : false; } /* @@ -298,9 +239,9 @@ struct szedata2_ibuf { * MAC address check mode */ static inline enum szedata2_mac_check_mode -ibuf_mac_mode_read(volatile struct szedata2_ibuf *ibuf) +ibuf_mac_mode_read(const volatile struct szedata2_ibuf *ibuf) { - switch (rte_le_to_cpu_32(ibuf->mac_chmode) & 0x3) { + switch (szedata2_read32(&ibuf->mac_chmode) & 0x3) { case 0x0: return SZEDATA2_MAC_CHMODE_PROMISC; case 0x1: @@ -321,8 +262,8 @@ struct szedata2_ibuf { ibuf_mac_mode_write(volatile struct szedata2_ibuf *ibuf, enum szedata2_mac_check_mode mode) { - ibuf->mac_chmode = rte_cpu_to_le_32( - (rte_le_to_cpu_32(ibuf->mac_chmode) & ~0x3) | mode); + szedata2_write32((szedata2_read32(&ibuf->mac_chmode) & ~0x3) | mode, + &ibuf->mac_chmode); } /* @@ -330,29 +271,29 @@ struct szedata2_ibuf { */ struct szedata2_obuf { /** Total Sent Frames Counter low part */ - uint32_t tsfcl; + uint32_t tsfcl; /**< 0x00 */ /** Octets Sent Counter low part */ - uint32_t oscl; + uint32_t oscl; /**< 0x04 */ /** Total Discarded Frames Counter low part */ - uint32_t tdfcl; + uint32_t tdfcl; /**< 0x08 */ /** reserved */ - uint32_t reserved1; + uint32_t reserved1; /**< 0x0C */ /** Total Sent Frames Counter high part */ - uint32_t tsfch; + uint32_t tsfch; /**< 0x10 */ /** Octets Sent Counter high part */ - uint32_t osch; + uint32_t osch; /**< 0x14 */ /** Total Discarded Frames Counter high part */ - uint32_t tdfch; + uint32_t tdfch; /**< 0x18 */ /** reserved */ - uint32_t reserved2; + uint32_t reserved2; /**< 0x1C */ /** OBUF enable register */ - uint32_t obuf_en; + uint32_t obuf_en; /**< 0x20 */ /** reserved */ - uint64_t reserved3; + uint64_t reserved3; /**< 0x24 */ /** OBUF control register */ - uint32_t ctrl; + uint32_t ctrl; /**< 0x2C */ /** OBUF status register */ - uint32_t obuf_st; + uint32_t obuf_st; /**< 0x30 */ } __rte_packed; /* @@ -361,9 +302,9 @@ struct szedata2_obuf { * false if OBUF is disabled */ static inline bool -obuf_is_enabled(volatile struct szedata2_obuf *obuf) +obuf_is_enabled(const volatile struct szedata2_obuf *obuf) { - return ((rte_le_to_cpu_32(obuf->obuf_en) & 0x1) != 0) ? true : false; + return ((szedata2_read32(&obuf->obuf_en) & 0x1) != 0) ? true : false; } /* @@ -372,8 +313,7 @@ struct szedata2_obuf { static inline void obuf_enable(volatile struct szedata2_obuf *obuf) { - obuf->obuf_en = - rte_cpu_to_le_32(rte_le_to_cpu_32(obuf->obuf_en) | 0x1); + szedata2_write32(szedata2_read32(&obuf->obuf_en) | 0x1, &obuf->obuf_en); } /* @@ -382,8 +322,8 @@ struct szedata2_obuf { static inline void obuf_disable(volatile struct szedata2_obuf *obuf) { - obuf->obuf_en = - rte_cpu_to_le_32(rte_le_to_cpu_32(obuf->obuf_en) & ~0x1); + szedata2_write32(szedata2_read32(&obuf->obuf_en) & ~0x1, + &obuf->obuf_en); } /* @@ -393,9 +333,9 @@ struct szedata2_obuf { * @return Link speed constant. */ static inline enum szedata2_link_speed -get_link_speed(volatile struct szedata2_ibuf *ibuf) +get_link_speed(const volatile struct szedata2_ibuf *ibuf) { - uint32_t speed = (rte_le_to_cpu_32(ibuf->ibuf_st) & 0x70) >> 4; + uint32_t speed = (szedata2_read32(&ibuf->ibuf_st) & 0x70) >> 4; switch (speed) { case 0x03: return SZEDATA2_LINK_SPEED_10G;