1*af873fceSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 22721c5b9SSjur Braendeland /* 32721c5b9SSjur Braendeland * Copyright (C) ST-Ericsson AB 2010 426ee65e6Ssjur.brandeland@stericsson.com * Author: Sjur Brendeland 52721c5b9SSjur Braendeland */ 62721c5b9SSjur Braendeland 72721c5b9SSjur Braendeland #ifndef CAIF_DEVICE_H_ 82721c5b9SSjur Braendeland #define CAIF_DEVICE_H_ 92721c5b9SSjur Braendeland #include <linux/kernel.h> 102721c5b9SSjur Braendeland #include <linux/net.h> 112721c5b9SSjur Braendeland #include <linux/netdevice.h> 122721c5b9SSjur Braendeland #include <linux/caif/caif_socket.h> 132721c5b9SSjur Braendeland #include <net/caif/caif_device.h> 142721c5b9SSjur Braendeland 152721c5b9SSjur Braendeland /** 162721c5b9SSjur Braendeland * struct caif_dev_common - data shared between CAIF drivers and stack. 172721c5b9SSjur Braendeland * @flowctrl: Flow Control callback function. This function is 182721c5b9SSjur Braendeland * supplied by CAIF Core Stack and is used by CAIF 192721c5b9SSjur Braendeland * Link Layer to send flow-stop to CAIF Core. 202721c5b9SSjur Braendeland * The flow information will be distributed to all 212721c5b9SSjur Braendeland * clients of CAIF. 222721c5b9SSjur Braendeland * 232721c5b9SSjur Braendeland * @link_select: Profile of device, either high-bandwidth or 242721c5b9SSjur Braendeland * low-latency. This member is set by CAIF Link 252721c5b9SSjur Braendeland * Layer Device in order to indicate if this device 262721c5b9SSjur Braendeland * is a high bandwidth or low latency device. 272721c5b9SSjur Braendeland * 282721c5b9SSjur Braendeland * @use_frag: CAIF Frames may be fragmented. 292721c5b9SSjur Braendeland * Is set by CAIF Link Layer in order to indicate if the 302721c5b9SSjur Braendeland * interface receives fragmented frames that must be 312721c5b9SSjur Braendeland * assembled by CAIF Core Layer. 322721c5b9SSjur Braendeland * 332721c5b9SSjur Braendeland * @use_fcs: Indicate if Frame CheckSum (fcs) is used. 342721c5b9SSjur Braendeland * Is set if the physical interface is 352721c5b9SSjur Braendeland * using Frame Checksum on the CAIF Frames. 362721c5b9SSjur Braendeland * 372721c5b9SSjur Braendeland * @use_stx: Indicate STart of frame eXtension (stx) in use. 382721c5b9SSjur Braendeland * Is set if the CAIF Link Layer expects 392721c5b9SSjur Braendeland * CAIF Frames to start with the STX byte. 402721c5b9SSjur Braendeland * 412721c5b9SSjur Braendeland * This structure is shared between the CAIF drivers and the CAIF stack. 422721c5b9SSjur Braendeland * It is used by the device to register its behavior. 432721c5b9SSjur Braendeland * CAIF Core layer must set the member flowctrl in order to supply 442721c5b9SSjur Braendeland * CAIF Link Layer with the flow control function. 452721c5b9SSjur Braendeland * 462721c5b9SSjur Braendeland */ 472721c5b9SSjur Braendeland struct caif_dev_common { 482721c5b9SSjur Braendeland void (*flowctrl)(struct net_device *net, int on); 492721c5b9SSjur Braendeland enum caif_link_selector link_select; 502721c5b9SSjur Braendeland int use_frag; 512721c5b9SSjur Braendeland int use_fcs; 522721c5b9SSjur Braendeland int use_stx; 532721c5b9SSjur Braendeland }; 542721c5b9SSjur Braendeland 552721c5b9SSjur Braendeland #endif /* CAIF_DEVICE_H_ */ 56