]>
Commit | Line | Data |
---|---|---|
aaa7cb26 | 1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
d254586c DJ |
2 | /* |
3 | * linux/can/rx-offload.h | |
4 | * | |
5 | * Copyright (c) 2014 David Jander, Protonic Holland | |
6 | * Copyright (c) 2014-2017 Pengutronix, Marc Kleine-Budde <kernel@pengutronix.de> | |
d254586c DJ |
7 | */ |
8 | ||
9 | #ifndef _CAN_RX_OFFLOAD_H | |
10 | #define _CAN_RX_OFFLOAD_H | |
11 | ||
12 | #include <linux/netdevice.h> | |
13 | #include <linux/can.h> | |
14 | ||
15 | struct can_rx_offload { | |
16 | struct net_device *dev; | |
17 | ||
3abbac0b MKB |
18 | unsigned int (*mailbox_read)(struct can_rx_offload *offload, struct can_frame *cf, |
19 | u32 *timestamp, unsigned int mb); | |
d254586c DJ |
20 | |
21 | struct sk_buff_head skb_queue; | |
22 | u32 skb_queue_len_max; | |
23 | ||
3abbac0b MKB |
24 | unsigned int mb_first; |
25 | unsigned int mb_last; | |
26 | ||
d254586c | 27 | struct napi_struct napi; |
3abbac0b MKB |
28 | |
29 | bool inc; | |
d254586c DJ |
30 | }; |
31 | ||
3abbac0b | 32 | int can_rx_offload_add_timestamp(struct net_device *dev, struct can_rx_offload *offload); |
d254586c | 33 | int can_rx_offload_add_fifo(struct net_device *dev, struct can_rx_offload *offload, unsigned int weight); |
3abbac0b | 34 | int can_rx_offload_irq_offload_timestamp(struct can_rx_offload *offload, u64 reg); |
d254586c | 35 | int can_rx_offload_irq_offload_fifo(struct can_rx_offload *offload); |
55059f2b OR |
36 | int can_rx_offload_queue_sorted(struct can_rx_offload *offload, |
37 | struct sk_buff *skb, u32 timestamp); | |
38 | unsigned int can_rx_offload_get_echo_skb(struct can_rx_offload *offload, | |
39 | unsigned int idx, u32 timestamp); | |
4530ec36 OR |
40 | int can_rx_offload_queue_tail(struct can_rx_offload *offload, |
41 | struct sk_buff *skb); | |
d254586c DJ |
42 | void can_rx_offload_reset(struct can_rx_offload *offload); |
43 | void can_rx_offload_del(struct can_rx_offload *offload); | |
44 | void can_rx_offload_enable(struct can_rx_offload *offload); | |
45 | ||
46 | static inline void can_rx_offload_schedule(struct can_rx_offload *offload) | |
47 | { | |
48 | napi_schedule(&offload->napi); | |
49 | } | |
50 | ||
51 | static inline void can_rx_offload_disable(struct can_rx_offload *offload) | |
52 | { | |
53 | napi_disable(&offload->napi); | |
54 | } | |
55 | ||
56 | #endif /* !_CAN_RX_OFFLOAD_H */ |