cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

rx-offload.h (1924B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      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>
      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
     15struct can_rx_offload {
     16	struct net_device *dev;
     17
     18	struct sk_buff *(*mailbox_read)(struct can_rx_offload *offload,
     19					unsigned int mb, u32 *timestamp,
     20					bool drop);
     21
     22	struct sk_buff_head skb_queue;
     23	struct sk_buff_head skb_irq_queue;
     24	u32 skb_queue_len_max;
     25
     26	unsigned int mb_first;
     27	unsigned int mb_last;
     28
     29	struct napi_struct napi;
     30
     31	bool inc;
     32};
     33
     34int can_rx_offload_add_timestamp(struct net_device *dev,
     35				 struct can_rx_offload *offload);
     36int can_rx_offload_add_fifo(struct net_device *dev,
     37			    struct can_rx_offload *offload,
     38			    unsigned int weight);
     39int can_rx_offload_add_manual(struct net_device *dev,
     40			      struct can_rx_offload *offload,
     41			      unsigned int weight);
     42int can_rx_offload_irq_offload_timestamp(struct can_rx_offload *offload,
     43					 u64 reg);
     44int can_rx_offload_irq_offload_fifo(struct can_rx_offload *offload);
     45int can_rx_offload_queue_timestamp(struct can_rx_offload *offload,
     46				   struct sk_buff *skb, u32 timestamp);
     47unsigned int can_rx_offload_get_echo_skb(struct can_rx_offload *offload,
     48					 unsigned int idx, u32 timestamp,
     49					 unsigned int *frame_len_ptr);
     50int can_rx_offload_queue_tail(struct can_rx_offload *offload,
     51			      struct sk_buff *skb);
     52void can_rx_offload_irq_finish(struct can_rx_offload *offload);
     53void can_rx_offload_threaded_irq_finish(struct can_rx_offload *offload);
     54void can_rx_offload_del(struct can_rx_offload *offload);
     55void can_rx_offload_enable(struct can_rx_offload *offload);
     56
     57static inline void can_rx_offload_disable(struct can_rx_offload *offload)
     58{
     59	napi_disable(&offload->napi);
     60}
     61
     62#endif /* !_CAN_RX_OFFLOAD_H */