can: rx-offload: Prepare for CAN FD support

The skbs for classic CAN and CAN FD frames are allocated with seperate
functions: alloc_can_skb() and alloc_canfd_skb().

In order to support CAN FD frames via the rx-offload helper, the driver
itself has to allocate the skb (depending whether it received a classic
CAN or CAN FD frame), as the rx-offload helper cannot know which kind of
CAN frame the driver has received.

This patch moves the allocation of the skb into the struct
can_rx_offload::mailbox_read callbacks of the the flexcan and ti_hecc
driver and adjusts the rx-offload helper accordingly.

Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
This commit is contained in:
Joakim Zhang 2019-07-12 08:02:38 +00:00 committed by Marc Kleine-Budde
parent 61d2350615
commit 4e9c9484b0
4 changed files with 60 additions and 69 deletions

View file

@ -15,9 +15,9 @@
struct can_rx_offload {
struct net_device *dev;
unsigned int (*mailbox_read)(struct can_rx_offload *offload,
struct can_frame *cf,
u32 *timestamp, unsigned int mb);
struct sk_buff *(*mailbox_read)(struct can_rx_offload *offload,
unsigned int mb, u32 *timestamp,
bool drop);
struct sk_buff_head skb_queue;
u32 skb_queue_len_max;