* [PATCH 01/12 net-next] qca_spi: Improve SPI thread creation
2023-12-14 15:09 [PATCH 00/12 net-next] qca_spi: collection of improvements Stefan Wahren
@ 2023-12-14 15:09 ` Stefan Wahren
2023-12-14 15:09 ` [PATCH 02/12 net-next] qca_spi: Improve SPI IRQ handling Stefan Wahren
` (11 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Stefan Wahren @ 2023-12-14 15:09 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni
Cc: netdev, linux-kernel, Stefan Wahren
The qca_spi driver create/stop the SPI kernel thread in case
of netdev_open/close. This isn't optimal because there is no
need for such an expensive operation.
So improve this by moving create/stop of the SPI kernel into
the init/uninit ops. The open/close ops could just
'park/unpark' the SPI kernel thread.
Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
---
drivers/net/ethernet/qualcomm/qca_spi.c | 33 ++++++++++++++-----------
1 file changed, 18 insertions(+), 15 deletions(-)
diff --git a/drivers/net/ethernet/qualcomm/qca_spi.c b/drivers/net/ethernet/qualcomm/qca_spi.c
index bec723028e96..a9f01fb3455a 100644
--- a/drivers/net/ethernet/qualcomm/qca_spi.c
+++ b/drivers/net/ethernet/qualcomm/qca_spi.c
@@ -679,25 +679,17 @@ qcaspi_netdev_open(struct net_device *dev)
qca->sync = QCASPI_SYNC_UNKNOWN;
qcafrm_fsm_init_spi(&qca->frm_handle);
- qca->spi_thread = kthread_run((void *)qcaspi_spi_thread,
- qca, "%s", dev->name);
-
- if (IS_ERR(qca->spi_thread)) {
- netdev_err(dev, "%s: unable to start kernel thread.\n",
- QCASPI_DRV_NAME);
- return PTR_ERR(qca->spi_thread);
- }
-
ret = request_irq(qca->spi_dev->irq, qcaspi_intr_handler, 0,
dev->name, qca);
if (ret) {
netdev_err(dev, "%s: unable to get IRQ %d (irqval=%d).\n",
QCASPI_DRV_NAME, qca->spi_dev->irq, ret);
- kthread_stop(qca->spi_thread);
return ret;
}
/* SPI thread takes care of TX queue */
+ kthread_unpark(qca->spi_thread);
+ wake_up_process(qca->spi_thread);
return 0;
}
@@ -707,15 +699,11 @@ qcaspi_netdev_close(struct net_device *dev)
{
struct qcaspi *qca = netdev_priv(dev);
- netif_stop_queue(dev);
+ kthread_park(qca->spi_thread);
qcaspi_write_register(qca, SPI_REG_INTR_ENABLE, 0, wr_verify);
free_irq(qca->spi_dev->irq, qca);
- kthread_stop(qca->spi_thread);
- qca->spi_thread = NULL;
- qcaspi_flush_tx_ring(qca);
-
return 0;
}
@@ -807,6 +795,7 @@ static int
qcaspi_netdev_init(struct net_device *dev)
{
struct qcaspi *qca = netdev_priv(dev);
+ struct task_struct *thread;
dev->mtu = QCAFRM_MAX_MTU;
dev->type = ARPHRD_ETHER;
@@ -830,6 +819,15 @@ qcaspi_netdev_init(struct net_device *dev)
return -ENOBUFS;
}
+ thread = kthread_create(qcaspi_spi_thread, qca, "%s", dev->name);
+ if (IS_ERR(thread)) {
+ netdev_err(dev, "%s: unable to start kernel thread.\n",
+ QCASPI_DRV_NAME);
+ return PTR_ERR(thread);
+ }
+
+ qca->spi_thread = thread;
+
return 0;
}
@@ -838,6 +836,11 @@ qcaspi_netdev_uninit(struct net_device *dev)
{
struct qcaspi *qca = netdev_priv(dev);
+ if (qca->spi_thread) {
+ kthread_stop(qca->spi_thread);
+ qca->spi_thread = NULL;
+ }
+
kfree(qca->rx_buffer);
qca->buffer_size = 0;
dev_kfree_skb(qca->rx_skb);
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 02/12 net-next] qca_spi: Improve SPI IRQ handling
2023-12-14 15:09 [PATCH 00/12 net-next] qca_spi: collection of improvements Stefan Wahren
2023-12-14 15:09 ` [PATCH 01/12 net-next] qca_spi: Improve SPI thread creation Stefan Wahren
@ 2023-12-14 15:09 ` Stefan Wahren
2023-12-17 18:14 ` Andrew Lunn
2023-12-14 15:09 ` [PATCH 03/12 net-next] qca_spi: Avoid skb_copy_expand in TX path Stefan Wahren
` (10 subsequent siblings)
12 siblings, 1 reply; 20+ messages in thread
From: Stefan Wahren @ 2023-12-14 15:09 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni
Cc: netdev, linux-kernel, Stefan Wahren
The functions qcaspi_netdev_open/close are responsible of request &
free of the SPI interrupt, which wasn't the best choice because
allocation problems are discovered not during probe. So let us split
IRQ allocation & enabling, so we can take advantage of a device
managed IRQ.
Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
---
drivers/net/ethernet/qualcomm/qca_spi.c | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
diff --git a/drivers/net/ethernet/qualcomm/qca_spi.c b/drivers/net/ethernet/qualcomm/qca_spi.c
index a9f01fb3455a..88f2468ba676 100644
--- a/drivers/net/ethernet/qualcomm/qca_spi.c
+++ b/drivers/net/ethernet/qualcomm/qca_spi.c
@@ -669,7 +669,6 @@ static int
qcaspi_netdev_open(struct net_device *dev)
{
struct qcaspi *qca = netdev_priv(dev);
- int ret = 0;
if (!qca)
return -EINVAL;
@@ -679,13 +678,7 @@ qcaspi_netdev_open(struct net_device *dev)
qca->sync = QCASPI_SYNC_UNKNOWN;
qcafrm_fsm_init_spi(&qca->frm_handle);
- ret = request_irq(qca->spi_dev->irq, qcaspi_intr_handler, 0,
- dev->name, qca);
- if (ret) {
- netdev_err(dev, "%s: unable to get IRQ %d (irqval=%d).\n",
- QCASPI_DRV_NAME, qca->spi_dev->irq, ret);
- return ret;
- }
+ enable_irq(qca->spi_dev->irq);
/* SPI thread takes care of TX queue */
kthread_unpark(qca->spi_thread);
@@ -702,7 +695,7 @@ qcaspi_netdev_close(struct net_device *dev)
kthread_park(qca->spi_thread);
qcaspi_write_register(qca, SPI_REG_INTR_ENABLE, 0, wr_verify);
- free_irq(qca->spi_dev->irq, qca);
+ disable_irq(qca->spi_dev->irq);
return 0;
}
@@ -969,6 +962,15 @@ qca_spi_probe(struct spi_device *spi)
spi_set_drvdata(spi, qcaspi_devs);
+ ret = devm_request_irq(&spi->dev, spi->irq, qcaspi_intr_handler,
+ IRQF_NO_AUTOEN, qca->net_dev->name, qca);
+ if (ret) {
+ dev_err(&spi->dev, "Unable to get IRQ %d (irqval=%d).\n",
+ spi->irq, ret);
+ free_netdev(qcaspi_devs);
+ return ret;
+ }
+
ret = of_get_ethdev_address(spi->dev.of_node, qca->net_dev);
if (ret) {
eth_hw_addr_random(qca->net_dev);
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread* Re: [PATCH 02/12 net-next] qca_spi: Improve SPI IRQ handling
2023-12-14 15:09 ` [PATCH 02/12 net-next] qca_spi: Improve SPI IRQ handling Stefan Wahren
@ 2023-12-17 18:14 ` Andrew Lunn
2023-12-17 19:17 ` Stefan Wahren
0 siblings, 1 reply; 20+ messages in thread
From: Andrew Lunn @ 2023-12-17 18:14 UTC (permalink / raw)
To: Stefan Wahren
Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
netdev, linux-kernel
On Thu, Dec 14, 2023 at 04:09:34PM +0100, Stefan Wahren wrote:
> The functions qcaspi_netdev_open/close are responsible of request &
> free of the SPI interrupt, which wasn't the best choice because
> allocation problems are discovered not during probe. So let us split
> IRQ allocation & enabling, so we can take advantage of a device
> managed IRQ.
Could you replace the kernel thread with a threaded interrupt handler?
Andrew
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: [PATCH 02/12 net-next] qca_spi: Improve SPI IRQ handling
2023-12-17 18:14 ` Andrew Lunn
@ 2023-12-17 19:17 ` Stefan Wahren
2023-12-17 22:48 ` Andrew Lunn
0 siblings, 1 reply; 20+ messages in thread
From: Stefan Wahren @ 2023-12-17 19:17 UTC (permalink / raw)
To: Andrew Lunn
Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
netdev, linux-kernel
Hi Andrew,
Am 17.12.23 um 19:14 schrieb Andrew Lunn:
> On Thu, Dec 14, 2023 at 04:09:34PM +0100, Stefan Wahren wrote:
>> The functions qcaspi_netdev_open/close are responsible of request &
>> free of the SPI interrupt, which wasn't the best choice because
>> allocation problems are discovered not during probe. So let us split
>> IRQ allocation & enabling, so we can take advantage of a device
>> managed IRQ.
> Could you replace the kernel thread with a threaded interrupt handler?
the kernel thread is responsible for receiving, transmitting and reset
handling (there is no GPIO reset in this driver) which must be
synchronized along the same SPI interface. The interrupt just signalize
a chip reset or a received packet is available.
Could you please elaborate this request more in detail:
What is the problem with the kernel thread?
Why should i use the threaded interrupt as a replacement instead of e.g.
workqueue?
Please don't get me wrong, but i need to convince my employer for such a
big rewrite.
Regards
>
> Andrew
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 02/12 net-next] qca_spi: Improve SPI IRQ handling
2023-12-17 19:17 ` Stefan Wahren
@ 2023-12-17 22:48 ` Andrew Lunn
2023-12-18 10:23 ` Stefan Wahren
0 siblings, 1 reply; 20+ messages in thread
From: Andrew Lunn @ 2023-12-17 22:48 UTC (permalink / raw)
To: Stefan Wahren
Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
netdev, linux-kernel
On Sun, Dec 17, 2023 at 08:17:56PM +0100, Stefan Wahren wrote:
> Hi Andrew,
>
> Am 17.12.23 um 19:14 schrieb Andrew Lunn:
> > On Thu, Dec 14, 2023 at 04:09:34PM +0100, Stefan Wahren wrote:
> > > The functions qcaspi_netdev_open/close are responsible of request &
> > > free of the SPI interrupt, which wasn't the best choice because
> > > allocation problems are discovered not during probe. So let us split
> > > IRQ allocation & enabling, so we can take advantage of a device
> > > managed IRQ.
> > Could you replace the kernel thread with a threaded interrupt handler?
> the kernel thread is responsible for receiving, transmitting and reset
> handling (there is no GPIO reset in this driver) which must be
> synchronized along the same SPI interface. The interrupt just signalize
> a chip reset or a received packet is available.
>
> Could you please elaborate this request more in detail:
> What is the problem with the kernel thread?
> Why should i use the threaded interrupt as a replacement instead of e.g.
> workqueue?
>
> Please don't get me wrong, but i need to convince my employer for such a
> big rewrite.
I don't know this driver, which is why i asked the question. Its just
a suggestion. Maybe it makes no sense. But there have been other SPI
based Ethernet drivers which have been simplified by using threaded
interrupts rather than a kernel thread or a work queue, since the
interrupt core does all the thread management, and in particular the
creating and destroying of the thread which drivers often get wrong.
Andrew
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 02/12 net-next] qca_spi: Improve SPI IRQ handling
2023-12-17 22:48 ` Andrew Lunn
@ 2023-12-18 10:23 ` Stefan Wahren
0 siblings, 0 replies; 20+ messages in thread
From: Stefan Wahren @ 2023-12-18 10:23 UTC (permalink / raw)
To: Andrew Lunn
Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
netdev, linux-kernel
Hi Andrew,
Am 17.12.23 um 23:48 schrieb Andrew Lunn:
> On Sun, Dec 17, 2023 at 08:17:56PM +0100, Stefan Wahren wrote:
>> Hi Andrew,
>>
>> Am 17.12.23 um 19:14 schrieb Andrew Lunn:
>>> On Thu, Dec 14, 2023 at 04:09:34PM +0100, Stefan Wahren wrote:
>>>> The functions qcaspi_netdev_open/close are responsible of request &
>>>> free of the SPI interrupt, which wasn't the best choice because
>>>> allocation problems are discovered not during probe. So let us split
>>>> IRQ allocation & enabling, so we can take advantage of a device
>>>> managed IRQ.
>>> Could you replace the kernel thread with a threaded interrupt handler?
>> the kernel thread is responsible for receiving, transmitting and reset
>> handling (there is no GPIO reset in this driver) which must be
>> synchronized along the same SPI interface. The interrupt just signalize
>> a chip reset or a received packet is available.
>>
>> Could you please elaborate this request more in detail:
>> What is the problem with the kernel thread?
>> Why should i use the threaded interrupt as a replacement instead of e.g.
>> workqueue?
>>
>> Please don't get me wrong, but i need to convince my employer for such a
>> big rewrite.
> I don't know this driver, which is why i asked the question. Its just
> a suggestion. Maybe it makes no sense. But there have been other SPI
> based Ethernet drivers which have been simplified by using threaded
> interrupts rather than a kernel thread or a work queue, since the
> interrupt core does all the thread management, and in particular the
> creating and destroying of the thread which drivers often get wrong.
thanks for the explanation. I guess you refer to enc28j60 and i had a
look at commit 995585ecdf42 ("net: enc28j60: Use threaded interrupt
instead of workqueue"). The fact that the qca_spi driver has a kernel
thread which is kind of persistent (see patch 1 of this series) and the
request to change this confused me. So your suggestion is more about the
interrupt handling and not about the kernel thread which handles the SPI
communication.
Yes the usage of threaded IRQ makes sense especially this would allow to
support level triggered interrupts. But i think this complex change
should be a separate series.
> Andrew
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH 03/12 net-next] qca_spi: Avoid skb_copy_expand in TX path
2023-12-14 15:09 [PATCH 00/12 net-next] qca_spi: collection of improvements Stefan Wahren
2023-12-14 15:09 ` [PATCH 01/12 net-next] qca_spi: Improve SPI thread creation Stefan Wahren
2023-12-14 15:09 ` [PATCH 02/12 net-next] qca_spi: Improve SPI IRQ handling Stefan Wahren
@ 2023-12-14 15:09 ` Stefan Wahren
2023-12-14 15:09 ` [PATCH 04/12 net-next] qca_7k_common: Drop unnecessary function description Stefan Wahren
` (9 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Stefan Wahren @ 2023-12-14 15:09 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni
Cc: netdev, linux-kernel, Stefan Wahren
The skb spare room needs to be expanded for SPI header, footer
and possible padding within the TX path. So announce the necessary
space in order to avoid expensive skb_copy_expand calls.
Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
---
drivers/net/ethernet/qualcomm/qca_spi.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/net/ethernet/qualcomm/qca_spi.c b/drivers/net/ethernet/qualcomm/qca_spi.c
index 88f2468ba676..f0c99ac8d73d 100644
--- a/drivers/net/ethernet/qualcomm/qca_spi.c
+++ b/drivers/net/ethernet/qualcomm/qca_spi.c
@@ -859,6 +859,8 @@ qcaspi_netdev_setup(struct net_device *dev)
qcaspi_set_ethtool_ops(dev);
dev->watchdog_timeo = QCASPI_TX_TIMEOUT;
dev->priv_flags &= ~IFF_TX_SKB_SHARING;
+ dev->needed_tailroom = ALIGN(QCAFRM_FOOTER_LEN + QCAFRM_MIN_LEN, 4);
+ dev->needed_headroom = ALIGN(QCAFRM_HEADER_LEN, 4);
dev->tx_queue_len = 100;
/* MTU range: 46 - 1500 */
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 04/12 net-next] qca_7k_common: Drop unnecessary function description
2023-12-14 15:09 [PATCH 00/12 net-next] qca_spi: collection of improvements Stefan Wahren
` (2 preceding siblings ...)
2023-12-14 15:09 ` [PATCH 03/12 net-next] qca_spi: Avoid skb_copy_expand in TX path Stefan Wahren
@ 2023-12-14 15:09 ` Stefan Wahren
2023-12-14 15:09 ` [PATCH 05/12 net-next] qca_7k_common: Drop unused len from qcafrm_handle Stefan Wahren
` (8 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Stefan Wahren @ 2023-12-14 15:09 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni
Cc: netdev, linux-kernel, Stefan Wahren
qcafrm_fsm_decode has the almost the same function description in
qca_7k_common.c. So drop the comment here.
Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
---
drivers/net/ethernet/qualcomm/qca_7k_common.h | 11 -----------
1 file changed, 11 deletions(-)
diff --git a/drivers/net/ethernet/qualcomm/qca_7k_common.h b/drivers/net/ethernet/qualcomm/qca_7k_common.h
index 928554f11e35..71bdf5d9f8d7 100644
--- a/drivers/net/ethernet/qualcomm/qca_7k_common.h
+++ b/drivers/net/ethernet/qualcomm/qca_7k_common.h
@@ -128,17 +128,6 @@ static inline void qcafrm_fsm_init_uart(struct qcafrm_handle *handle)
handle->state = handle->init;
}
-/* Gather received bytes and try to extract a full Ethernet frame
- * by following a simple state machine.
- *
- * Return: QCAFRM_GATHER No Ethernet frame fully received yet.
- * QCAFRM_NOHEAD Header expected but not found.
- * QCAFRM_INVLEN QCA7K frame length is invalid
- * QCAFRM_NOTAIL Footer expected but not found.
- * > 0 Number of byte in the fully received
- * Ethernet frame
- */
-
s32 qcafrm_fsm_decode(struct qcafrm_handle *handle, u8 *buf, u16 buf_len, u8 recv_byte);
#endif /* _QCA_FRAMING_H */
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 05/12 net-next] qca_7k_common: Drop unused len from qcafrm_handle
2023-12-14 15:09 [PATCH 00/12 net-next] qca_spi: collection of improvements Stefan Wahren
` (3 preceding siblings ...)
2023-12-14 15:09 ` [PATCH 04/12 net-next] qca_7k_common: Drop unnecessary function description Stefan Wahren
@ 2023-12-14 15:09 ` Stefan Wahren
2023-12-14 15:09 ` [PATCH 06/12 net-next] qca_spi: Add QCASPI prefix to ring defines Stefan Wahren
` (7 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Stefan Wahren @ 2023-12-14 15:09 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni
Cc: netdev, linux-kernel, Stefan Wahren
This member is never used. So drop it.
Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
---
drivers/net/ethernet/qualcomm/qca_7k_common.h | 3 ---
1 file changed, 3 deletions(-)
diff --git a/drivers/net/ethernet/qualcomm/qca_7k_common.h b/drivers/net/ethernet/qualcomm/qca_7k_common.h
index 71bdf5d9f8d7..088cca7f61db 100644
--- a/drivers/net/ethernet/qualcomm/qca_7k_common.h
+++ b/drivers/net/ethernet/qualcomm/qca_7k_common.h
@@ -107,9 +107,6 @@ struct qcafrm_handle {
/* Offset in buffer (borrowed for length too) */
u16 offset;
-
- /* Frame length as kept by this module */
- u16 len;
};
u16 qcafrm_create_header(u8 *buf, u16 len);
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 06/12 net-next] qca_spi: Add QCASPI prefix to ring defines
2023-12-14 15:09 [PATCH 00/12 net-next] qca_spi: collection of improvements Stefan Wahren
` (4 preceding siblings ...)
2023-12-14 15:09 ` [PATCH 05/12 net-next] qca_7k_common: Drop unused len from qcafrm_handle Stefan Wahren
@ 2023-12-14 15:09 ` Stefan Wahren
2023-12-14 15:09 ` [PATCH 07/12 net-next] qca_spi: Introduce QCASPI_RX_MAX_FRAMES Stefan Wahren
` (6 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Stefan Wahren @ 2023-12-14 15:09 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni
Cc: netdev, linux-kernel, Stefan Wahren
All defines in qca_spi.h except of the two ring limit defines have
a QCASPI prefix. Since the name is quite generic add the QCASPI prefix
to avoid possible name conflicts.
Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
---
drivers/net/ethernet/qualcomm/qca_debug.c | 6 +++---
drivers/net/ethernet/qualcomm/qca_spi.c | 4 ++--
drivers/net/ethernet/qualcomm/qca_spi.h | 6 +++---
3 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/drivers/net/ethernet/qualcomm/qca_debug.c b/drivers/net/ethernet/qualcomm/qca_debug.c
index 6f2fa2a42770..12d68fdaad8e 100644
--- a/drivers/net/ethernet/qualcomm/qca_debug.c
+++ b/drivers/net/ethernet/qualcomm/qca_debug.c
@@ -253,7 +253,7 @@ qcaspi_get_ringparam(struct net_device *dev, struct ethtool_ringparam *ring,
struct qcaspi *qca = netdev_priv(dev);
ring->rx_max_pending = 4;
- ring->tx_max_pending = TX_RING_MAX_LEN;
+ ring->tx_max_pending = QCASPI_TX_RING_MAX_LEN;
ring->rx_pending = 4;
ring->tx_pending = qca->txr.count;
}
@@ -274,8 +274,8 @@ qcaspi_set_ringparam(struct net_device *dev, struct ethtool_ringparam *ring,
if (netif_running(dev))
ops->ndo_stop(dev);
- qca->txr.count = max_t(u32, ring->tx_pending, TX_RING_MIN_LEN);
- qca->txr.count = min_t(u16, qca->txr.count, TX_RING_MAX_LEN);
+ qca->txr.count = max_t(u32, ring->tx_pending, QCASPI_TX_RING_MIN_LEN);
+ qca->txr.count = min_t(u16, qca->txr.count, QCASPI_TX_RING_MAX_LEN);
if (netif_running(dev))
ops->ndo_open(dev);
diff --git a/drivers/net/ethernet/qualcomm/qca_spi.c b/drivers/net/ethernet/qualcomm/qca_spi.c
index f0c99ac8d73d..31ed7a527092 100644
--- a/drivers/net/ethernet/qualcomm/qca_spi.c
+++ b/drivers/net/ethernet/qualcomm/qca_spi.c
@@ -476,7 +476,7 @@ qcaspi_flush_tx_ring(struct qcaspi *qca)
* has been replaced by netif_tx_lock_bh() and so on.
*/
netif_tx_lock_bh(qca->net_dev);
- for (i = 0; i < TX_RING_MAX_LEN; i++) {
+ for (i = 0; i < QCASPI_TX_RING_MAX_LEN; i++) {
if (qca->txr.skb[i]) {
dev_kfree_skb(qca->txr.skb[i]);
qca->txr.skb[i] = NULL;
@@ -871,7 +871,7 @@ qcaspi_netdev_setup(struct net_device *dev)
memset(qca, 0, sizeof(struct qcaspi));
memset(&qca->txr, 0, sizeof(qca->txr));
- qca->txr.count = TX_RING_MAX_LEN;
+ qca->txr.count = QCASPI_TX_RING_MAX_LEN;
}
static const struct of_device_id qca_spi_of_match[] = {
diff --git a/drivers/net/ethernet/qualcomm/qca_spi.h b/drivers/net/ethernet/qualcomm/qca_spi.h
index 3067356106f0..dcecb072b8eb 100644
--- a/drivers/net/ethernet/qualcomm/qca_spi.h
+++ b/drivers/net/ethernet/qualcomm/qca_spi.h
@@ -39,8 +39,8 @@
#define QCASPI_GOOD_SIGNATURE 0xAA55
-#define TX_RING_MAX_LEN 10
-#define TX_RING_MIN_LEN 2
+#define QCASPI_TX_RING_MAX_LEN 10
+#define QCASPI_TX_RING_MIN_LEN 2
/* sync related constants */
#define QCASPI_SYNC_UNKNOWN 0
@@ -54,7 +54,7 @@
#define QCASPI_EVENT_CPUON 1
struct tx_ring {
- struct sk_buff *skb[TX_RING_MAX_LEN];
+ struct sk_buff *skb[QCASPI_TX_RING_MAX_LEN];
u16 head;
u16 tail;
u16 size;
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 07/12 net-next] qca_spi: Introduce QCASPI_RX_MAX_FRAMES
2023-12-14 15:09 [PATCH 00/12 net-next] qca_spi: collection of improvements Stefan Wahren
` (5 preceding siblings ...)
2023-12-14 15:09 ` [PATCH 06/12 net-next] qca_spi: Add QCASPI prefix to ring defines Stefan Wahren
@ 2023-12-14 15:09 ` Stefan Wahren
2023-12-14 15:09 ` [PATCH 08/12 net-next] qca_spi: Improve calculation of RX buffer size Stefan Wahren
` (5 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Stefan Wahren @ 2023-12-14 15:09 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni
Cc: netdev, linux-kernel, Stefan Wahren
Currently qca_spi reserves enough space for 4 complete Ethernet over SPI
frames in the receive buffer. Unfortunately this is hidden under a magic
number. So replace it with a more self explaining define.
Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
---
drivers/net/ethernet/qualcomm/qca_spi.c | 2 +-
drivers/net/ethernet/qualcomm/qca_spi.h | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/qualcomm/qca_spi.c b/drivers/net/ethernet/qualcomm/qca_spi.c
index 31ed7a527092..450c3d254075 100644
--- a/drivers/net/ethernet/qualcomm/qca_spi.c
+++ b/drivers/net/ethernet/qualcomm/qca_spi.c
@@ -796,7 +796,7 @@ qcaspi_netdev_init(struct net_device *dev)
qca->burst_len = qcaspi_burst_len;
qca->spi_thread = NULL;
qca->buffer_size = (dev->mtu + VLAN_ETH_HLEN + QCAFRM_HEADER_LEN +
- QCAFRM_FOOTER_LEN + 4) * 4;
+ QCAFRM_FOOTER_LEN + 4) * QCASPI_RX_MAX_FRAMES;
memset(&qca->stats, 0, sizeof(struct qcaspi_stats));
diff --git a/drivers/net/ethernet/qualcomm/qca_spi.h b/drivers/net/ethernet/qualcomm/qca_spi.h
index dcecb072b8eb..f735ad77402f 100644
--- a/drivers/net/ethernet/qualcomm/qca_spi.h
+++ b/drivers/net/ethernet/qualcomm/qca_spi.h
@@ -41,6 +41,7 @@
#define QCASPI_TX_RING_MAX_LEN 10
#define QCASPI_TX_RING_MIN_LEN 2
+#define QCASPI_RX_MAX_FRAMES 4
/* sync related constants */
#define QCASPI_SYNC_UNKNOWN 0
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 08/12 net-next] qca_spi: Improve calculation of RX buffer size
2023-12-14 15:09 [PATCH 00/12 net-next] qca_spi: collection of improvements Stefan Wahren
` (6 preceding siblings ...)
2023-12-14 15:09 ` [PATCH 07/12 net-next] qca_spi: Introduce QCASPI_RX_MAX_FRAMES Stefan Wahren
@ 2023-12-14 15:09 ` Stefan Wahren
2023-12-14 15:09 ` [PATCH 09/12 net-next] qca_spi: Log expected signature in error case Stefan Wahren
` (4 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Stefan Wahren @ 2023-12-14 15:09 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni
Cc: netdev, linux-kernel, Stefan Wahren
There are two points with the calculation of RX buffer size which are
not optimal:
1. mtu is a mutual parameter, but actually we need the maximum possible
MTU. So better use the define directly.
2. This magic number 4 represent the hardware generated frame length
which is specific to SPI. We better replace this with the suitable
define.
There is no functional change.
Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
---
drivers/net/ethernet/qualcomm/qca_spi.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/qualcomm/qca_spi.c b/drivers/net/ethernet/qualcomm/qca_spi.c
index 450c3d254075..50a862a85f1a 100644
--- a/drivers/net/ethernet/qualcomm/qca_spi.c
+++ b/drivers/net/ethernet/qualcomm/qca_spi.c
@@ -795,8 +795,8 @@ qcaspi_netdev_init(struct net_device *dev)
qca->clkspeed = qcaspi_clkspeed;
qca->burst_len = qcaspi_burst_len;
qca->spi_thread = NULL;
- qca->buffer_size = (dev->mtu + VLAN_ETH_HLEN + QCAFRM_HEADER_LEN +
- QCAFRM_FOOTER_LEN + 4) * QCASPI_RX_MAX_FRAMES;
+ qca->buffer_size = (QCAFRM_MAX_MTU + VLAN_ETH_HLEN + QCAFRM_HEADER_LEN +
+ QCAFRM_FOOTER_LEN + QCASPI_HW_PKT_LEN) * QCASPI_RX_MAX_FRAMES;
memset(&qca->stats, 0, sizeof(struct qcaspi_stats));
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 09/12 net-next] qca_spi: Log expected signature in error case
2023-12-14 15:09 [PATCH 00/12 net-next] qca_spi: collection of improvements Stefan Wahren
` (7 preceding siblings ...)
2023-12-14 15:09 ` [PATCH 08/12 net-next] qca_spi: Improve calculation of RX buffer size Stefan Wahren
@ 2023-12-14 15:09 ` Stefan Wahren
2023-12-14 15:09 ` [PATCH 10/12 net-next] qca_spi: Adjust log of SPI_REG_RDBUF_BYTE_AVA Stefan Wahren
` (3 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Stefan Wahren @ 2023-12-14 15:09 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni
Cc: netdev, linux-kernel, Stefan Wahren
Most of the users doesn't know the expected signature of the QCA700x.
So provide it within the error message. Btw use lowercase for hex as
in the rest of the driver.
Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
---
drivers/net/ethernet/qualcomm/qca_spi.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/qualcomm/qca_spi.c b/drivers/net/ethernet/qualcomm/qca_spi.c
index 50a862a85f1a..a9188b19d1fb 100644
--- a/drivers/net/ethernet/qualcomm/qca_spi.c
+++ b/drivers/net/ethernet/qualcomm/qca_spi.c
@@ -987,8 +987,8 @@ qca_spi_probe(struct spi_device *spi)
qcaspi_read_register(qca, SPI_REG_SIGNATURE, &signature);
if (signature != QCASPI_GOOD_SIGNATURE) {
- dev_err(&spi->dev, "Invalid signature (0x%04X)\n",
- signature);
+ dev_err(&spi->dev, "Invalid signature (expected 0x%04x, read 0x%04x)\n",
+ QCASPI_GOOD_SIGNATURE, signature);
free_netdev(qcaspi_devs);
return -EFAULT;
}
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 10/12 net-next] qca_spi: Adjust log of SPI_REG_RDBUF_BYTE_AVA
2023-12-14 15:09 [PATCH 00/12 net-next] qca_spi: collection of improvements Stefan Wahren
` (8 preceding siblings ...)
2023-12-14 15:09 ` [PATCH 09/12 net-next] qca_spi: Log expected signature in error case Stefan Wahren
@ 2023-12-14 15:09 ` Stefan Wahren
2023-12-14 15:09 ` [PATCH 11/12 net-next] qca_7k: Replace BSD boilerplate with SPDX Stefan Wahren
` (2 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Stefan Wahren @ 2023-12-14 15:09 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni
Cc: netdev, linux-kernel, Stefan Wahren
All known SPI registers of the QCA700x are 16 bit long. So adjust
the formater width accordingly.
Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
---
drivers/net/ethernet/qualcomm/qca_spi.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/qualcomm/qca_spi.c b/drivers/net/ethernet/qualcomm/qca_spi.c
index a9188b19d1fb..fc05959ba825 100644
--- a/drivers/net/ethernet/qualcomm/qca_spi.c
+++ b/drivers/net/ethernet/qualcomm/qca_spi.c
@@ -359,7 +359,7 @@ qcaspi_receive(struct qcaspi *qca)
/* Read the packet size. */
qcaspi_read_register(qca, SPI_REG_RDBUF_BYTE_AVA, &available);
- netdev_dbg(net_dev, "qcaspi_receive: SPI_REG_RDBUF_BYTE_AVA: Value: %08x\n",
+ netdev_dbg(net_dev, "qcaspi_receive: SPI_REG_RDBUF_BYTE_AVA: Value: %04x\n",
available);
if (available > QCASPI_HW_BUF_LEN + QCASPI_HW_PKT_LEN) {
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 11/12 net-next] qca_7k: Replace BSD boilerplate with SPDX
2023-12-14 15:09 [PATCH 00/12 net-next] qca_spi: collection of improvements Stefan Wahren
` (9 preceding siblings ...)
2023-12-14 15:09 ` [PATCH 10/12 net-next] qca_spi: Adjust log of SPI_REG_RDBUF_BYTE_AVA Stefan Wahren
@ 2023-12-14 15:09 ` Stefan Wahren
2023-12-14 15:09 ` [PATCH 12/12 net-next] qca_7k: Replace old mail address Stefan Wahren
2023-12-16 2:25 ` [PATCH 00/12 net-next] qca_spi: collection of improvements Jakub Kicinski
12 siblings, 0 replies; 20+ messages in thread
From: Stefan Wahren @ 2023-12-14 15:09 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni
Cc: netdev, linux-kernel, Stefan Wahren, Stefan Wahren
From: Stefan Wahren <stefan.wahren@i2se.com>
According to MODULE_LICENSE the driver is under a dual license.
So replace the BSD license text with the proper SPDX tag.
Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
---
drivers/net/ethernet/qualcomm/qca_7k.c | 17 +----------------
drivers/net/ethernet/qualcomm/qca_7k.h | 16 +---------------
drivers/net/ethernet/qualcomm/qca_7k_common.c | 15 +--------------
drivers/net/ethernet/qualcomm/qca_7k_common.h | 15 +--------------
drivers/net/ethernet/qualcomm/qca_debug.c | 15 +--------------
drivers/net/ethernet/qualcomm/qca_debug.h | 15 +--------------
drivers/net/ethernet/qualcomm/qca_spi.c | 15 +--------------
drivers/net/ethernet/qualcomm/qca_spi.h | 15 +--------------
drivers/net/ethernet/qualcomm/qca_uart.c | 15 +--------------
9 files changed, 9 insertions(+), 129 deletions(-)
diff --git a/drivers/net/ethernet/qualcomm/qca_7k.c b/drivers/net/ethernet/qualcomm/qca_7k.c
index 4292c89bd35c..6263e4cf47fa 100644
--- a/drivers/net/ethernet/qualcomm/qca_7k.c
+++ b/drivers/net/ethernet/qualcomm/qca_7k.c
@@ -1,22 +1,7 @@
+// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
/*
- *
* Copyright (c) 2011, 2012, Qualcomm Atheros Communications Inc.
* Copyright (c) 2014, I2SE GmbH
- *
- * Permission to use, copy, modify, and/or distribute this software
- * for any purpose with or without fee is hereby granted, provided
- * that the above copyright notice and this permission notice appear
- * in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
- * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
- * THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
*/
/* This module implements the Qualcomm Atheros SPI protocol for
diff --git a/drivers/net/ethernet/qualcomm/qca_7k.h b/drivers/net/ethernet/qualcomm/qca_7k.h
index 356de8ec5d48..828ee9c27578 100644
--- a/drivers/net/ethernet/qualcomm/qca_7k.h
+++ b/drivers/net/ethernet/qualcomm/qca_7k.h
@@ -1,21 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause */
/*
* Copyright (c) 2011, 2012, Qualcomm Atheros Communications Inc.
* Copyright (c) 2014, I2SE GmbH
- *
- * Permission to use, copy, modify, and/or distribute this software
- * for any purpose with or without fee is hereby granted, provided
- * that the above copyright notice and this permission notice appear
- * in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
- * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
- * THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
*/
/* Qualcomm Atheros SPI register definition.
diff --git a/drivers/net/ethernet/qualcomm/qca_7k_common.c b/drivers/net/ethernet/qualcomm/qca_7k_common.c
index 6b511f05df61..be2f754efd21 100644
--- a/drivers/net/ethernet/qualcomm/qca_7k_common.c
+++ b/drivers/net/ethernet/qualcomm/qca_7k_common.c
@@ -1,20 +1,7 @@
+// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
/*
* Copyright (c) 2011, 2012, Atheros Communications Inc.
* Copyright (c) 2014, I2SE GmbH
- *
- * Permission to use, copy, modify, and/or distribute this software
- * for any purpose with or without fee is hereby granted, provided
- * that the above copyright notice and this permission notice appear
- * in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
- * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
- * THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* Atheros ethernet framing. Every Ethernet frame is surrounded
diff --git a/drivers/net/ethernet/qualcomm/qca_7k_common.h b/drivers/net/ethernet/qualcomm/qca_7k_common.h
index 088cca7f61db..44ed66fdb407 100644
--- a/drivers/net/ethernet/qualcomm/qca_7k_common.h
+++ b/drivers/net/ethernet/qualcomm/qca_7k_common.h
@@ -1,20 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause */
/*
* Copyright (c) 2011, 2012, Atheros Communications Inc.
* Copyright (c) 2014, I2SE GmbH
- *
- * Permission to use, copy, modify, and/or distribute this software
- * for any purpose with or without fee is hereby granted, provided
- * that the above copyright notice and this permission notice appear
- * in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
- * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
- * THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* Atheros Ethernet framing. Every Ethernet frame is surrounded by an atheros
diff --git a/drivers/net/ethernet/qualcomm/qca_debug.c b/drivers/net/ethernet/qualcomm/qca_debug.c
index 12d68fdaad8e..a011a1c5d427 100644
--- a/drivers/net/ethernet/qualcomm/qca_debug.c
+++ b/drivers/net/ethernet/qualcomm/qca_debug.c
@@ -1,20 +1,7 @@
+// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
/*
* Copyright (c) 2011, 2012, Qualcomm Atheros Communications Inc.
* Copyright (c) 2014, I2SE GmbH
- *
- * Permission to use, copy, modify, and/or distribute this software
- * for any purpose with or without fee is hereby granted, provided
- * that the above copyright notice and this permission notice appear
- * in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
- * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
- * THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* This file contains debugging routines for use in the QCA7K driver.
diff --git a/drivers/net/ethernet/qualcomm/qca_debug.h b/drivers/net/ethernet/qualcomm/qca_debug.h
index 46a785844421..0d98cef3abc4 100644
--- a/drivers/net/ethernet/qualcomm/qca_debug.h
+++ b/drivers/net/ethernet/qualcomm/qca_debug.h
@@ -1,20 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause */
/*
* Copyright (c) 2011, 2012, Qualcomm Atheros Communications Inc.
* Copyright (c) 2014, I2SE GmbH
- *
- * Permission to use, copy, modify, and/or distribute this software
- * for any purpose with or without fee is hereby granted, provided
- * that the above copyright notice and this permission notice appear
- * in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
- * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
- * THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* This file contains debugging routines for use in the QCA7K driver.
diff --git a/drivers/net/ethernet/qualcomm/qca_spi.c b/drivers/net/ethernet/qualcomm/qca_spi.c
index fc05959ba825..a075193f3787 100644
--- a/drivers/net/ethernet/qualcomm/qca_spi.c
+++ b/drivers/net/ethernet/qualcomm/qca_spi.c
@@ -1,20 +1,7 @@
+// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
/*
* Copyright (c) 2011, 2012, Qualcomm Atheros Communications Inc.
* Copyright (c) 2014, I2SE GmbH
- *
- * Permission to use, copy, modify, and/or distribute this software
- * for any purpose with or without fee is hereby granted, provided
- * that the above copyright notice and this permission notice appear
- * in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
- * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
- * THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* This module implements the Qualcomm Atheros SPI protocol for
diff --git a/drivers/net/ethernet/qualcomm/qca_spi.h b/drivers/net/ethernet/qualcomm/qca_spi.h
index f735ad77402f..d59cb2352cee 100644
--- a/drivers/net/ethernet/qualcomm/qca_spi.h
+++ b/drivers/net/ethernet/qualcomm/qca_spi.h
@@ -1,20 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause */
/*
* Copyright (c) 2011, 2012, Qualcomm Atheros Communications Inc.
* Copyright (c) 2014, I2SE GmbH
- *
- * Permission to use, copy, modify, and/or distribute this software
- * for any purpose with or without fee is hereby granted, provided
- * that the above copyright notice and this permission notice appear
- * in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
- * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
- * THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* Qualcomm Atheros SPI register definition.
diff --git a/drivers/net/ethernet/qualcomm/qca_uart.c b/drivers/net/ethernet/qualcomm/qca_uart.c
index 9adec91f35e9..f911effccfe0 100644
--- a/drivers/net/ethernet/qualcomm/qca_uart.c
+++ b/drivers/net/ethernet/qualcomm/qca_uart.c
@@ -1,20 +1,7 @@
+// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
/*
* Copyright (c) 2011, 2012, Qualcomm Atheros Communications Inc.
* Copyright (c) 2017, I2SE GmbH
- *
- * Permission to use, copy, modify, and/or distribute this software
- * for any purpose with or without fee is hereby granted, provided
- * that the above copyright notice and this permission notice appear
- * in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
- * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
- * THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* This module implements the Qualcomm Atheros UART protocol for
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 12/12 net-next] qca_7k: Replace old mail address
2023-12-14 15:09 [PATCH 00/12 net-next] qca_spi: collection of improvements Stefan Wahren
` (10 preceding siblings ...)
2023-12-14 15:09 ` [PATCH 11/12 net-next] qca_7k: Replace BSD boilerplate with SPDX Stefan Wahren
@ 2023-12-14 15:09 ` Stefan Wahren
2023-12-16 2:25 ` [PATCH 00/12 net-next] qca_spi: collection of improvements Jakub Kicinski
12 siblings, 0 replies; 20+ messages in thread
From: Stefan Wahren @ 2023-12-14 15:09 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni
Cc: netdev, linux-kernel, Stefan Wahren, Stefan Wahren
From: Stefan Wahren <stefan.wahren@i2se.com>
The company I2SE has been acquired a long time ago. Switch to
my private mail address before the I2SE account is deactivated.
Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
---
drivers/net/ethernet/qualcomm/qca_7k_common.c | 2 +-
drivers/net/ethernet/qualcomm/qca_spi.c | 2 +-
drivers/net/ethernet/qualcomm/qca_uart.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/qualcomm/qca_7k_common.c b/drivers/net/ethernet/qualcomm/qca_7k_common.c
index be2f754efd21..5302da587620 100644
--- a/drivers/net/ethernet/qualcomm/qca_7k_common.c
+++ b/drivers/net/ethernet/qualcomm/qca_7k_common.c
@@ -149,5 +149,5 @@ EXPORT_SYMBOL_GPL(qcafrm_fsm_decode);
MODULE_DESCRIPTION("Qualcomm Atheros QCA7000 common");
MODULE_AUTHOR("Qualcomm Atheros Communications");
-MODULE_AUTHOR("Stefan Wahren <stefan.wahren@i2se.com>");
+MODULE_AUTHOR("Stefan Wahren <wahrenst@gmx.net>");
MODULE_LICENSE("Dual BSD/GPL");
diff --git a/drivers/net/ethernet/qualcomm/qca_spi.c b/drivers/net/ethernet/qualcomm/qca_spi.c
index a075193f3787..ccf9a9d7ecb0 100644
--- a/drivers/net/ethernet/qualcomm/qca_spi.c
+++ b/drivers/net/ethernet/qualcomm/qca_spi.c
@@ -1024,6 +1024,6 @@ module_spi_driver(qca_spi_driver);
MODULE_DESCRIPTION("Qualcomm Atheros QCA7000 SPI Driver");
MODULE_AUTHOR("Qualcomm Atheros Communications");
-MODULE_AUTHOR("Stefan Wahren <stefan.wahren@i2se.com>");
+MODULE_AUTHOR("Stefan Wahren <wahrenst@gmx.net>");
MODULE_LICENSE("Dual BSD/GPL");
MODULE_VERSION(QCASPI_DRV_VERSION);
diff --git a/drivers/net/ethernet/qualcomm/qca_uart.c b/drivers/net/ethernet/qualcomm/qca_uart.c
index f911effccfe0..fb53a0c32898 100644
--- a/drivers/net/ethernet/qualcomm/qca_uart.c
+++ b/drivers/net/ethernet/qualcomm/qca_uart.c
@@ -398,6 +398,6 @@ module_serdev_device_driver(qca_uart_driver);
MODULE_DESCRIPTION("Qualcomm Atheros QCA7000 UART Driver");
MODULE_AUTHOR("Qualcomm Atheros Communications");
-MODULE_AUTHOR("Stefan Wahren <stefan.wahren@i2se.com>");
+MODULE_AUTHOR("Stefan Wahren <wahrenst@gmx.net>");
MODULE_LICENSE("Dual BSD/GPL");
MODULE_VERSION(QCAUART_DRV_VERSION);
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread* Re: [PATCH 00/12 net-next] qca_spi: collection of improvements
2023-12-14 15:09 [PATCH 00/12 net-next] qca_spi: collection of improvements Stefan Wahren
` (11 preceding siblings ...)
2023-12-14 15:09 ` [PATCH 12/12 net-next] qca_7k: Replace old mail address Stefan Wahren
@ 2023-12-16 2:25 ` Jakub Kicinski
2023-12-16 9:26 ` Stefan Wahren
12 siblings, 1 reply; 20+ messages in thread
From: Jakub Kicinski @ 2023-12-16 2:25 UTC (permalink / raw)
To: Stefan Wahren
Cc: David S. Miller, Eric Dumazet, Paolo Abeni, netdev, linux-kernel
On Thu, 14 Dec 2023 16:09:32 +0100 Stefan Wahren wrote:
> This series contains a wild collection of improvements for the
> qca_spi driver. This is a follow-up series to the recent bugfixes.
The fixes are now in net-next, and looks like this series
no longer applied, please rebase & repost.
--
pw-bot: cr
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: [PATCH 00/12 net-next] qca_spi: collection of improvements
2023-12-16 2:25 ` [PATCH 00/12 net-next] qca_spi: collection of improvements Jakub Kicinski
@ 2023-12-16 9:26 ` Stefan Wahren
2023-12-18 22:17 ` Jakub Kicinski
0 siblings, 1 reply; 20+ messages in thread
From: Stefan Wahren @ 2023-12-16 9:26 UTC (permalink / raw)
To: Jakub Kicinski
Cc: David S. Miller, Eric Dumazet, Paolo Abeni, netdev, linux-kernel
Hi Jakub,
Am 16.12.23 um 03:25 schrieb Jakub Kicinski:
> On Thu, 14 Dec 2023 16:09:32 +0100 Stefan Wahren wrote:
>> This series contains a wild collection of improvements for the
>> qca_spi driver. This is a follow-up series to the recent bugfixes.
> The fixes are now in net-next, and looks like this series
> no longer applied, please rebase & repost.
let me explain. This series shouldn't replace the already applied
bugfixes. Before i submitted the bugfix patches, i prepared all these
patches. Since the bugfixes had a much higher prio, i decided to split
my patches into a bugfix and improvement series. The bugfixes has been
applied and this series is the improvement part which based on current
net-next including the bugfix series. Sorry for not making this clear.
Patch 1 & 2 in this series is the initially intended rework, which is
also considered valuable by Paolo.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 00/12 net-next] qca_spi: collection of improvements
2023-12-16 9:26 ` Stefan Wahren
@ 2023-12-18 22:17 ` Jakub Kicinski
0 siblings, 0 replies; 20+ messages in thread
From: Jakub Kicinski @ 2023-12-18 22:17 UTC (permalink / raw)
To: Stefan Wahren
Cc: David S. Miller, Eric Dumazet, Paolo Abeni, netdev, linux-kernel
On Sat, 16 Dec 2023 10:26:17 +0100 Stefan Wahren wrote:
> let me explain. This series shouldn't replace the already applied
> bugfixes. Before i submitted the bugfix patches, i prepared all these
> patches. Since the bugfixes had a much higher prio, i decided to split
> my patches into a bugfix and improvement series. The bugfixes has been
> applied and this series is the improvement part which based on current
> net-next including the bugfix series. Sorry for not making this clear.
It may be that you based this series on a tree which had the fixes
but the build bot got to it before the fixes propagated to net-next.
They have propagated now, please repost.
^ permalink raw reply [flat|nested] 20+ messages in thread