diff options
author | Marc Kleine-Budde <mkl@pengutronix.de> | 2019-08-26 23:46:52 +0200 |
---|---|---|
committer | Oleksandr Suvorov <oleksandr.suvorov@toradex.com> | 2021-01-27 20:36:30 +0200 |
commit | f098e7bbaf8e2377626a6e4f82b68d17d735db63 (patch) | |
tree | 8290f3df984e6c1fedfdabd73095e73e88948437 | |
parent | 268fb30a19fb5a468a2f120c1308c1f1ad74b845 (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)
(cherry picked from commit dda94b4f004fd92d8534b6c8b6c4bc0854569fc6)
-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]; |