Inter-revision diff: patch 3

Comparing v5 (message) to v3 (message)

--- v5
+++ v3
@@ -13,11 +13,11 @@
  drivers/net/ethernet/engleder/tsnep.h         |  171 +++
  drivers/net/ethernet/engleder/tsnep_ethtool.c |  288 ++++
  drivers/net/ethernet/engleder/tsnep_hw.h      |  230 +++
- drivers/net/ethernet/engleder/tsnep_main.c    | 1255 +++++++++++++++++
+ drivers/net/ethernet/engleder/tsnep_main.c    | 1252 +++++++++++++++++
  drivers/net/ethernet/engleder/tsnep_ptp.c     |  221 +++
- drivers/net/ethernet/engleder/tsnep_tc.c      |  443 ++++++
+ drivers/net/ethernet/engleder/tsnep_tc.c      |  442 ++++++
  drivers/net/ethernet/engleder/tsnep_test.c    |  811 +++++++++++
- 11 files changed, 3459 insertions(+)
+ 11 files changed, 3455 insertions(+)
  create mode 100644 drivers/net/ethernet/engleder/Kconfig
  create mode 100644 drivers/net/ethernet/engleder/Makefile
  create mode 100644 drivers/net/ethernet/engleder/tsnep.h
@@ -104,7 +104,7 @@
 +	      tsnep_test.o
 diff --git a/drivers/net/ethernet/engleder/tsnep.h b/drivers/net/ethernet/engleder/tsnep.h
 new file mode 100644
-index 000000000000..edd6fa7dafd7
+index 000000000000..aa7d51d80ff1
 --- /dev/null
 +++ b/drivers/net/ethernet/engleder/tsnep.h
 @@ -0,0 +1,171 @@
@@ -134,7 +134,7 @@
 +#define TSNEP_QUEUES 1
 +
 +struct tsnep_gcl {
-+	void __iomem *addr;
++	void *addr;
 +
 +	u64 base_time;
 +	u64 cycle_time;
@@ -164,7 +164,7 @@
 +
 +struct tsnep_tx {
 +	struct tsnep_adapter *adapter;
-+	void __iomem *addr;
++	void *addr;
 +
 +	void *page[TSNEP_RING_PAGE_COUNT];
 +	dma_addr_t page_dma[TSNEP_RING_PAGE_COUNT];
@@ -196,7 +196,7 @@
 +
 +struct tsnep_rx {
 +	struct tsnep_adapter *adapter;
-+	void __iomem *addr;
++	void *addr;
 +
 +	void *page[TSNEP_RING_PAGE_COUNT];
 +	dma_addr_t page_dma[TSNEP_RING_PAGE_COUNT];
@@ -234,7 +234,7 @@
 +
 +	struct platform_device *pdev;
 +	struct device *dmadev;
-+	void __iomem *addr;
++	void *addr;
 +	unsigned long size;
 +	int irq;
 +
@@ -575,7 +575,7 @@
 +};
 diff --git a/drivers/net/ethernet/engleder/tsnep_hw.h b/drivers/net/ethernet/engleder/tsnep_hw.h
 new file mode 100644
-index 000000000000..71cc8577d640
+index 000000000000..1a9327a23510
 --- /dev/null
 +++ b/drivers/net/ethernet/engleder/tsnep_hw.h
 @@ -0,0 +1,230 @@
@@ -756,11 +756,11 @@
 +
 +/* tsnep TX descriptor */
 +struct tsnep_tx_desc {
-+	__le32 properties;
-+	__le32 more_properties;
-+	__le32 reserved[2];
-+	__le64 next;
-+	__le64 tx;
++	u32 properties;
++	u32 more_properties;
++	u32 reserved[2];
++	u64 next;
++	u64 tx;
 +};
 +
 +#define TSNEP_TX_DESC_OWNER_MASK 0xE0000000
@@ -770,11 +770,11 @@
 +
 +/* tsnep TX descriptor writeback */
 +struct tsnep_tx_desc_wb {
-+	__le32 properties;
-+	__le32 reserved1[3];
-+	__le64 timestamp;
-+	__le32 dma_delay;
-+	__le32 reserved2;
++	u32 properties;
++	u32 reserved1[3];
++	u64 timestamp;
++	u32 dma_delay;
++	u32 reserved2;
 +};
 +
 +#define TSNEP_TX_DESC_UNDERRUN_ERROR_FLAG 0x00010000
@@ -786,24 +786,24 @@
 +
 +/* tsnep RX descriptor */
 +struct tsnep_rx_desc {
-+	__le32 properties;
-+	__le32 reserved[3];
-+	__le64 next;
-+	__le64 rx;
++	u32 properties;
++	u32 reserved[3];
++	u64 next;
++	u64 rx;
 +};
 +
 +#define TSNEP_RX_DESC_BUFFER_SIZE_MASK 0x00003FFC
 +
 +/* tsnep RX descriptor writeback */
 +struct tsnep_rx_desc_wb {
-+	__le32 properties;
-+	__le32 reserved[7];
++	u32 properties;
++	u32 reserved[7];
 +};
 +
 +/* tsnep RX inline meta */
 +struct tsnep_rx_inline {
-+	__le64 reserved;
-+	__le64 timestamp;
++	u64 reserved;
++	u64 timestamp;
 +};
 +
 +#define TSNEP_RX_INLINE_METADATA_SIZE (sizeof(struct tsnep_rx_inline))
@@ -811,10 +811,10 @@
 +#endif /* _TSNEP_HW_H */
 diff --git a/drivers/net/ethernet/engleder/tsnep_main.c b/drivers/net/ethernet/engleder/tsnep_main.c
 new file mode 100644
-index 000000000000..86d488821a65
+index 000000000000..27e5e1055027
 --- /dev/null
 +++ b/drivers/net/ethernet/engleder/tsnep_main.c
-@@ -0,0 +1,1255 @@
+@@ -0,0 +1,1252 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/* Copyright (C) 2021 Gerhard Engleder <gerhard@engleder-embedded.com> */
 +
@@ -1048,7 +1048,7 @@
 +	for (i = 0; i < TSNEP_RING_SIZE; i++) {
 +		entry = &tx->entry[i];
 +		next_entry = &tx->entry[(i + 1) % TSNEP_RING_SIZE];
-+		entry->desc->next = __cpu_to_le64(next_entry->desc_dma);
++		entry->desc->next = next_entry->desc_dma;
 +	}
 +
 +	return 0;
@@ -1105,12 +1105,11 @@
 +		TSNEP_DESC_OWNER_COUNTER_MASK;
 +	if (entry->owner_user_flag)
 +		entry->properties |= TSNEP_TX_DESC_OWNER_USER_FLAG;
-+	entry->desc->more_properties =
-+		__cpu_to_le32(entry->len & TSNEP_DESC_LENGTH_MASK);
++	entry->desc->more_properties = entry->len & TSNEP_DESC_LENGTH_MASK;
 +
 +	dma_wmb();
 +
-+	entry->desc->properties = __cpu_to_le32(entry->properties);
++	entry->desc->properties = entry->properties;
 +}
 +
 +static int tsnep_tx_desc_available(struct tsnep_tx *tx)
@@ -1148,7 +1147,7 @@
 +		dma_unmap_len_set(entry, len, len);
 +		dma_unmap_addr_set(entry, dma, dma);
 +
-+		entry->desc->tx = __cpu_to_le64(dma);
++		entry->desc->tx = dma;
 +	}
 +
 +	return 0;
