1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * Copyright (C) ST-Ericsson AB 2010 4 * Author: Sjur Brendeland 5 */ 6 7 #ifndef CAIF_DEVICE_H_ 8 #define CAIF_DEVICE_H_ 9 #include <linux/kernel.h> 10 #include <linux/net.h> 11 #include <linux/netdevice.h> 12 #include <linux/caif/caif_socket.h> 13 #include <net/caif/caif_device.h> 14 15 /** 16 * struct caif_dev_common - data shared between CAIF drivers and stack. 17 * @flowctrl: Flow Control callback function. This function is 18 * supplied by CAIF Core Stack and is used by CAIF 19 * Link Layer to send flow-stop to CAIF Core. 20 * The flow information will be distributed to all 21 * clients of CAIF. 22 * 23 * @link_select: Profile of device, either high-bandwidth or 24 * low-latency. This member is set by CAIF Link 25 * Layer Device in order to indicate if this device 26 * is a high bandwidth or low latency device. 27 * 28 * @use_frag: CAIF Frames may be fragmented. 29 * Is set by CAIF Link Layer in order to indicate if the 30 * interface receives fragmented frames that must be 31 * assembled by CAIF Core Layer. 32 * 33 * @use_fcs: Indicate if Frame CheckSum (fcs) is used. 34 * Is set if the physical interface is 35 * using Frame Checksum on the CAIF Frames. 36 * 37 * @use_stx: Indicate STart of frame eXtension (stx) in use. 38 * Is set if the CAIF Link Layer expects 39 * CAIF Frames to start with the STX byte. 40 * 41 * This structure is shared between the CAIF drivers and the CAIF stack. 42 * It is used by the device to register its behavior. 43 * CAIF Core layer must set the member flowctrl in order to supply 44 * CAIF Link Layer with the flow control function. 45 * 46 */ 47 struct caif_dev_common { 48 void (*flowctrl)(struct net_device *net, int on); 49 enum caif_link_selector link_select; 50 int use_frag; 51 int use_fcs; 52 int use_stx; 53 }; 54 55 #endif /* CAIF_DEVICE_H_ */ 56