Linux 4.10-rc8
-----BEGIN PGP SIGNATURE----- iQEcBAABAgAGBQJYoM2fAAoJEHm+PkMAQRiGr9MH/izEAMri7rJ0QMc3ejt+WmD0 8pkZw3+MVn71z6cIEgpzk4QkEWJd5rfhkETCeCp7qQ9V6cDW1FDE9+0OmPjiphDt nnzKs7t7skEBwH5Mq5xygmIfkv+Z0QGHZ20gfQWY3F56Uxo+ARF88OBHBLKhqx3v 98C7YbMFLKBslKClA78NUEIdx0UfBaRqerlERx0Lfl9aoOrbBS6WI3iuREiylpih 9o7HTrwaGKkU4Kd6NdgJP2EyWPsd1LGalxBBjeDSpm5uokX6ALTdNXDZqcQscHjE RmTqJTGRdhSThXOpNnvUJvk9L442yuNRrVme/IqLpxMdHPyjaXR3FGSIDb2SfjY= =VMy8 -----END PGP SIGNATURE----- Merge tag 'v4.10-rc8' into perf/core, to pick up fixes Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
commit
210f400d68
266 changed files with 1939 additions and 1129 deletions
|
|
@ -9,18 +9,15 @@
|
|||
#ifndef KSYM_ALIGN
|
||||
#define KSYM_ALIGN 8
|
||||
#endif
|
||||
#ifndef KCRC_ALIGN
|
||||
#define KCRC_ALIGN 8
|
||||
#endif
|
||||
#else
|
||||
#define __put .long
|
||||
#ifndef KSYM_ALIGN
|
||||
#define KSYM_ALIGN 4
|
||||
#endif
|
||||
#endif
|
||||
#ifndef KCRC_ALIGN
|
||||
#define KCRC_ALIGN 4
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX
|
||||
#define KSYM(name) _##name
|
||||
|
|
@ -52,7 +49,11 @@ KSYM(__kstrtab_\name):
|
|||
.section ___kcrctab\sec+\name,"a"
|
||||
.balign KCRC_ALIGN
|
||||
KSYM(__kcrctab_\name):
|
||||
__put KSYM(__crc_\name)
|
||||
#if defined(CONFIG_MODULE_REL_CRCS)
|
||||
.long KSYM(__crc_\name) - .
|
||||
#else
|
||||
.long KSYM(__crc_\name)
|
||||
#endif
|
||||
.weak KSYM(__crc_\name)
|
||||
.previous
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -517,6 +517,7 @@ struct drm_device {
|
|||
struct drm_minor *control; /**< Control node */
|
||||
struct drm_minor *primary; /**< Primary node */
|
||||
struct drm_minor *render; /**< Render node */
|
||||
bool registered;
|
||||
|
||||
/* currently active master for this device. Protected by master_mutex */
|
||||
struct drm_master *master;
|
||||
|
|
|
|||
|
|
@ -381,6 +381,8 @@ struct drm_connector_funcs {
|
|||
* core drm connector interfaces. Everything added from this callback
|
||||
* should be unregistered in the early_unregister callback.
|
||||
*
|
||||
* This is called while holding drm_connector->mutex.
|
||||
*
|
||||
* Returns:
|
||||
*
|
||||
* 0 on success, or a negative error code on failure.
|
||||
|
|
@ -395,6 +397,8 @@ struct drm_connector_funcs {
|
|||
* late_register(). It is called from drm_connector_unregister(),
|
||||
* early in the driver unload sequence to disable userspace access
|
||||
* before data structures are torndown.
|
||||
*
|
||||
* This is called while holding drm_connector->mutex.
|
||||
*/
|
||||
void (*early_unregister)(struct drm_connector *connector);
|
||||
|
||||
|
|
@ -559,7 +563,6 @@ struct drm_cmdline_mode {
|
|||
* @interlace_allowed: can this connector handle interlaced modes?
|
||||
* @doublescan_allowed: can this connector handle doublescan?
|
||||
* @stereo_allowed: can this connector handle stereo modes?
|
||||
* @registered: is this connector exposed (registered) with userspace?
|
||||
* @modes: modes available on this connector (from fill_modes() + user)
|
||||
* @status: one of the drm_connector_status enums (connected, not, or unknown)
|
||||
* @probed_modes: list of modes derived directly from the display
|
||||
|
|
@ -607,6 +610,13 @@ struct drm_connector {
|
|||
|
||||
char *name;
|
||||
|
||||
/**
|
||||
* @mutex: Lock for general connector state, but currently only protects
|
||||
* @registered. Most of the connector state is still protected by the
|
||||
* mutex in &drm_mode_config.
|
||||
*/
|
||||
struct mutex mutex;
|
||||
|
||||
/**
|
||||
* @index: Compacted connector index, which matches the position inside
|
||||
* the mode_config.list for drivers not supporting hot-add/removing. Can
|
||||
|
|
@ -620,6 +630,10 @@ struct drm_connector {
|
|||
bool interlace_allowed;
|
||||
bool doublescan_allowed;
|
||||
bool stereo_allowed;
|
||||
/**
|
||||
* @registered: Is this connector exposed (registered) with userspace?
|
||||
* Protected by @mutex.
|
||||
*/
|
||||
bool registered;
|
||||
struct list_head modes; /* list of modes on this connector */
|
||||
|
||||
|
|
|
|||
|
|
@ -243,12 +243,10 @@ static inline int block_page_mkwrite_return(int err)
|
|||
{
|
||||
if (err == 0)
|
||||
return VM_FAULT_LOCKED;
|
||||
if (err == -EFAULT)
|
||||
if (err == -EFAULT || err == -EAGAIN)
|
||||
return VM_FAULT_NOPAGE;
|
||||
if (err == -ENOMEM)
|
||||
return VM_FAULT_OOM;
|
||||
if (err == -EAGAIN)
|
||||
return VM_FAULT_RETRY;
|
||||
/* -ENOSPC, -EDQUOT, -EIO ... */
|
||||
return VM_FAULT_SIGBUS;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -560,7 +560,7 @@ static inline void cpumask_copy(struct cpumask *dstp,
|
|||
static inline int cpumask_parse_user(const char __user *buf, int len,
|
||||
struct cpumask *dstp)
|
||||
{
|
||||
return bitmap_parse_user(buf, len, cpumask_bits(dstp), nr_cpu_ids);
|
||||
return bitmap_parse_user(buf, len, cpumask_bits(dstp), nr_cpumask_bits);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -575,7 +575,7 @@ static inline int cpumask_parselist_user(const char __user *buf, int len,
|
|||
struct cpumask *dstp)
|
||||
{
|
||||
return bitmap_parselist_user(buf, len, cpumask_bits(dstp),
|
||||
nr_cpu_ids);
|
||||
nr_cpumask_bits);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -590,7 +590,7 @@ static inline int cpumask_parse(const char *buf, struct cpumask *dstp)
|
|||
char *nl = strchr(buf, '\n');
|
||||
unsigned int len = nl ? (unsigned int)(nl - buf) : strlen(buf);
|
||||
|
||||
return bitmap_parse(buf, len, cpumask_bits(dstp), nr_cpu_ids);
|
||||
return bitmap_parse(buf, len, cpumask_bits(dstp), nr_cpumask_bits);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -602,7 +602,7 @@ static inline int cpumask_parse(const char *buf, struct cpumask *dstp)
|
|||
*/
|
||||
static inline int cpulist_parse(const char *buf, struct cpumask *dstp)
|
||||
{
|
||||
return bitmap_parselist(buf, cpumask_bits(dstp), nr_cpu_ids);
|
||||
return bitmap_parselist(buf, cpumask_bits(dstp), nr_cpumask_bits);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -43,12 +43,19 @@ extern struct module __this_module;
|
|||
#ifdef CONFIG_MODVERSIONS
|
||||
/* Mark the CRC weak since genksyms apparently decides not to
|
||||
* generate a checksums for some symbols */
|
||||
#if defined(CONFIG_MODULE_REL_CRCS)
|
||||
#define __CRC_SYMBOL(sym, sec) \
|
||||
extern __visible void *__crc_##sym __attribute__((weak)); \
|
||||
static const unsigned long __kcrctab_##sym \
|
||||
__used \
|
||||
__attribute__((section("___kcrctab" sec "+" #sym), used)) \
|
||||
= (unsigned long) &__crc_##sym;
|
||||
asm(" .section \"___kcrctab" sec "+" #sym "\", \"a\" \n" \
|
||||
" .weak " VMLINUX_SYMBOL_STR(__crc_##sym) " \n" \
|
||||
" .long " VMLINUX_SYMBOL_STR(__crc_##sym) " - . \n" \
|
||||
" .previous \n");
|
||||
#else
|
||||
#define __CRC_SYMBOL(sym, sec) \
|
||||
asm(" .section \"___kcrctab" sec "+" #sym "\", \"a\" \n" \
|
||||
" .weak " VMLINUX_SYMBOL_STR(__crc_##sym) " \n" \
|
||||
" .long " VMLINUX_SYMBOL_STR(__crc_##sym) " \n" \
|
||||
" .previous \n");
|
||||
#endif
|
||||
#else
|
||||
#define __CRC_SYMBOL(sym, sec)
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -128,6 +128,7 @@ struct hv_ring_buffer_info {
|
|||
u32 ring_data_startoffset;
|
||||
u32 priv_write_index;
|
||||
u32 priv_read_index;
|
||||
u32 cached_read_index;
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
@ -180,6 +181,19 @@ static inline u32 hv_get_bytes_to_write(struct hv_ring_buffer_info *rbi)
|
|||
return write;
|
||||
}
|
||||
|
||||
static inline u32 hv_get_cached_bytes_to_write(
|
||||
const struct hv_ring_buffer_info *rbi)
|
||||
{
|
||||
u32 read_loc, write_loc, dsize, write;
|
||||
|
||||
dsize = rbi->ring_datasize;
|
||||
read_loc = rbi->cached_read_index;
|
||||
write_loc = rbi->ring_buffer->write_index;
|
||||
|
||||
write = write_loc >= read_loc ? dsize - (write_loc - read_loc) :
|
||||
read_loc - write_loc;
|
||||
return write;
|
||||
}
|
||||
/*
|
||||
* VMBUS version is 32 bit entity broken up into
|
||||
* two 16 bit quantities: major_number. minor_number.
|
||||
|
|
@ -1488,7 +1502,7 @@ hv_get_ring_buffer(struct hv_ring_buffer_info *ring_info)
|
|||
|
||||
static inline void hv_signal_on_read(struct vmbus_channel *channel)
|
||||
{
|
||||
u32 cur_write_sz;
|
||||
u32 cur_write_sz, cached_write_sz;
|
||||
u32 pending_sz;
|
||||
struct hv_ring_buffer_info *rbi = &channel->inbound;
|
||||
|
||||
|
|
@ -1512,12 +1526,24 @@ static inline void hv_signal_on_read(struct vmbus_channel *channel)
|
|||
|
||||
cur_write_sz = hv_get_bytes_to_write(rbi);
|
||||
|
||||
if (cur_write_sz >= pending_sz)
|
||||
if (cur_write_sz < pending_sz)
|
||||
return;
|
||||
|
||||
cached_write_sz = hv_get_cached_bytes_to_write(rbi);
|
||||
if (cached_write_sz < pending_sz)
|
||||
vmbus_setevent(channel);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
static inline void
|
||||
init_cached_read_index(struct vmbus_channel *channel)
|
||||
{
|
||||
struct hv_ring_buffer_info *rbi = &channel->inbound;
|
||||
|
||||
rbi->cached_read_index = rbi->ring_buffer->read_index;
|
||||
}
|
||||
|
||||
/*
|
||||
* An API to support in-place processing of incoming VMBUS packets.
|
||||
*/
|
||||
|
|
@ -1569,6 +1595,8 @@ static inline void put_pkt_raw(struct vmbus_channel *channel,
|
|||
* This call commits the read index and potentially signals the host.
|
||||
* Here is the pattern for using the "in-place" consumption APIs:
|
||||
*
|
||||
* init_cached_read_index();
|
||||
*
|
||||
* while (get_next_pkt_raw() {
|
||||
* process the packet "in-place";
|
||||
* put_pkt_raw();
|
||||
|
|
|
|||
|
|
@ -184,6 +184,7 @@ struct irq_data {
|
|||
*
|
||||
* IRQD_TRIGGER_MASK - Mask for the trigger type bits
|
||||
* IRQD_SETAFFINITY_PENDING - Affinity setting is pending
|
||||
* IRQD_ACTIVATED - Interrupt has already been activated
|
||||
* IRQD_NO_BALANCING - Balancing disabled for this IRQ
|
||||
* IRQD_PER_CPU - Interrupt is per cpu
|
||||
* IRQD_AFFINITY_SET - Interrupt affinity was set
|
||||
|
|
@ -202,6 +203,7 @@ struct irq_data {
|
|||
enum {
|
||||
IRQD_TRIGGER_MASK = 0xf,
|
||||
IRQD_SETAFFINITY_PENDING = (1 << 8),
|
||||
IRQD_ACTIVATED = (1 << 9),
|
||||
IRQD_NO_BALANCING = (1 << 10),
|
||||
IRQD_PER_CPU = (1 << 11),
|
||||
IRQD_AFFINITY_SET = (1 << 12),
|
||||
|
|
@ -312,6 +314,21 @@ static inline bool irqd_affinity_is_managed(struct irq_data *d)
|
|||
return __irqd_to_state(d) & IRQD_AFFINITY_MANAGED;
|
||||
}
|
||||
|
||||
static inline bool irqd_is_activated(struct irq_data *d)
|
||||
{
|
||||
return __irqd_to_state(d) & IRQD_ACTIVATED;
|
||||
}
|
||||
|
||||
static inline void irqd_set_activated(struct irq_data *d)
|
||||
{
|
||||
__irqd_to_state(d) |= IRQD_ACTIVATED;
|
||||
}
|
||||
|
||||
static inline void irqd_clr_activated(struct irq_data *d)
|
||||
{
|
||||
__irqd_to_state(d) &= ~IRQD_ACTIVATED;
|
||||
}
|
||||
|
||||
#undef __irqd_to_state
|
||||
|
||||
static inline irq_hw_number_t irqd_to_hwirq(struct irq_data *d)
|
||||
|
|
|
|||
|
|
@ -203,6 +203,17 @@ unsigned long __rounddown_pow_of_two(unsigned long n)
|
|||
* ... and so on.
|
||||
*/
|
||||
|
||||
#define order_base_2(n) ilog2(roundup_pow_of_two(n))
|
||||
static inline __attribute_const__
|
||||
int __order_base_2(unsigned long n)
|
||||
{
|
||||
return n > 1 ? ilog2(n - 1) + 1 : 0;
|
||||
}
|
||||
|
||||
#define order_base_2(n) \
|
||||
( \
|
||||
__builtin_constant_p(n) ? ( \
|
||||
((n) == 0 || (n) == 1) ? 0 : \
|
||||
ilog2((n) - 1) + 1) : \
|
||||
__order_base_2(n) \
|
||||
)
|
||||
#endif /* _LINUX_LOG2_H */
|
||||
|
|
|
|||
|
|
@ -85,7 +85,8 @@ extern int zone_grow_waitqueues(struct zone *zone, unsigned long nr_pages);
|
|||
extern int add_one_highpage(struct page *page, int pfn, int bad_ppro);
|
||||
/* VM interface that may be used by firmware interface */
|
||||
extern int online_pages(unsigned long, unsigned long, int);
|
||||
extern int test_pages_in_a_zone(unsigned long, unsigned long);
|
||||
extern int test_pages_in_a_zone(unsigned long start_pfn, unsigned long end_pfn,
|
||||
unsigned long *valid_start, unsigned long *valid_end);
|
||||
extern void __offline_isolated_pages(unsigned long, unsigned long);
|
||||
|
||||
typedef void (*online_page_callback_t)(struct page *page);
|
||||
|
|
|
|||
|
|
@ -346,7 +346,7 @@ struct module {
|
|||
|
||||
/* Exported symbols */
|
||||
const struct kernel_symbol *syms;
|
||||
const unsigned long *crcs;
|
||||
const s32 *crcs;
|
||||
unsigned int num_syms;
|
||||
|
||||
/* Kernel parameters. */
|
||||
|
|
@ -359,18 +359,18 @@ struct module {
|
|||
/* GPL-only exported symbols. */
|
||||
unsigned int num_gpl_syms;
|
||||
const struct kernel_symbol *gpl_syms;
|
||||
const unsigned long *gpl_crcs;
|
||||
const s32 *gpl_crcs;
|
||||
|
||||
#ifdef CONFIG_UNUSED_SYMBOLS
|
||||
/* unused exported symbols. */
|
||||
const struct kernel_symbol *unused_syms;
|
||||
const unsigned long *unused_crcs;
|
||||
const s32 *unused_crcs;
|
||||
unsigned int num_unused_syms;
|
||||
|
||||
/* GPL-only, unused exported symbols. */
|
||||
unsigned int num_unused_gpl_syms;
|
||||
const struct kernel_symbol *unused_gpl_syms;
|
||||
const unsigned long *unused_gpl_crcs;
|
||||
const s32 *unused_gpl_crcs;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_MODULE_SIG
|
||||
|
|
@ -382,7 +382,7 @@ struct module {
|
|||
|
||||
/* symbols that will be GPL-only in the near future. */
|
||||
const struct kernel_symbol *gpl_future_syms;
|
||||
const unsigned long *gpl_future_crcs;
|
||||
const s32 *gpl_future_crcs;
|
||||
unsigned int num_gpl_future_syms;
|
||||
|
||||
/* Exception table */
|
||||
|
|
@ -523,7 +523,7 @@ struct module *find_module(const char *name);
|
|||
|
||||
struct symsearch {
|
||||
const struct kernel_symbol *start, *stop;
|
||||
const unsigned long *crcs;
|
||||
const s32 *crcs;
|
||||
enum {
|
||||
NOT_GPL_ONLY,
|
||||
GPL_ONLY,
|
||||
|
|
@ -539,7 +539,7 @@ struct symsearch {
|
|||
*/
|
||||
const struct kernel_symbol *find_symbol(const char *name,
|
||||
struct module **owner,
|
||||
const unsigned long **crc,
|
||||
const s32 **crc,
|
||||
bool gplok,
|
||||
bool warn);
|
||||
|
||||
|
|
|
|||
|
|
@ -1511,6 +1511,7 @@ enum netdev_priv_flags {
|
|||
* @max_mtu: Interface Maximum MTU value
|
||||
* @type: Interface hardware type
|
||||
* @hard_header_len: Maximum hardware header length.
|
||||
* @min_header_len: Minimum hardware header length
|
||||
*
|
||||
* @needed_headroom: Extra headroom the hardware may need, but not in all
|
||||
* cases can this be guaranteed
|
||||
|
|
@ -1728,6 +1729,7 @@ struct net_device {
|
|||
unsigned int max_mtu;
|
||||
unsigned short type;
|
||||
unsigned short hard_header_len;
|
||||
unsigned short min_header_len;
|
||||
|
||||
unsigned short needed_headroom;
|
||||
unsigned short needed_tailroom;
|
||||
|
|
@ -2694,6 +2696,8 @@ static inline bool dev_validate_header(const struct net_device *dev,
|
|||
{
|
||||
if (likely(len >= dev->hard_header_len))
|
||||
return true;
|
||||
if (len < dev->min_header_len)
|
||||
return false;
|
||||
|
||||
if (capable(CAP_SYS_RAWIO)) {
|
||||
memset(ll_header + len, 0, dev->hard_header_len - len);
|
||||
|
|
|
|||
|
|
@ -309,6 +309,10 @@ static inline int cipso_v4_validate(const struct sk_buff *skb,
|
|||
}
|
||||
|
||||
for (opt_iter = 6; opt_iter < opt_len;) {
|
||||
if (opt_iter + 1 == opt_len) {
|
||||
err_offset = opt_iter;
|
||||
goto out;
|
||||
}
|
||||
tag_len = opt[opt_iter + 1];
|
||||
if ((tag_len == 0) || (tag_len > (opt_len - opt_iter))) {
|
||||
err_offset = opt_iter + 1;
|
||||
|
|
|
|||
|
|
@ -178,7 +178,10 @@ static inline int lwtunnel_valid_encap_type(u16 encap_type)
|
|||
}
|
||||
static inline int lwtunnel_valid_encap_type_attr(struct nlattr *attr, int len)
|
||||
{
|
||||
return -EOPNOTSUPP;
|
||||
/* return 0 since we are not walking attr looking for
|
||||
* RTA_ENCAP_TYPE attribute on nexthops.
|
||||
*/
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int lwtunnel_build_state(struct net_device *dev, u16 encap_type,
|
||||
|
|
|
|||
|
|
@ -2006,7 +2006,9 @@ void sk_reset_timer(struct sock *sk, struct timer_list *timer,
|
|||
void sk_stop_timer(struct sock *sk, struct timer_list *timer);
|
||||
|
||||
int __sk_queue_drop_skb(struct sock *sk, struct sk_buff *skb,
|
||||
unsigned int flags);
|
||||
unsigned int flags,
|
||||
void (*destructor)(struct sock *sk,
|
||||
struct sk_buff *skb));
|
||||
int __sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb);
|
||||
int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb);
|
||||
|
||||
|
|
|
|||
|
|
@ -538,6 +538,7 @@ struct se_node_acl {
|
|||
char initiatorname[TRANSPORT_IQN_LEN];
|
||||
/* Used to signal demo mode created ACL, disabled by default */
|
||||
bool dynamic_node_acl;
|
||||
bool dynamic_stop;
|
||||
u32 queue_depth;
|
||||
u32 acl_index;
|
||||
enum target_prot_type saved_prot_type;
|
||||
|
|
|
|||
|
|
@ -23,14 +23,12 @@ struct ipv6_sr_hdr {
|
|||
__u8 type;
|
||||
__u8 segments_left;
|
||||
__u8 first_segment;
|
||||
__u8 flag_1;
|
||||
__u8 flag_2;
|
||||
__u8 reserved;
|
||||
__u8 flags;
|
||||
__u16 reserved;
|
||||
|
||||
struct in6_addr segments[0];
|
||||
};
|
||||
|
||||
#define SR6_FLAG1_CLEANUP (1 << 7)
|
||||
#define SR6_FLAG1_PROTECTED (1 << 6)
|
||||
#define SR6_FLAG1_OAM (1 << 5)
|
||||
#define SR6_FLAG1_ALERT (1 << 4)
|
||||
|
|
@ -42,8 +40,7 @@ struct ipv6_sr_hdr {
|
|||
#define SR6_TLV_PADDING 4
|
||||
#define SR6_TLV_HMAC 5
|
||||
|
||||
#define sr_has_cleanup(srh) ((srh)->flag_1 & SR6_FLAG1_CLEANUP)
|
||||
#define sr_has_hmac(srh) ((srh)->flag_1 & SR6_FLAG1_HMAC)
|
||||
#define sr_has_hmac(srh) ((srh)->flags & SR6_FLAG1_HMAC)
|
||||
|
||||
struct sr6_tlv {
|
||||
__u8 type;
|
||||
|
|
|
|||
|
|
@ -37,7 +37,6 @@
|
|||
#define IB_USER_VERBS_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <rdma/ib_verbs.h>
|
||||
|
||||
/*
|
||||
* Increment this value if any changes that break userspace ABI
|
||||
|
|
@ -548,11 +547,17 @@ enum {
|
|||
};
|
||||
|
||||
enum {
|
||||
IB_USER_LEGACY_LAST_QP_ATTR_MASK = IB_QP_DEST_QPN
|
||||
/*
|
||||
* This value is equal to IB_QP_DEST_QPN.
|
||||
*/
|
||||
IB_USER_LEGACY_LAST_QP_ATTR_MASK = 1ULL << 20,
|
||||
};
|
||||
|
||||
enum {
|
||||
IB_USER_LAST_QP_ATTR_MASK = IB_QP_RATE_LIMIT
|
||||
/*
|
||||
* This value is equal to IB_QP_RATE_LIMIT.
|
||||
*/
|
||||
IB_USER_LAST_QP_ATTR_MASK = 1ULL << 25,
|
||||
};
|
||||
|
||||
struct ib_uverbs_ex_create_qp {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue