summaryrefslogtreecommitdiff
path: root/drivers/net/can/m_can/m_can.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/can/m_can/m_can.h')
-rw-r--r--drivers/net/can/m_can/m_can.h14
1 files changed, 11 insertions, 3 deletions
diff --git a/drivers/net/can/m_can/m_can.h b/drivers/net/can/m_can/m_can.h
index 0de42fc5ef1e..be1d2119bd53 100644
--- a/drivers/net/can/m_can/m_can.h
+++ b/drivers/net/can/m_can/m_can.h
@@ -70,6 +70,12 @@ struct m_can_ops {
int (*init)(struct m_can_classdev *cdev);
};
+struct m_can_tx_op {
+ struct m_can_classdev *cdev;
+ struct work_struct work;
+ struct sk_buff *skb;
+};
+
struct m_can_classdev {
struct can_priv can;
struct can_rx_offload offload;
@@ -80,8 +86,6 @@ struct m_can_classdev {
struct clk *cclk;
struct workqueue_struct *tx_wq;
- struct work_struct tx_work;
- struct sk_buff *tx_skb;
struct phy *transceiver;
ktime_t irq_timer_wait;
@@ -102,7 +106,11 @@ struct m_can_classdev {
u32 tx_coalesce_usecs_irq;
// Store this internally to avoid fetch delays on peripheral chips
- int tx_fifo_putidx;
+ u32 tx_fifo_putidx;
+
+ struct m_can_tx_op *tx_ops;
+ int tx_fifo_size;
+ int next_tx_op;
struct mram_cfg mcfg[MRAM_CFG_NUM];