summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorMarc Kleine-Budde <mkl@pengutronix.de>2019-08-26 23:46:52 +0200
committerMarcel Ziswiler <marcel.ziswiler@toradex.com>2020-02-12 11:06:09 +0100
commit1622845ce2130b7c9cdb4085d416587ddc7346ee (patch)
tree11787b88fa450e1f596f5e02e4a885c672e1eb32 /drivers
parent4630d2f7fda0ac5773179841cbd54e55b8ba4d23 (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.c14
-rw-r--r--drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can_tx.h3
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];