Merge v3.6-rc3 into usb-next
This picks up fixes that we need in this branch for testing. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
commit
a7bdf7fa33
871 changed files with 10187 additions and 6602 deletions
|
|
@ -391,6 +391,7 @@ header-y += v4l2-dv-timings.h
|
|||
header-y += v4l2-mediabus.h
|
||||
header-y += v4l2-subdev.h
|
||||
header-y += veth.h
|
||||
header-y += vfio.h
|
||||
header-y += vhost.h
|
||||
header-y += videodev2.h
|
||||
header-y += virtio_9p.h
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ void acpi_table_print_madt_entry (struct acpi_subtable_header *madt);
|
|||
void acpi_numa_slit_init (struct acpi_table_slit *slit);
|
||||
void acpi_numa_processor_affinity_init (struct acpi_srat_cpu_affinity *pa);
|
||||
void acpi_numa_x2apic_affinity_init(struct acpi_srat_x2apic_cpu_affinity *pa);
|
||||
void acpi_numa_memory_affinity_init (struct acpi_srat_mem_affinity *ma);
|
||||
int acpi_numa_memory_affinity_init (struct acpi_srat_mem_affinity *ma);
|
||||
void acpi_numa_arch_fixup(void);
|
||||
|
||||
#ifdef CONFIG_ACPI_HOTPLUG_CPU
|
||||
|
|
|
|||
|
|
@ -124,7 +124,6 @@ void bdi_start_writeback(struct backing_dev_info *bdi, long nr_pages,
|
|||
void bdi_start_background_writeback(struct backing_dev_info *bdi);
|
||||
int bdi_writeback_thread(void *data);
|
||||
int bdi_has_dirty_io(struct backing_dev_info *bdi);
|
||||
void bdi_arm_supers_timer(void);
|
||||
void bdi_wakeup_thread_delayed(struct backing_dev_info *bdi);
|
||||
void bdi_lock_two(struct bdi_writeback *wb1, struct bdi_writeback *wb2);
|
||||
|
||||
|
|
|
|||
|
|
@ -89,6 +89,12 @@
|
|||
#define BCMA_CC_CHIPST_4313_OTP_PRESENT 2
|
||||
#define BCMA_CC_CHIPST_4331_SPROM_PRESENT 2
|
||||
#define BCMA_CC_CHIPST_4331_OTP_PRESENT 4
|
||||
#define BCMA_CC_CHIPST_43228_ILP_DIV_EN 0x00000001
|
||||
#define BCMA_CC_CHIPST_43228_OTP_PRESENT 0x00000002
|
||||
#define BCMA_CC_CHIPST_43228_SERDES_REFCLK_PADSEL 0x00000004
|
||||
#define BCMA_CC_CHIPST_43228_SDIO_MODE 0x00000008
|
||||
#define BCMA_CC_CHIPST_43228_SDIO_OTP_PRESENT 0x00000010
|
||||
#define BCMA_CC_CHIPST_43228_SDIO_RESET 0x00000020
|
||||
#define BCMA_CC_CHIPST_4706_PKG_OPTION BIT(0) /* 0: full-featured package 1: low-cost package */
|
||||
#define BCMA_CC_CHIPST_4706_SFLASH_PRESENT BIT(1) /* 0: parallel, 1: serial flash is present */
|
||||
#define BCMA_CC_CHIPST_4706_SFLASH_TYPE BIT(2) /* 0: 8b-p/ST-s flash, 1: 16b-p/Atmal-s flash */
|
||||
|
|
|
|||
|
|
@ -74,20 +74,21 @@ struct can_frame {
|
|||
/*
|
||||
* defined bits for canfd_frame.flags
|
||||
*
|
||||
* As the default for CAN FD should be to support the high data rate in the
|
||||
* payload section of the frame (HDR) and to support up to 64 byte in the
|
||||
* data section (EDL) the bits are only set in the non-default case.
|
||||
* Btw. as long as there's no real implementation for CAN FD network driver
|
||||
* these bits are only preliminary.
|
||||
* The use of struct canfd_frame implies the Extended Data Length (EDL) bit to
|
||||
* be set in the CAN frame bitstream on the wire. The EDL bit switch turns
|
||||
* the CAN controllers bitstream processor into the CAN FD mode which creates
|
||||
* two new options within the CAN FD frame specification:
|
||||
*
|
||||
* RX: NOHDR/NOEDL - info about received CAN FD frame
|
||||
* ESI - bit from originating CAN controller
|
||||
* TX: NOHDR/NOEDL - control per-frame settings if supported by CAN controller
|
||||
* ESI - bit is set by local CAN controller
|
||||
* Bit Rate Switch - to indicate a second bitrate is/was used for the payload
|
||||
* Error State Indicator - represents the error state of the transmitting node
|
||||
*
|
||||
* As the CANFD_ESI bit is internally generated by the transmitting CAN
|
||||
* controller only the CANFD_BRS bit is relevant for real CAN controllers when
|
||||
* building a CAN FD frame for transmission. Setting the CANFD_ESI bit can make
|
||||
* sense for virtual CAN interfaces to test applications with echoed frames.
|
||||
*/
|
||||
#define CANFD_NOHDR 0x01 /* frame without high data rate */
|
||||
#define CANFD_NOEDL 0x02 /* frame without extended data length */
|
||||
#define CANFD_ESI 0x04 /* error state indicator */
|
||||
#define CANFD_BRS 0x01 /* bit rate switch (second bitrate for payload data) */
|
||||
#define CANFD_ESI 0x02 /* error state indicator of the transmitting node */
|
||||
|
||||
/**
|
||||
* struct canfd_frame - CAN flexible data rate frame structure
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ extern int sysctl_extfrag_handler(struct ctl_table *table, int write,
|
|||
extern int fragmentation_index(struct zone *zone, unsigned int order);
|
||||
extern unsigned long try_to_compact_pages(struct zonelist *zonelist,
|
||||
int order, gfp_t gfp_mask, nodemask_t *mask,
|
||||
bool sync);
|
||||
bool sync, bool *contended);
|
||||
extern int compact_pgdat(pg_data_t *pgdat, int order);
|
||||
extern unsigned long compaction_suitable(struct zone *zone, int order);
|
||||
|
||||
|
|
@ -64,7 +64,7 @@ static inline bool compaction_deferred(struct zone *zone, int order)
|
|||
#else
|
||||
static inline unsigned long try_to_compact_pages(struct zonelist *zonelist,
|
||||
int order, gfp_t gfp_mask, nodemask_t *nodemask,
|
||||
bool sync)
|
||||
bool sync, bool *contended)
|
||||
{
|
||||
return COMPACT_CONTINUE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -503,6 +503,8 @@ extern u64 efi_mem_attribute (unsigned long phys_addr, unsigned long size);
|
|||
extern int __init efi_uart_console_only (void);
|
||||
extern void efi_initialize_iomem_resources(struct resource *code_resource,
|
||||
struct resource *data_resource, struct resource *bss_resource);
|
||||
extern unsigned long efi_get_time(void);
|
||||
extern int efi_set_rtc_mmss(unsigned long nowtime);
|
||||
extern void efi_reserve_boot_services(void);
|
||||
extern struct efi_memory_map memmap;
|
||||
|
||||
|
|
|
|||
|
|
@ -1491,7 +1491,6 @@ struct sb_writers {
|
|||
struct super_block {
|
||||
struct list_head s_list; /* Keep this first */
|
||||
dev_t s_dev; /* search index; _not_ kdev_t */
|
||||
unsigned char s_dirt;
|
||||
unsigned char s_blocksize_bits;
|
||||
unsigned long s_blocksize;
|
||||
loff_t s_maxbytes; /* Max file size */
|
||||
|
|
@ -1861,7 +1860,6 @@ struct super_operations {
|
|||
int (*drop_inode) (struct inode *);
|
||||
void (*evict_inode) (struct inode *);
|
||||
void (*put_super) (struct super_block *);
|
||||
void (*write_super) (struct super_block *);
|
||||
int (*sync_fs)(struct super_block *sb, int wait);
|
||||
int (*freeze_fs) (struct super_block *);
|
||||
int (*unfreeze_fs) (struct super_block *);
|
||||
|
|
@ -2397,7 +2395,6 @@ extern int vfs_fsync_range(struct file *file, loff_t start, loff_t end,
|
|||
int datasync);
|
||||
extern int vfs_fsync(struct file *file, int datasync);
|
||||
extern int generic_write_sync(struct file *file, loff_t pos, loff_t count);
|
||||
extern void sync_supers(void);
|
||||
extern void emergency_sync(void);
|
||||
extern void emergency_remount(void);
|
||||
#ifdef CONFIG_BLOCK
|
||||
|
|
|
|||
|
|
@ -306,9 +306,10 @@ extern void *perf_trace_buf_prepare(int size, unsigned short type,
|
|||
|
||||
static inline void
|
||||
perf_trace_buf_submit(void *raw_data, int size, int rctx, u64 addr,
|
||||
u64 count, struct pt_regs *regs, void *head)
|
||||
u64 count, struct pt_regs *regs, void *head,
|
||||
struct task_struct *task)
|
||||
{
|
||||
perf_tp_event(addr, count, raw_data, size, regs, head, rctx);
|
||||
perf_tp_event(addr, count, raw_data, size, regs, head, rctx, task);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -57,6 +57,9 @@
|
|||
*
|
||||
* 7.19
|
||||
* - add FUSE_FALLOCATE
|
||||
*
|
||||
* 7.20
|
||||
* - add FUSE_AUTO_INVAL_DATA
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_FUSE_H
|
||||
|
|
@ -88,7 +91,7 @@
|
|||
#define FUSE_KERNEL_VERSION 7
|
||||
|
||||
/** Minor version number of this interface */
|
||||
#define FUSE_KERNEL_MINOR_VERSION 19
|
||||
#define FUSE_KERNEL_MINOR_VERSION 20
|
||||
|
||||
/** The node ID of the root inode */
|
||||
#define FUSE_ROOT_ID 1
|
||||
|
|
@ -163,10 +166,19 @@ struct fuse_file_lock {
|
|||
/**
|
||||
* INIT request/reply flags
|
||||
*
|
||||
* FUSE_ASYNC_READ: asynchronous read requests
|
||||
* FUSE_POSIX_LOCKS: remote locking for POSIX file locks
|
||||
* FUSE_FILE_OPS: kernel sends file handle for fstat, etc... (not yet supported)
|
||||
* FUSE_ATOMIC_O_TRUNC: handles the O_TRUNC open flag in the filesystem
|
||||
* FUSE_EXPORT_SUPPORT: filesystem handles lookups of "." and ".."
|
||||
* FUSE_BIG_WRITES: filesystem can handle write size larger than 4kB
|
||||
* FUSE_DONT_MASK: don't apply umask to file mode on create operations
|
||||
* FUSE_SPLICE_WRITE: kernel supports splice write on the device
|
||||
* FUSE_SPLICE_MOVE: kernel supports splice move on the device
|
||||
* FUSE_SPLICE_READ: kernel supports splice read on the device
|
||||
* FUSE_FLOCK_LOCKS: remote locking for BSD style file locks
|
||||
* FUSE_HAS_IOCTL_DIR: kernel supports ioctl on directories
|
||||
* FUSE_AUTO_INVAL_DATA: automatically invalidate cached pages
|
||||
*/
|
||||
#define FUSE_ASYNC_READ (1 << 0)
|
||||
#define FUSE_POSIX_LOCKS (1 << 1)
|
||||
|
|
@ -175,7 +187,12 @@ struct fuse_file_lock {
|
|||
#define FUSE_EXPORT_SUPPORT (1 << 4)
|
||||
#define FUSE_BIG_WRITES (1 << 5)
|
||||
#define FUSE_DONT_MASK (1 << 6)
|
||||
#define FUSE_SPLICE_WRITE (1 << 7)
|
||||
#define FUSE_SPLICE_MOVE (1 << 8)
|
||||
#define FUSE_SPLICE_READ (1 << 9)
|
||||
#define FUSE_FLOCK_LOCKS (1 << 10)
|
||||
#define FUSE_HAS_IOCTL_DIR (1 << 11)
|
||||
#define FUSE_AUTO_INVAL_DATA (1 << 12)
|
||||
|
||||
/**
|
||||
* CUSE INIT request/reply flags
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@
|
|||
*
|
||||
* - bits 16-25 are the hardirq count (max # of nested hardirqs: 1024)
|
||||
* - bit 26 is the NMI_MASK
|
||||
* - bit 28 is the PREEMPT_ACTIVE flag
|
||||
* - bit 27 is the PREEMPT_ACTIVE flag
|
||||
*
|
||||
* PREEMPT_MASK: 0x000000ff
|
||||
* SOFTIRQ_MASK: 0x0000ff00
|
||||
|
|
|
|||
|
|
@ -96,21 +96,6 @@ static inline void team_netpoll_send_skb(struct team_port *port,
|
|||
}
|
||||
#endif
|
||||
|
||||
static inline int team_dev_queue_xmit(struct team *team, struct team_port *port,
|
||||
struct sk_buff *skb)
|
||||
{
|
||||
BUILD_BUG_ON(sizeof(skb->queue_mapping) !=
|
||||
sizeof(qdisc_skb_cb(skb)->slave_dev_queue_mapping));
|
||||
skb_set_queue_mapping(skb, qdisc_skb_cb(skb)->slave_dev_queue_mapping);
|
||||
|
||||
skb->dev = port->dev;
|
||||
if (unlikely(netpoll_tx_running(port->dev))) {
|
||||
team_netpoll_send_skb(port, skb);
|
||||
return 0;
|
||||
}
|
||||
return dev_queue_xmit(skb);
|
||||
}
|
||||
|
||||
struct team_mode_ops {
|
||||
int (*init)(struct team *team);
|
||||
void (*exit)(struct team *team);
|
||||
|
|
@ -200,6 +185,21 @@ struct team {
|
|||
long mode_priv[TEAM_MODE_PRIV_LONGS];
|
||||
};
|
||||
|
||||
static inline int team_dev_queue_xmit(struct team *team, struct team_port *port,
|
||||
struct sk_buff *skb)
|
||||
{
|
||||
BUILD_BUG_ON(sizeof(skb->queue_mapping) !=
|
||||
sizeof(qdisc_skb_cb(skb)->slave_dev_queue_mapping));
|
||||
skb_set_queue_mapping(skb, qdisc_skb_cb(skb)->slave_dev_queue_mapping);
|
||||
|
||||
skb->dev = port->dev;
|
||||
if (unlikely(netpoll_tx_running(team->dev))) {
|
||||
team_netpoll_send_skb(port, skb);
|
||||
return 0;
|
||||
}
|
||||
return dev_queue_xmit(skb);
|
||||
}
|
||||
|
||||
static inline struct hlist_head *team_port_index_hash(struct team *team,
|
||||
int port_index)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -87,6 +87,8 @@
|
|||
#define ADF4350_MAX_BANDSEL_CLK 125000 /* Hz */
|
||||
#define ADF4350_MAX_FREQ_REFIN 250000000 /* Hz */
|
||||
#define ADF4350_MAX_MODULUS 4095
|
||||
#define ADF4350_MAX_R_CNT 1023
|
||||
|
||||
|
||||
/**
|
||||
* struct adf4350_platform_data - platform specific information
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
#define LINUX_INPUT_EETI_TS_H
|
||||
|
||||
struct eeti_ts_platform_data {
|
||||
int irq_gpio;
|
||||
unsigned int irq_active_high;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
#define __LINUX_IOMMU_H
|
||||
|
||||
#include <linux/errno.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
#define IOMMU_READ (1)
|
||||
#define IOMMU_WRITE (2)
|
||||
|
|
@ -30,6 +31,7 @@ struct iommu_group;
|
|||
struct bus_type;
|
||||
struct device;
|
||||
struct iommu_domain;
|
||||
struct notifier_block;
|
||||
|
||||
/* iommu fault flags */
|
||||
#define IOMMU_FAULT_READ 0x0
|
||||
|
|
|
|||
|
|
@ -369,6 +369,7 @@ struct ipv6_pinfo {
|
|||
__u8 rcv_tclass;
|
||||
|
||||
__u32 dst_cookie;
|
||||
__u32 rx_dst_cookie;
|
||||
|
||||
struct ipv6_mc_socklist __rcu *ipv6_mc_list;
|
||||
struct ipv6_ac_socklist *ipv6_ac_list;
|
||||
|
|
|
|||
|
|
@ -349,6 +349,7 @@ enum {
|
|||
IRQCHIP_MASK_ON_SUSPEND = (1 << 2),
|
||||
IRQCHIP_ONOFFLINE_ENABLED = (1 << 3),
|
||||
IRQCHIP_SKIP_SET_WAKE = (1 << 4),
|
||||
IRQCHIP_ONESHOT_SAFE = (1 << 5),
|
||||
};
|
||||
|
||||
/* This include will go away once we isolated irq_desc usage to core code */
|
||||
|
|
|
|||
|
|
@ -1125,6 +1125,7 @@ extern int jbd2_journal_destroy (journal_t *);
|
|||
extern int jbd2_journal_recover (journal_t *journal);
|
||||
extern int jbd2_journal_wipe (journal_t *, int);
|
||||
extern int jbd2_journal_skip_recovery (journal_t *);
|
||||
extern void jbd2_journal_update_sb_errno(journal_t *);
|
||||
extern void jbd2_journal_update_sb_log_tail (journal_t *, tid_t,
|
||||
unsigned long, int);
|
||||
extern void __jbd2_journal_abort_hard (journal_t *);
|
||||
|
|
|
|||
|
|
@ -39,9 +39,6 @@
|
|||
# error Invalid value of HZ.
|
||||
#endif
|
||||
|
||||
/* LATCH is used in the interval timer and ftape setup. */
|
||||
#define LATCH ((CLOCK_TICK_RATE + HZ/2) / HZ) /* For divider */
|
||||
|
||||
/* Suppose we want to divide two numbers NOM and DEN: NOM/DEN, then we can
|
||||
* improve accuracy by shifting LSH bits, hence calculating:
|
||||
* (NOM << LSH) / DEN
|
||||
|
|
@ -54,18 +51,30 @@
|
|||
#define SH_DIV(NOM,DEN,LSH) ( (((NOM) / (DEN)) << (LSH)) \
|
||||
+ ((((NOM) % (DEN)) << (LSH)) + (DEN) / 2) / (DEN))
|
||||
|
||||
/* HZ is the requested value. ACTHZ is actual HZ ("<< 8" is for accuracy) */
|
||||
#define ACTHZ (SH_DIV (CLOCK_TICK_RATE, LATCH, 8))
|
||||
#ifdef CLOCK_TICK_RATE
|
||||
/* LATCH is used in the interval timer and ftape setup. */
|
||||
# define LATCH ((CLOCK_TICK_RATE + HZ/2) / HZ) /* For divider */
|
||||
|
||||
/* TICK_NSEC is the time between ticks in nsec assuming real ACTHZ */
|
||||
#define TICK_NSEC (SH_DIV (1000000UL * 1000, ACTHZ, 8))
|
||||
/*
|
||||
* HZ is the requested value. However the CLOCK_TICK_RATE may not allow
|
||||
* for exactly HZ. So SHIFTED_HZ is high res HZ ("<< 8" is for accuracy)
|
||||
*/
|
||||
# define SHIFTED_HZ (SH_DIV(CLOCK_TICK_RATE, LATCH, 8))
|
||||
#else
|
||||
# define SHIFTED_HZ (HZ << 8)
|
||||
#endif
|
||||
|
||||
/* TICK_NSEC is the time between ticks in nsec assuming SHIFTED_HZ */
|
||||
#define TICK_NSEC (SH_DIV(1000000UL * 1000, SHIFTED_HZ, 8))
|
||||
|
||||
/* TICK_USEC is the time between ticks in usec assuming fake USER_HZ */
|
||||
#define TICK_USEC ((1000000UL + USER_HZ/2) / USER_HZ)
|
||||
|
||||
/* TICK_USEC_TO_NSEC is the time between ticks in nsec assuming real ACTHZ and */
|
||||
/* a value TUSEC for TICK_USEC (can be set bij adjtimex) */
|
||||
#define TICK_USEC_TO_NSEC(TUSEC) (SH_DIV (TUSEC * USER_HZ * 1000, ACTHZ, 8))
|
||||
/*
|
||||
* TICK_USEC_TO_NSEC is the time between ticks in nsec assuming SHIFTED_HZ and
|
||||
* a value TUSEC for TICK_USEC (can be set bij adjtimex)
|
||||
*/
|
||||
#define TICK_USEC_TO_NSEC(TUSEC) (SH_DIV(TUSEC * USER_HZ * 1000, SHIFTED_HZ, 8))
|
||||
|
||||
/* some arch's have a small-data section that can be accessed register-relative
|
||||
* but that can only take up to, say, 4-byte variables. jiffies being part of
|
||||
|
|
|
|||
|
|
@ -75,8 +75,6 @@ extern const char *kdb_diemsg;
|
|||
#define KDB_FLAG_CATASTROPHIC (1 << 1) /* A catastrophic event has occurred */
|
||||
#define KDB_FLAG_CMD_INTERRUPT (1 << 2) /* Previous command was interrupted */
|
||||
#define KDB_FLAG_NOIPI (1 << 3) /* Do not send IPIs */
|
||||
#define KDB_FLAG_ONLY_DO_DUMP (1 << 4) /* Only do a dump, used when
|
||||
* kdb is off */
|
||||
#define KDB_FLAG_NO_CONSOLE (1 << 5) /* No console is available,
|
||||
* kdb is disabled */
|
||||
#define KDB_FLAG_NO_VT_CONSOLE (1 << 6) /* No VT console is available, do
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
#include <linux/bug.h>
|
||||
#include <linux/atomic.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/mutex.h>
|
||||
|
||||
struct kref {
|
||||
atomic_t refcount;
|
||||
|
|
@ -93,4 +94,21 @@ static inline int kref_put(struct kref *kref, void (*release)(struct kref *kref)
|
|||
{
|
||||
return kref_sub(kref, 1, release);
|
||||
}
|
||||
|
||||
static inline int kref_put_mutex(struct kref *kref,
|
||||
void (*release)(struct kref *kref),
|
||||
struct mutex *lock)
|
||||
{
|
||||
WARN_ON(release == NULL);
|
||||
if (unlikely(!atomic_add_unless(&kref->refcount, -1, 1))) {
|
||||
mutex_lock(lock);
|
||||
if (unlikely(!atomic_dec_and_test(&kref->refcount))) {
|
||||
mutex_unlock(lock);
|
||||
return 0;
|
||||
}
|
||||
release(kref);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endif /* _KREF_H_ */
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ struct pcap_subdev {
|
|||
struct pcap_platform_data {
|
||||
unsigned int irq_base;
|
||||
unsigned int config;
|
||||
int gpio;
|
||||
void (*init) (void *); /* board specific init */
|
||||
int num_subdevs;
|
||||
struct pcap_subdev *subdevs;
|
||||
|
|
|
|||
|
|
@ -953,7 +953,8 @@ struct net_device_ops {
|
|||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
void (*ndo_poll_controller)(struct net_device *dev);
|
||||
int (*ndo_netpoll_setup)(struct net_device *dev,
|
||||
struct netpoll_info *info);
|
||||
struct netpoll_info *info,
|
||||
gfp_t gfp);
|
||||
void (*ndo_netpoll_cleanup)(struct net_device *dev);
|
||||
#endif
|
||||
int (*ndo_set_vf_mac)(struct net_device *dev,
|
||||
|
|
@ -1300,6 +1301,8 @@ struct net_device {
|
|||
/* for setting kernel sock attribute on TCP connection setup */
|
||||
#define GSO_MAX_SIZE 65536
|
||||
unsigned int gso_max_size;
|
||||
#define GSO_MAX_SEGS 65535
|
||||
u16 gso_max_segs;
|
||||
|
||||
#ifdef CONFIG_DCB
|
||||
/* Data Center Bridging netlink ops */
|
||||
|
|
@ -1519,6 +1522,8 @@ struct packet_type {
|
|||
struct sk_buff **(*gro_receive)(struct sk_buff **head,
|
||||
struct sk_buff *skb);
|
||||
int (*gro_complete)(struct sk_buff *skb);
|
||||
bool (*id_match)(struct packet_type *ptype,
|
||||
struct sock *sk);
|
||||
void *af_packet_priv;
|
||||
struct list_head list;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -164,7 +164,7 @@ extern int ct_sip_parse_address_param(const struct nf_conn *ct, const char *dptr
|
|||
unsigned int dataoff, unsigned int datalen,
|
||||
const char *name,
|
||||
unsigned int *matchoff, unsigned int *matchlen,
|
||||
union nf_inet_addr *addr);
|
||||
union nf_inet_addr *addr, bool delim);
|
||||
extern int ct_sip_parse_numerical_param(const struct nf_conn *ct, const char *dptr,
|
||||
unsigned int off, unsigned int datalen,
|
||||
const char *name,
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ struct netpoll {
|
|||
u8 remote_mac[ETH_ALEN];
|
||||
|
||||
struct list_head rx; /* rx_np list element */
|
||||
struct rcu_head rcu;
|
||||
};
|
||||
|
||||
struct netpoll_info {
|
||||
|
|
@ -38,28 +39,40 @@ struct netpoll_info {
|
|||
struct delayed_work tx_work;
|
||||
|
||||
struct netpoll *netpoll;
|
||||
struct rcu_head rcu;
|
||||
};
|
||||
|
||||
void netpoll_send_udp(struct netpoll *np, const char *msg, int len);
|
||||
void netpoll_print_options(struct netpoll *np);
|
||||
int netpoll_parse_options(struct netpoll *np, char *opt);
|
||||
int __netpoll_setup(struct netpoll *np, struct net_device *ndev);
|
||||
int __netpoll_setup(struct netpoll *np, struct net_device *ndev, gfp_t gfp);
|
||||
int netpoll_setup(struct netpoll *np);
|
||||
int netpoll_trap(void);
|
||||
void netpoll_set_trap(int trap);
|
||||
void __netpoll_cleanup(struct netpoll *np);
|
||||
void __netpoll_free_rcu(struct netpoll *np);
|
||||
void netpoll_cleanup(struct netpoll *np);
|
||||
int __netpoll_rx(struct sk_buff *skb);
|
||||
int __netpoll_rx(struct sk_buff *skb, struct netpoll_info *npinfo);
|
||||
void netpoll_send_skb_on_dev(struct netpoll *np, struct sk_buff *skb,
|
||||
struct net_device *dev);
|
||||
static inline void netpoll_send_skb(struct netpoll *np, struct sk_buff *skb)
|
||||
{
|
||||
unsigned long flags;
|
||||
local_irq_save(flags);
|
||||
netpoll_send_skb_on_dev(np, skb, np->dev);
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifdef CONFIG_NETPOLL
|
||||
static inline bool netpoll_rx_on(struct sk_buff *skb)
|
||||
{
|
||||
struct netpoll_info *npinfo = rcu_dereference_bh(skb->dev->npinfo);
|
||||
|
||||
return npinfo && (!list_empty(&npinfo->rx_np) || npinfo->rx_flags);
|
||||
}
|
||||
|
||||
static inline bool netpoll_rx(struct sk_buff *skb)
|
||||
{
|
||||
struct netpoll_info *npinfo;
|
||||
|
|
@ -67,14 +80,14 @@ static inline bool netpoll_rx(struct sk_buff *skb)
|
|||
bool ret = false;
|
||||
|
||||
local_irq_save(flags);
|
||||
npinfo = rcu_dereference_bh(skb->dev->npinfo);
|
||||
|
||||
if (!npinfo || (list_empty(&npinfo->rx_np) && !npinfo->rx_flags))
|
||||
if (!netpoll_rx_on(skb))
|
||||
goto out;
|
||||
|
||||
npinfo = rcu_dereference_bh(skb->dev->npinfo);
|
||||
spin_lock(&npinfo->rx_lock);
|
||||
/* check rx_flags again with the lock held */
|
||||
if (npinfo->rx_flags && __netpoll_rx(skb))
|
||||
if (npinfo->rx_flags && __netpoll_rx(skb, npinfo))
|
||||
ret = true;
|
||||
spin_unlock(&npinfo->rx_lock);
|
||||
|
||||
|
|
@ -83,13 +96,6 @@ out:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static inline int netpoll_rx_on(struct sk_buff *skb)
|
||||
{
|
||||
struct netpoll_info *npinfo = rcu_dereference_bh(skb->dev->npinfo);
|
||||
|
||||
return npinfo && (!list_empty(&npinfo->rx_np) || npinfo->rx_flags);
|
||||
}
|
||||
|
||||
static inline int netpoll_receive_skb(struct sk_buff *skb)
|
||||
{
|
||||
if (!list_empty(&skb->dev->napi_list))
|
||||
|
|
@ -119,7 +125,7 @@ static inline void netpoll_poll_unlock(void *have)
|
|||
}
|
||||
}
|
||||
|
||||
static inline int netpoll_tx_running(struct net_device *dev)
|
||||
static inline bool netpoll_tx_running(struct net_device *dev)
|
||||
{
|
||||
return irqs_disabled();
|
||||
}
|
||||
|
|
@ -127,11 +133,11 @@ static inline int netpoll_tx_running(struct net_device *dev)
|
|||
#else
|
||||
static inline bool netpoll_rx(struct sk_buff *skb)
|
||||
{
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
static inline int netpoll_rx_on(struct sk_buff *skb)
|
||||
static inline bool netpoll_rx_on(struct sk_buff *skb)
|
||||
{
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
static inline int netpoll_receive_skb(struct sk_buff *skb)
|
||||
{
|
||||
|
|
@ -147,9 +153,9 @@ static inline void netpoll_poll_unlock(void *have)
|
|||
static inline void netpoll_netdev_init(struct net_device *dev)
|
||||
{
|
||||
}
|
||||
static inline int netpoll_tx_running(struct net_device *dev)
|
||||
static inline bool netpoll_tx_running(struct net_device *dev)
|
||||
{
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -69,6 +69,7 @@ struct nfs_pageio_descriptor {
|
|||
const struct nfs_pgio_completion_ops *pg_completion_ops;
|
||||
struct pnfs_layout_segment *pg_lseg;
|
||||
struct nfs_direct_req *pg_dreq;
|
||||
void *pg_layout_private;
|
||||
};
|
||||
|
||||
#define NFS_WBACK_BUSY(req) (test_bit(PG_BUSY,&(req)->wb_flags))
|
||||
|
|
|
|||
|
|
@ -1248,6 +1248,7 @@ struct nfs_pgio_header {
|
|||
void (*release) (struct nfs_pgio_header *hdr);
|
||||
const struct nfs_pgio_completion_ops *completion_ops;
|
||||
struct nfs_direct_req *dreq;
|
||||
void *layout_private;
|
||||
spinlock_t lock;
|
||||
/* fields protected by lock */
|
||||
int pnfs_error;
|
||||
|
|
|
|||
|
|
@ -190,10 +190,17 @@ extern struct device_node *of_get_parent(const struct device_node *node);
|
|||
extern struct device_node *of_get_next_parent(struct device_node *node);
|
||||
extern struct device_node *of_get_next_child(const struct device_node *node,
|
||||
struct device_node *prev);
|
||||
extern struct device_node *of_get_next_available_child(
|
||||
const struct device_node *node, struct device_node *prev);
|
||||
|
||||
#define for_each_child_of_node(parent, child) \
|
||||
for (child = of_get_next_child(parent, NULL); child != NULL; \
|
||||
child = of_get_next_child(parent, child))
|
||||
|
||||
#define for_each_available_child_of_node(parent, child) \
|
||||
for (child = of_get_next_available_child(parent, NULL); child != NULL; \
|
||||
child = of_get_next_available_child(parent, child))
|
||||
|
||||
static inline int of_get_child_count(const struct device_node *np)
|
||||
{
|
||||
struct device_node *child;
|
||||
|
|
|
|||
|
|
@ -1272,7 +1272,8 @@ static inline bool perf_paranoid_kernel(void)
|
|||
extern void perf_event_init(void);
|
||||
extern void perf_tp_event(u64 addr, u64 count, void *record,
|
||||
int entry_size, struct pt_regs *regs,
|
||||
struct hlist_head *head, int rctx);
|
||||
struct hlist_head *head, int rctx,
|
||||
struct task_struct *task);
|
||||
extern void perf_bp_event(struct perf_event *event, void *data);
|
||||
|
||||
#ifndef perf_misc_flags
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
/* This struct is private to the core and should be regarded as a cookie */
|
||||
struct pinctrl;
|
||||
struct pinctrl_state;
|
||||
struct device;
|
||||
|
||||
#ifdef CONFIG_PINCTRL
|
||||
|
||||
|
|
|
|||
|
|
@ -334,14 +334,6 @@ static inline void lockup_detector_init(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_LOCKUP_DETECTOR) && defined(CONFIG_SUSPEND)
|
||||
void lockup_detector_bootcpu_resume(void);
|
||||
#else
|
||||
static inline void lockup_detector_bootcpu_resume(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_DETECT_HUNG_TASK
|
||||
extern unsigned int sysctl_hung_task_panic;
|
||||
extern unsigned long sysctl_hung_task_check_count;
|
||||
|
|
|
|||
|
|
@ -1242,8 +1242,6 @@ static inline void security_free_mnt_opts(struct security_mnt_opts *opts)
|
|||
* Check that the @parent process has sufficient permission to trace the
|
||||
* current process before allowing the current process to present itself
|
||||
* to the @parent process for tracing.
|
||||
* The parent process will still have to undergo the ptrace_access_check
|
||||
* checks before it is allowed to trace this one.
|
||||
* @parent contains the task_struct structure for debugger process.
|
||||
* Return 0 if permission is granted.
|
||||
* @capget:
|
||||
|
|
|
|||
|
|
@ -144,8 +144,8 @@ static inline bool strstarts(const char *str, const char *prefix)
|
|||
{
|
||||
return strncmp(str, prefix, strlen(prefix)) == 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
extern size_t memweight(const void *ptr, size_t bytes);
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* _LINUX_STRING_H_ */
|
||||
|
|
|
|||
|
|
@ -232,7 +232,7 @@ struct timex {
|
|||
* estimated error = NTP dispersion.
|
||||
*/
|
||||
extern unsigned long tick_usec; /* USER_HZ period (usec) */
|
||||
extern unsigned long tick_nsec; /* ACTHZ period (nsec) */
|
||||
extern unsigned long tick_nsec; /* SHIFTED_HZ period (nsec) */
|
||||
|
||||
extern void ntp_init(void);
|
||||
extern void ntp_clear(void);
|
||||
|
|
|
|||
|
|
@ -164,6 +164,7 @@ int arch_update_cpu_topology(void);
|
|||
| 0*SD_SHARE_CPUPOWER \
|
||||
| 0*SD_SHARE_PKG_RESOURCES \
|
||||
| 0*SD_SERIALIZE \
|
||||
| 1*SD_PREFER_SIBLING \
|
||||
, \
|
||||
.last_balance = jiffies, \
|
||||
.balance_interval = 1, \
|
||||
|
|
|
|||
|
|
@ -104,7 +104,6 @@ static inline void wait_on_inode(struct inode *inode)
|
|||
wait_on_bit(&inode->i_state, __I_NEW, inode_wait, TASK_UNINTERRUPTIBLE);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* mm/page-writeback.c
|
||||
*/
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue