diff options
author | Kurt Van Dijck <dev.kurt@vandijck-laurijssen.be> | 2019-10-09 11:48:35 +0200 |
---|---|---|
committer | Marc Kleine-Budde <mkl@pengutronix.de> | 2019-11-05 21:28:03 +0100 |
commit | a11469e9e8b072378f492903205f5d46821111d4 (patch) | |
tree | d5240aff6fbe9e37e653aad0170b8aeb8246ce06 | |
parent | bc0166d9c5c892626213b37ab19fcba69ac34fef (diff) | |
download | linux-can-next-c_can.tar.gz |
can: c_can: use rx-offload for echo skb tooc_can
Signed-off-by: Kurt Van Dijck <dev.kurt@vandijck-laurijssen.be>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
-rw-r--r-- | drivers/net/can/c_can/c_can.c | 8 | ||||
-rw-r--r-- | drivers/net/can/c_can/c_can.h | 1 |
2 files changed, 5 insertions, 4 deletions
diff --git a/drivers/net/can/c_can/c_can.c b/drivers/net/can/c_can/c_can.c index 8f68d51a7b882f..0455de18b1adee 100644 --- a/drivers/net/can/c_can/c_can.c +++ b/drivers/net/can/c_can/c_can.c @@ -480,7 +480,6 @@ static netdev_tx_t c_can_start_xmit(struct sk_buff *skb, * transmit as we might race against do_tx(). */ c_can_setup_tx_object(dev, IF_TX, frame, idx); - priv->dlc[idx] = frame->can_dlc; can_put_echo_skb(skb, dev, idx); /* Update the active bits */ @@ -705,6 +704,8 @@ static void c_can_do_tx(struct net_device *dev) struct c_can_priv *priv = netdev_priv(dev); struct net_device_stats *stats = &dev->stats; u32 idx, obj, pkts = 0, bytes = 0, pend, clr; + struct sk_buff *skb; + u8 len; clr = pend = priv->read_reg(priv, C_CAN_INTPND2_REG); @@ -713,8 +714,9 @@ static void c_can_do_tx(struct net_device *dev) pend &= ~(1 << idx); obj = idx + C_CAN_MSG_OBJ_TX_FIRST; c_can_inval_tx_object(dev, IF_RX, obj); - can_get_echo_skb(dev, idx); - bytes += priv->dlc[idx]; + skb = __can_get_echo_skb(dev, idx, &len); + can_rx_offload_irq_receive_skb(&priv->offload, skb); + bytes += len; pkts++; } diff --git a/drivers/net/can/c_can/c_can.h b/drivers/net/can/c_can/c_can.h index 770e944df84b44..ebe0676aa7a038 100644 --- a/drivers/net/can/c_can/c_can.h +++ b/drivers/net/can/c_can/c_can.h @@ -214,7 +214,6 @@ struct c_can_priv { void (*raminit) (const struct c_can_priv *priv, bool enable); u32 comm_rcv_high; u32 rxmasked; - u32 dlc[C_CAN_MSG_OBJ_TX_NUM]; }; struct net_device *alloc_c_can_dev(void); |