All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matej Vido <vido@cesnet.cz>
To: dev@dpdk.org
Cc: ferruh.yigit@intel.com
Subject: [PATCH v2 2/5] net/szedata2: refactor ibuf and obuf read and write
Date: Mon, 12 Jun 2017 14:03:19 +0200	[thread overview]
Message-ID: <1497269002-19760-2-git-send-email-vido@cesnet.cz> (raw)
In-Reply-To: <1497269002-19760-1-git-send-email-vido@cesnet.cz>

Remove unused read and write functions.
Use rte_read*, rte_write* functions to access ibuf and obuf
address space.

Signed-off-by: Matej Vido <vido@cesnet.cz>
---
 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 <stdbool.h>
 
 #include <rte_byteorder.h>
+#include <rte_io.h>
 
 /* 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;
-- 
1.8.4

  reply	other threads:[~2017-06-12 12:03 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-26 18:05 [PATCH 1/5] net/szedata2: refactor ibuf and obuf names Matej Vido
2017-05-26 18:05 ` [PATCH 2/5] net/szedata2: refactor ibuf and obuf read and write Matej Vido
2017-05-26 18:05 ` [PATCH 3/5] net/szedata2: refactor ibuf and obuf address definition Matej Vido
2017-05-29 12:41   ` Ferruh Yigit
2017-05-31  8:33     ` Matej Vido
2017-05-31  9:12       ` Ferruh Yigit
2017-05-26 18:05 ` [PATCH 4/5] net/szedata2: move ibuf and obuf to specific header Matej Vido
2017-05-26 18:05 ` [PATCH 5/5] net/szedata2: add more supported firmwares Matej Vido
2017-05-29 12:42   ` Ferruh Yigit
2017-05-31  8:34     ` Matej Vido
2017-05-31  9:11       ` Ferruh Yigit
2017-05-29 12:40 ` [PATCH 1/5] net/szedata2: refactor ibuf and obuf names Ferruh Yigit
2017-05-31  8:32   ` Matej Vido
2017-06-12 12:03 ` [PATCH v2 " Matej Vido
2017-06-12 12:03   ` Matej Vido [this message]
2017-06-12 12:03   ` [PATCH v2 3/5] net/szedata2: refactor ibuf and obuf address definition Matej Vido
2017-06-12 12:03   ` [PATCH v2 4/5] net/szedata2: move ibuf and obuf to specific header Matej Vido
2017-06-12 12:03   ` [PATCH v2 5/5] net/szedata2: add more supported firmwares Matej Vido
2017-06-12 14:35   ` [PATCH v2 1/5] net/szedata2: refactor ibuf and obuf names Ferruh Yigit

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1497269002-19760-2-git-send-email-vido@cesnet.cz \
    --to=vido@cesnet.cz \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.