@@ -1265,7 +1264,7 @@
 +			break;
 +
 +		entry = &tx->entry[tx->read];
-+		if ((__le32_to_cpu(entry->desc_wb->properties) &
++		if ((entry->desc_wb->properties &
 +		     TSNEP_TX_DESC_OWNER_MASK) !=
 +		    (entry->properties & TSNEP_TX_DESC_OWNER_MASK))
 +			break;
@@ -1279,14 +1278,13 @@
 +		tsnep_tx_unmap(tx, count);
 +
 +		if ((skb_shinfo(entry->skb)->tx_flags & SKBTX_IN_PROGRESS) &&
-+		    (__le32_to_cpu(entry->desc_wb->properties) &
++		    (entry->desc_wb->properties &
 +		     TSNEP_DESC_EXTENDED_WRITEBACK_FLAG)) {
 +			struct skb_shared_hwtstamps hwtstamps;
-+			u64 timestamp =
-+				__le64_to_cpu(entry->desc_wb->timestamp);
 +
 +			memset(&hwtstamps, 0, sizeof(hwtstamps));
-+			hwtstamps.hwtstamp = ns_to_ktime(timestamp);
++			hwtstamps.hwtstamp =
++				ns_to_ktime(entry->desc_wb->timestamp);
 +
 +			skb_tstamp_tx(entry->skb, &hwtstamps);
 +		}
@@ -1313,7 +1311,7 @@
 +	return (budget != 0);
 +}
 +
-+static int tsnep_tx_open(struct tsnep_adapter *adapter, void __iomem *addr,
++static int tsnep_tx_open(struct tsnep_adapter *adapter, void *addr,
 +			 struct tsnep_tx *tx)
 +{
 +	dma_addr_t dma;
@@ -1400,7 +1398,7 @@
 +	entry->skb = skb;
 +	dma_unmap_len_set(entry, len, RX_SKB_LENGTH);
 +	dma_unmap_addr_set(entry, dma, dma);
-+	entry->desc->rx = __cpu_to_le64(dma);
++	entry->desc->rx = dma;
 +
 +	return 0;
 +}
@@ -1433,7 +1431,7 @@
 +	for (i = 0; i < TSNEP_RING_SIZE; i++) {
 +		entry = &rx->entry[i];
 +		next_entry = &rx->entry[(i + 1) % TSNEP_RING_SIZE];
-+		entry->desc->next = __cpu_to_le64(next_entry->desc_dma);
++		entry->desc->next = next_entry->desc_dma;
 +
 +		retval = tsnep_rx_alloc_and_map_skb(rx, entry);
 +		if (retval)
@@ -1468,7 +1466,7 @@
 +
 +	dma_wmb();
 +
-+	entry->desc->properties = __cpu_to_le32(entry->properties);
++	entry->desc->properties = entry->properties;
 +}
 +
 +static int tsnep_rx_poll(struct tsnep_rx *rx, struct napi_struct *napi,
@@ -1485,7 +1483,7 @@
 +
 +	while (likely(done < budget)) {
 +		entry = &rx->entry[rx->read];
-+		if ((__le32_to_cpu(entry->desc_wb->properties) &
++		if ((entry->desc_wb->properties &
 +		     TSNEP_DESC_OWNER_COUNTER_MASK) !=
 +		    (entry->properties & TSNEP_DESC_OWNER_COUNTER_MASK))
 +			break;
@@ -1503,7 +1501,7 @@
 +		if (!retval) {
 +			dma_unmap_single(dmadev, dma, len, DMA_FROM_DEVICE);
 +
-+			length = __le32_to_cpu(entry->desc_wb->properties) &
++			length = entry->desc_wb->properties &
 +				 TSNEP_DESC_LENGTH_MASK;
 +			skb_put(skb, length - ETH_FCS_LEN);
 +			if (rx->adapter->hwtstamp_config.rx_filter ==
@@ -1512,11 +1510,10 @@
 +					skb_hwtstamps(skb);
 +				struct tsnep_rx_inline *rx_inline =
 +					(struct tsnep_rx_inline *)skb->data;
-+				u64 timestamp =
-+					__le64_to_cpu(rx_inline->timestamp);
 +
 +				memset(hwtstamps, 0, sizeof(*hwtstamps));
-+				hwtstamps->hwtstamp = ns_to_ktime(timestamp);
++				hwtstamps->hwtstamp =
++					ns_to_ktime(rx_inline->timestamp);
 +			}
 +			skb_pull(skb, TSNEP_RX_INLINE_METADATA_SIZE);
 +			skb->protocol = eth_type_trans(skb,
@@ -1542,7 +1539,7 @@
 +	return done;
 +}
 +
-+static int tsnep_rx_open(struct tsnep_adapter *adapter, void __iomem *addr,
++static int tsnep_rx_open(struct tsnep_adapter *adapter, void *addr,
 +			 struct tsnep_rx *rx)
 +{
 +	dma_addr_t dma;
@@ -1613,7 +1610,7 @@
 +{
 +	struct tsnep_adapter *adapter = netdev_priv(netdev);
 +	int i;
-+	void __iomem *addr;
++	void *addr;
 +	int tx_queue_index = 0;
 +	int rx_queue_index = 0;
 +	int retval;
@@ -2299,10 +2296,10 @@
 +}
 diff --git a/drivers/net/ethernet/engleder/tsnep_tc.c b/drivers/net/ethernet/engleder/tsnep_tc.c
 new file mode 100644
-index 000000000000..c4c6e1357317
+index 000000000000..2b88c1e2eb2c
 --- /dev/null
 +++ b/drivers/net/ethernet/engleder/tsnep_tc.c
-@@ -0,0 +1,443 @@
+@@ -0,0 +1,442 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/* Copyright (C) 2021 Gerhard Engleder <gerhard@engleder-embedded.com> */
 +
@@ -2343,8 +2340,7 @@
 +static void tsnep_write_gcl_operation(struct tsnep_gcl *gcl, int index,
 +				      u32 properties, u32 interval, bool flush)
 +{
-+	void __iomem *addr = gcl->addr +
-+			     sizeof(struct tsnep_gcl_operation) * index;
++	void *addr = gcl->addr + sizeof(struct tsnep_gcl_operation) * index;
 +
 +	gcl->operation[index].properties = properties;
 +	gcl->operation[index].interval = interval;
@@ -2475,8 +2471,8 @@
 +
 +	/* optionally change to new list with additional operation in between */
 +	if (insert) {
-+		void __iomem *addr = gcl->addr +
-+				     sizeof(struct tsnep_gcl_operation) * index;
++		void *addr = gcl->addr +
++			     sizeof(struct tsnep_gcl_operation) * index;
 +
 +		gcl->operation[index].properties |= TSNEP_GCL_INSERT;
 +		iowrite32(gcl->operation[index].properties, addr);
@@ -2489,7 +2485,7 @@
 +{
 +	int i;
 +	u32 mask = TSNEP_GCL_LAST | TSNEP_GCL_MASK;
-+	void __iomem *addr;
++	void *addr;
 +
 +	/* search for insert operation and reset properties */
 +	for (i = 0; i < gcl->count; i++) {
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help