diff options
author | Marc Kleine-Budde <mkl@pengutronix.de> | 2019-08-26 23:46:52 +0200 |
---|---|---|
committer | Marcel Ziswiler <marcel.ziswiler@toradex.com> | 2020-02-12 11:06:09 +0100 |
commit | 1622845ce2130b7c9cdb4085d416587ddc7346ee (patch) | |
tree | 11787b88fa450e1f596f5e02e4a885c672e1eb32 /drivers | |
parent | 4630d2f7fda0ac5773179841cbd54e55b8ba4d23 (diff) |
can: mcp25xxfd: remove struct mcp25xxfd_tx_spi_message_queue::spi_lock
The xmit callback is serialized by the network stack, no need for
locking.
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
(cherry picked from commit 8d59059d2098ef612fad460e0e9f832ec36d5fbd)
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can_tx.c | 14 | ||||
-rw-r--r-- | drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can_tx.h | 3 |
2 files changed, 0 insertions, 17 deletions
diff --git a/drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can_tx.c b/drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can_tx.c index 84803ca2005d..6b02d8d2149b 100644 --- a/drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can_tx.c +++ b/drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can_tx.c @@ -557,24 +557,16 @@ netdev_tx_t mcp25xxfd_can_tx_start_xmit(struct sk_buff *skb, { u32 state = MCP25XXFD_CAN_TX_QUEUE_STATE_STOPPED; struct mcp25xxfd_can_priv *cpriv = netdev_priv(net); - struct mcp25xxfd_tx_spi_message_queue *q = cpriv->fifos.tx_queue; struct mcp25xxfd_priv *priv = cpriv->priv; struct spi_device *spi = priv->spi; struct mcp25xxfd_tx_spi_message *smsg; struct mcp25xxfd_can_obj_tx *tx; - unsigned long flags; int ret; /* invalid skb we can ignore */ if (can_dropped_invalid_skb(net, skb)) return NETDEV_TX_OK; - /* acquire lock on spi so that we are are not risking - * some reordering of spi messages when we are running - * start_xmit in multiple threads (on multiple cores) - */ - spin_lock_irqsave(&q->spi_lock, flags); - /* get the fifo message structure to process now */ smsg = mcp25xxfd_can_tx_queue_get_next_fifo(cpriv); if (!smsg) @@ -613,9 +605,6 @@ netdev_tx_t mcp25xxfd_can_tx_start_xmit(struct sk_buff *skb, if (ret) goto out_async_failed; - /* unlock the spi bus */ - spin_unlock_irqrestore(&q->spi_lock, flags); - /* keep it for reference until the message really got transmitted */ can_put_echo_skb(skb, net, smsg->fifo); @@ -628,8 +617,6 @@ out_busy: /* stop the queue */ mcp25xxfd_can_tx_queue_manage_nolock(cpriv, state); - spin_unlock_irqrestore(&q->spi_lock, flags); - return NETDEV_TX_BUSY; } @@ -770,7 +757,6 @@ int mcp25xxfd_can_tx_queue_alloc(struct mcp25xxfd_can_priv *cpriv) /* initialize the tx_queue structure */ spin_lock_init(&cpriv->fifos.tx_queue->lock); - spin_lock_init(&cpriv->fifos.tx_queue->spi_lock); /* initialize the individual spi_message structures */ for (i = 0, f = cpriv->fifos.tx.start; i < cpriv->fifos.tx.count; diff --git a/drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can_tx.h b/drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can_tx.h index 1947b3420d58..1000a80b1ee0 100644 --- a/drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can_tx.h +++ b/drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can_tx.h @@ -59,9 +59,6 @@ struct mcp25xxfd_tx_spi_message_queue { #define MCP25XXFD_CAN_TX_QUEUE_STATE_RUNABLE 2 #define MCP25XXFD_CAN_TX_QUEUE_STATE_RESTART 3 - /* spinlock protecting spi submission order */ - spinlock_t spi_lock; - /* map each fifo to a mcp25xxfd_tx_spi_message */ struct mcp25xxfd_tx_spi_message *fifo2message[32]; |