+++ /dev/null
-From ed72bc8bcb9277061e753faf300b20f97323761c Mon Sep 17 00:00:00 2001
-From: Oleksij Rempel <o.rempel@pengutronix.de>
-Date: Tue, 18 Sep 2018 11:40:39 +0200
-Subject: can: flexcan: handle tx-complete CAN frames via rx-offload infrastructure
-
-From: Oleksij Rempel <o.rempel@pengutronix.de>
-
-commit ed72bc8bcb9277061e753faf300b20f97323761c upstream.
-
-Current flexcan driver will put TX-ECHO in regular unsorted way, in
-this case TX-ECHO can come after the response to the same TXed message.
-In some cases, for example for J1939 stack, things will break.
-This patch is using new rx-offload API to put the messages just in the
-right place.
-
-Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
-Cc: linux-stable <stable@vger.kernel.org>
-Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
----
- drivers/net/can/flexcan.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
---- a/drivers/net/can/flexcan.c
-+++ b/drivers/net/can/flexcan.c
-@@ -775,8 +775,11 @@ static irqreturn_t flexcan_irq(int irq,
-
- /* transmission complete interrupt */
- if (reg_iflag1 & FLEXCAN_IFLAG_MB(priv->tx_mb_idx)) {
-+ u32 reg_ctrl = priv->read(®s->mb[FLEXCAN_TX_MB].can_ctrl);
-+
- handled = IRQ_HANDLED;
-- stats->tx_bytes += can_get_echo_skb(dev, 0);
-+ stats->tx_bytes += can_rx_offload_get_echo_skb(&priv->offload,
-+ 0, reg_ctrl << 16);
- stats->tx_packets++;
- can_led_event(dev, CAN_LED_EVENT_TX);
-
+++ /dev/null
-From d788905f68fd4714c82936f6f7f1d3644d7ae7ef Mon Sep 17 00:00:00 2001
-From: Oleksij Rempel <o.rempel@pengutronix.de>
-Date: Tue, 18 Sep 2018 11:40:41 +0200
-Subject: can: flexcan: use can_rx_offload_queue_sorted() for flexcan_irq_bus_*()
-
-From: Oleksij Rempel <o.rempel@pengutronix.de>
-
-commit d788905f68fd4714c82936f6f7f1d3644d7ae7ef upstream.
-
-Currently, in case of bus error, driver will generate error message and put
-in the tail of the message queue. To avoid confusions, this change should
-place the bus related messages in proper order.
-
-Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
-Cc: linux-stable <stable@vger.kernel.org>
-Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
----
- drivers/net/can/flexcan.c | 12 ++++++++++--
- 1 file changed, 10 insertions(+), 2 deletions(-)
-
---- a/drivers/net/can/flexcan.c
-+++ b/drivers/net/can/flexcan.c
-@@ -550,9 +550,13 @@ static int flexcan_start_xmit(struct sk_
- static void flexcan_irq_bus_err(struct net_device *dev, u32 reg_esr)
- {
- struct flexcan_priv *priv = netdev_priv(dev);
-+ struct flexcan_regs __iomem *regs = priv->regs;
- struct sk_buff *skb;
- struct can_frame *cf;
- bool rx_errors = false, tx_errors = false;
-+ u32 timestamp;
-+
-+ timestamp = priv->read(®s->timer) << 16;
-
- skb = alloc_can_err_skb(dev, &cf);
- if (unlikely(!skb))
-@@ -599,17 +603,21 @@ static void flexcan_irq_bus_err(struct n
- if (tx_errors)
- dev->stats.tx_errors++;
-
-- can_rx_offload_queue_tail(&priv->offload, skb);
-+ can_rx_offload_queue_sorted(&priv->offload, skb, timestamp);
- }
-
- static void flexcan_irq_state(struct net_device *dev, u32 reg_esr)
- {
- struct flexcan_priv *priv = netdev_priv(dev);
-+ struct flexcan_regs __iomem *regs = priv->regs;
- struct sk_buff *skb;
- struct can_frame *cf;
- enum can_state new_state, rx_state, tx_state;
- int flt;
- struct can_berr_counter bec;
-+ u32 timestamp;
-+
-+ timestamp = priv->read(®s->timer) << 16;
-
- flt = reg_esr & FLEXCAN_ESR_FLT_CONF_MASK;
- if (likely(flt == FLEXCAN_ESR_FLT_CONF_ACTIVE)) {
-@@ -639,7 +647,7 @@ static void flexcan_irq_state(struct net
- if (unlikely(new_state == CAN_STATE_BUS_OFF))
- can_bus_off(dev);
-
-- can_rx_offload_queue_tail(&priv->offload, skb);
-+ can_rx_offload_queue_sorted(&priv->offload, skb, timestamp);
- }
-
- static inline struct flexcan_priv *rx_offload_to_priv(struct can_rx_offload *offload)
can-dev-__can_get_echo_skb-print-error-message-if-trying-to-echo-non-existing-skb.patch
can-rx-offload-introduce-can_rx_offload_get_echo_skb-and-can_rx_offload_queue_sorted-functions.patch
can-rx-offload-rename-can_rx_offload_irq_queue_err_skb-to-can_rx_offload_queue_tail.patch
-can-flexcan-use-can_rx_offload_queue_sorted-for-flexcan_irq_bus_.patch
-can-flexcan-handle-tx-complete-can-frames-via-rx-offload-infrastructure.patch
can-raw-check-for-can-fd-capable-netdev-in-raw_sendmsg.patch
can-hi311x-use-level-triggered-interrupt.patch
acpica-aml-interpreter-add-region-addresses-in-global-list-during-initialization.patch