/* * Copyright (C) ST-Ericsson AB 2010 * Author: Sjur Brendeland * License terms: GNU General Public License (GPL) version 2 */ #ifndef CAIF_DEVICE_H_ #define CAIF_DEVICE_H_ #include #include #include #include #include /** * struct caif_dev_common - data shared between CAIF drivers and stack. * @flowctrl: Flow Control callback function. This function is * supplied by CAIF Core Stack and is used by CAIF * Link Layer to send flow-stop to CAIF Core. * The flow information will be distributed to all * clients of CAIF. * * @link_select: Profile of device, either high-bandwidth or * low-latency. This member is set by CAIF Link * Layer Device in order to indicate if this device * is a high bandwidth or low latency device. * * @use_frag: CAIF Frames may be fragmented. * Is set by CAIF Link Layer in order to indicate if the * interface receives fragmented frames that must be * assembled by CAIF Core Layer. * * @use_fcs: Indicate if Frame CheckSum (fcs) is used. * Is set if the physical interface is * using Frame Checksum on the CAIF Frames. * * @use_stx: Indicate STart of frame eXtension (stx) in use. * Is set if the CAIF Link Layer expects * CAIF Frames to start with the STX byte. * * This structure is shared between the CAIF drivers and the CAIF stack. * It is used by the device to register its behavior. * CAIF Core layer must set the member flowctrl in order to supply * CAIF Link Layer with the flow control function. * */ struct caif_dev_common { void (*flowctrl)(struct net_device *net, int on); enum caif_link_selector link_select; int use_frag; int use_fcs; int use_stx; }; #endif /* CAIF_DEVICE_H_ */ 9b25'>treecommitdiff
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2017-01-31 09:37:34 +0100
committerThomas Gleixner <tglx@linutronix.de>2017-01-31 21:47:58 +0100
commit0becc0ae5b42828785b589f686725ff5bc3b9b25 (patch)
treebe6d0e1f37c38ed0a7dd5da2d4b1e93f0fb43101 /drivers/usb/host/fhci-sched.c
parent24c2503255d35c269b67162c397a1a1c1e02f6ce (diff)
x86/mce: Make timer handling more robust
Erik reported that on a preproduction hardware a CMCI storm triggers the BUG_ON in add_timer_on(). The reason is that the per CPU MCE timer is started by the CMCI logic before the MCE CPU hotplug callback starts the timer with add_timer_on(). So the timer is already queued which triggers the BUG. Using add_timer_on() is pretty pointless in this code because the timer is strictlty per CPU, initialized as pinned and all operations which arm the timer happen on the CPU to which the timer belongs. Simplify the whole machinery by using mod_timer() instead of add_timer_on() which avoids the problem because mod_timer() can handle already queued timers. Use __start_timer() everywhere so the earliest armed expiry time is preserved. Reported-by: Erik Veijola <erik.veijola@intel.com> Tested-by: Borislav Petkov <bp@alien8.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Borislav Petkov <bp@alien8.de> Cc: Tony Luck <tony.luck@intel.com> Link: http://lkml.kernel.org/r/alpine.DEB.2.20.1701310936080.3457@nanos Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'drivers/usb/host/fhci-sched.c')