Linux 5.6
-----BEGIN PGP SIGNATURE----- iQFSBAABCAA8FiEEq68RxlopcLEwq+PEeb4+QwBBGIYFAl6BIG4eHHRvcnZhbGRz QGxpbnV4LWZvdW5kYXRpb24ub3JnAAoJEHm+PkMAQRiGlHUH/RCFve2sfHRPjRW+ xR5SaLVAw6XKvtKBq7yvKmHEwqNJnL79IHyqqtSrtfFr2FfaH/KvYiCbbAezvSrM np0udGu7STKGd21CWuyEZJudyhXkOwMRNiFiCXWp7rs35oh8T0TpJxMzo2Nc1nLk JFQPqAP6OSvq4IkWEywKQI+Au3Z1IBf83xVjZ1s+MKPQHYD49x2hc4cQntL5/cnm a3DoR2iBkYiGZCZ9dDqAqJTnMQIiCbACdZXgGjNRUpdyA/dtAjsMl11NPYHm8TA2 3AHBupAK50WBZGad6xv2qKQyScsmoJG2mv92QjlOFz0Tpiu6rLnDlLYREDVB6YH6 qbLDsc8= =XEIU -----END PGP SIGNATURE----- Merge v5.6 into drm-next msm needed rc6, so I just went and merged release (msm has been in drm-next outside of this tree) Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
commit
5fc0df93fc
666 changed files with 6439 additions and 2887 deletions
|
|
@ -160,6 +160,7 @@ static inline void copy_map_value(struct bpf_map *map, void *dst, void *src)
|
|||
}
|
||||
void copy_map_value_locked(struct bpf_map *map, void *dst, void *src,
|
||||
bool lock_src);
|
||||
int bpf_obj_name_cpy(char *dst, const char *src, unsigned int size);
|
||||
|
||||
struct bpf_offload_dev;
|
||||
struct bpf_offloaded_map;
|
||||
|
|
|
|||
|
|
@ -175,9 +175,10 @@ struct ceph_msg_data {
|
|||
#endif /* CONFIG_BLOCK */
|
||||
struct ceph_bvec_iter bvec_pos;
|
||||
struct {
|
||||
struct page **pages; /* NOT OWNER. */
|
||||
struct page **pages;
|
||||
size_t length; /* total # bytes */
|
||||
unsigned int alignment; /* first page */
|
||||
bool own_pages;
|
||||
};
|
||||
struct ceph_pagelist *pagelist;
|
||||
};
|
||||
|
|
@ -356,8 +357,8 @@ extern void ceph_con_keepalive(struct ceph_connection *con);
|
|||
extern bool ceph_con_keepalive_expired(struct ceph_connection *con,
|
||||
unsigned long interval);
|
||||
|
||||
extern void ceph_msg_data_add_pages(struct ceph_msg *msg, struct page **pages,
|
||||
size_t length, size_t alignment);
|
||||
void ceph_msg_data_add_pages(struct ceph_msg *msg, struct page **pages,
|
||||
size_t length, size_t alignment, bool own_pages);
|
||||
extern void ceph_msg_data_add_pagelist(struct ceph_msg *msg,
|
||||
struct ceph_pagelist *pagelist);
|
||||
#ifdef CONFIG_BLOCK
|
||||
|
|
|
|||
|
|
@ -37,6 +37,9 @@ int ceph_spg_compare(const struct ceph_spg *lhs, const struct ceph_spg *rhs);
|
|||
#define CEPH_POOL_FLAG_HASHPSPOOL (1ULL << 0) /* hash pg seed and pool id
|
||||
together */
|
||||
#define CEPH_POOL_FLAG_FULL (1ULL << 1) /* pool is full */
|
||||
#define CEPH_POOL_FLAG_FULL_QUOTA (1ULL << 10) /* pool ran out of quota,
|
||||
will set FULL too */
|
||||
#define CEPH_POOL_FLAG_NEARFULL (1ULL << 11) /* pool is nearfull */
|
||||
|
||||
struct ceph_pg_pool_info {
|
||||
struct rb_node node;
|
||||
|
|
@ -304,5 +307,6 @@ extern struct ceph_pg_pool_info *ceph_pg_pool_by_id(struct ceph_osdmap *map,
|
|||
|
||||
extern const char *ceph_pg_pool_name_by_id(struct ceph_osdmap *map, u64 id);
|
||||
extern int ceph_pg_poolid_by_name(struct ceph_osdmap *map, const char *name);
|
||||
u64 ceph_pg_pool_flags(struct ceph_osdmap *map, u64 id);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -143,8 +143,10 @@ extern const char *ceph_osd_state_name(int s);
|
|||
/*
|
||||
* osd map flag bits
|
||||
*/
|
||||
#define CEPH_OSDMAP_NEARFULL (1<<0) /* sync writes (near ENOSPC) */
|
||||
#define CEPH_OSDMAP_FULL (1<<1) /* no data writes (ENOSPC) */
|
||||
#define CEPH_OSDMAP_NEARFULL (1<<0) /* sync writes (near ENOSPC),
|
||||
not set since ~luminous */
|
||||
#define CEPH_OSDMAP_FULL (1<<1) /* no data writes (ENOSPC),
|
||||
not set since ~luminous */
|
||||
#define CEPH_OSDMAP_PAUSERD (1<<2) /* pause all reads */
|
||||
#define CEPH_OSDMAP_PAUSEWR (1<<3) /* pause all writes */
|
||||
#define CEPH_OSDMAP_PAUSEREC (1<<4) /* pause recovery */
|
||||
|
|
|
|||
|
|
@ -62,6 +62,7 @@ struct css_task_iter {
|
|||
struct list_head *mg_tasks_head;
|
||||
struct list_head *dying_tasks_head;
|
||||
|
||||
struct list_head *cur_tasks_head;
|
||||
struct css_set *cur_cset;
|
||||
struct css_set *cur_dcset;
|
||||
struct task_struct *cur_task;
|
||||
|
|
|
|||
|
|
@ -522,9 +522,9 @@ struct clk *clk_register_gate(struct device *dev, const char *name,
|
|||
* @clk_gate_flags: gate-specific flags for this clock
|
||||
* @lock: shared register lock for this clock
|
||||
*/
|
||||
#define clk_hw_register_gate_parent_hw(dev, name, parent_name, flags, reg, \
|
||||
#define clk_hw_register_gate_parent_hw(dev, name, parent_hw, flags, reg, \
|
||||
bit_idx, clk_gate_flags, lock) \
|
||||
__clk_hw_register_gate((dev), NULL, (name), (parent_name), NULL, \
|
||||
__clk_hw_register_gate((dev), NULL, (name), NULL, (parent_hw), \
|
||||
NULL, (flags), (reg), (bit_idx), \
|
||||
(clk_gate_flags), (lock))
|
||||
/**
|
||||
|
|
@ -539,10 +539,10 @@ struct clk *clk_register_gate(struct device *dev, const char *name,
|
|||
* @clk_gate_flags: gate-specific flags for this clock
|
||||
* @lock: shared register lock for this clock
|
||||
*/
|
||||
#define clk_hw_register_gate_parent_data(dev, name, parent_name, flags, reg, \
|
||||
#define clk_hw_register_gate_parent_data(dev, name, parent_data, flags, reg, \
|
||||
bit_idx, clk_gate_flags, lock) \
|
||||
__clk_hw_register_gate((dev), NULL, (name), (parent_name), NULL, \
|
||||
NULL, (flags), (reg), (bit_idx), \
|
||||
__clk_hw_register_gate((dev), NULL, (name), NULL, NULL, (parent_data), \
|
||||
(flags), (reg), (bit_idx), \
|
||||
(clk_gate_flags), (lock))
|
||||
void clk_unregister_gate(struct clk *clk);
|
||||
void clk_hw_unregister_gate(struct clk_hw *hw);
|
||||
|
|
|
|||
|
|
@ -69,19 +69,23 @@ struct dmar_pci_notify_info {
|
|||
extern struct rw_semaphore dmar_global_lock;
|
||||
extern struct list_head dmar_drhd_units;
|
||||
|
||||
#define for_each_drhd_unit(drhd) \
|
||||
list_for_each_entry_rcu(drhd, &dmar_drhd_units, list)
|
||||
#define for_each_drhd_unit(drhd) \
|
||||
list_for_each_entry_rcu(drhd, &dmar_drhd_units, list, \
|
||||
dmar_rcu_check())
|
||||
|
||||
#define for_each_active_drhd_unit(drhd) \
|
||||
list_for_each_entry_rcu(drhd, &dmar_drhd_units, list) \
|
||||
list_for_each_entry_rcu(drhd, &dmar_drhd_units, list, \
|
||||
dmar_rcu_check()) \
|
||||
if (drhd->ignored) {} else
|
||||
|
||||
#define for_each_active_iommu(i, drhd) \
|
||||
list_for_each_entry_rcu(drhd, &dmar_drhd_units, list) \
|
||||
list_for_each_entry_rcu(drhd, &dmar_drhd_units, list, \
|
||||
dmar_rcu_check()) \
|
||||
if (i=drhd->iommu, drhd->ignored) {} else
|
||||
|
||||
#define for_each_iommu(i, drhd) \
|
||||
list_for_each_entry_rcu(drhd, &dmar_drhd_units, list) \
|
||||
list_for_each_entry_rcu(drhd, &dmar_drhd_units, list, \
|
||||
dmar_rcu_check()) \
|
||||
if (i=drhd->iommu, 0) {} else
|
||||
|
||||
static inline bool dmar_rcu_check(void)
|
||||
|
|
|
|||
|
|
@ -28,8 +28,6 @@ int dsa_8021q_rx_switch_id(u16 vid);
|
|||
|
||||
int dsa_8021q_rx_source_port(u16 vid);
|
||||
|
||||
struct sk_buff *dsa_8021q_remove_header(struct sk_buff *skb);
|
||||
|
||||
#else
|
||||
|
||||
int dsa_port_setup_8021q_tagging(struct dsa_switch *ds, int index,
|
||||
|
|
@ -64,11 +62,6 @@ int dsa_8021q_rx_source_port(u16 vid)
|
|||
return 0;
|
||||
}
|
||||
|
||||
struct sk_buff *dsa_8021q_remove_header(struct sk_buff *skb)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#endif /* IS_ENABLED(CONFIG_NET_DSA_TAG_8021Q) */
|
||||
|
||||
#endif /* _NET_DSA_8021Q_H */
|
||||
|
|
|
|||
|
|
@ -85,6 +85,7 @@ extern int f_dupfd(unsigned int from, struct file *file, unsigned flags);
|
|||
extern int replace_fd(unsigned fd, struct file *file, unsigned flags);
|
||||
extern void set_close_on_exec(unsigned int fd, int flag);
|
||||
extern bool get_close_on_exec(unsigned int fd);
|
||||
extern int __get_unused_fd_flags(unsigned flags, unsigned long nofile);
|
||||
extern int get_unused_fd_flags(unsigned flags);
|
||||
extern void put_unused_fd(unsigned int fd);
|
||||
|
||||
|
|
|
|||
|
|
@ -698,6 +698,7 @@ struct inode {
|
|||
struct rcu_head i_rcu;
|
||||
};
|
||||
atomic64_t i_version;
|
||||
atomic64_t i_sequence; /* see futex */
|
||||
atomic_t i_count;
|
||||
atomic_t i_dio_count;
|
||||
atomic_t i_writecount;
|
||||
|
|
|
|||
|
|
@ -31,23 +31,26 @@ struct task_struct;
|
|||
|
||||
union futex_key {
|
||||
struct {
|
||||
u64 i_seq;
|
||||
unsigned long pgoff;
|
||||
struct inode *inode;
|
||||
int offset;
|
||||
unsigned int offset;
|
||||
} shared;
|
||||
struct {
|
||||
union {
|
||||
struct mm_struct *mm;
|
||||
u64 __tmp;
|
||||
};
|
||||
unsigned long address;
|
||||
struct mm_struct *mm;
|
||||
int offset;
|
||||
unsigned int offset;
|
||||
} private;
|
||||
struct {
|
||||
u64 ptr;
|
||||
unsigned long word;
|
||||
void *ptr;
|
||||
int offset;
|
||||
unsigned int offset;
|
||||
} both;
|
||||
};
|
||||
|
||||
#define FUTEX_KEY_INIT (union futex_key) { .both = { .ptr = NULL } }
|
||||
#define FUTEX_KEY_INIT (union futex_key) { .both = { .ptr = 0ULL } }
|
||||
|
||||
#ifdef CONFIG_FUTEX
|
||||
enum {
|
||||
|
|
|
|||
|
|
@ -245,18 +245,6 @@ static inline bool disk_part_scan_enabled(struct gendisk *disk)
|
|||
!(disk->flags & GENHD_FL_NO_PART_SCAN);
|
||||
}
|
||||
|
||||
static inline bool disk_has_partitions(struct gendisk *disk)
|
||||
{
|
||||
bool ret = false;
|
||||
|
||||
rcu_read_lock();
|
||||
if (rcu_dereference(disk->part_tbl)->len > 1)
|
||||
ret = true;
|
||||
rcu_read_unlock();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static inline dev_t disk_devt(struct gendisk *disk)
|
||||
{
|
||||
return MKDEV(disk->major, disk->first_minor);
|
||||
|
|
@ -298,6 +286,7 @@ extern void disk_part_iter_exit(struct disk_part_iter *piter);
|
|||
|
||||
extern struct hd_struct *disk_map_sector_rcu(struct gendisk *disk,
|
||||
sector_t sector);
|
||||
bool disk_has_partitions(struct gendisk *disk);
|
||||
|
||||
/*
|
||||
* Macros to operate on percpu disk statistics:
|
||||
|
|
|
|||
|
|
@ -506,7 +506,7 @@ i2c_register_board_info(int busnum, struct i2c_board_info const *info,
|
|||
* @smbus_xfer_atomic: same as @smbus_xfer. Yet, only using atomic context
|
||||
* so e.g. PMICs can be accessed very late before shutdown. Optional.
|
||||
* @functionality: Return the flags that this algorithm/adapter pair supports
|
||||
* from the I2C_FUNC_* flags.
|
||||
* from the ``I2C_FUNC_*`` flags.
|
||||
* @reg_slave: Register given client to I2C slave mode of this adapter
|
||||
* @unreg_slave: Unregister given client from I2C slave mode of this adapter
|
||||
*
|
||||
|
|
@ -515,7 +515,7 @@ i2c_register_board_info(int busnum, struct i2c_board_info const *info,
|
|||
* be addressed using the same bus algorithms - i.e. bit-banging or the PCF8584
|
||||
* to name two of the most common.
|
||||
*
|
||||
* The return codes from the @master_xfer{_atomic} fields should indicate the
|
||||
* The return codes from the ``master_xfer{_atomic}`` fields should indicate the
|
||||
* type of error code that occurred during the transfer, as documented in the
|
||||
* Kernel Documentation file Documentation/i2c/fault-codes.rst.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -2102,14 +2102,14 @@ ieee80211_he_spr_size(const u8 *he_spr_ie)
|
|||
{
|
||||
struct ieee80211_he_spr *he_spr = (void *)he_spr_ie;
|
||||
u8 spr_len = sizeof(struct ieee80211_he_spr);
|
||||
u32 he_spr_params;
|
||||
u8 he_spr_params;
|
||||
|
||||
/* Make sure the input is not NULL */
|
||||
if (!he_spr_ie)
|
||||
return 0;
|
||||
|
||||
/* Calc required length */
|
||||
he_spr_params = le32_to_cpu(he_spr->he_sr_control);
|
||||
he_spr_params = he_spr->he_sr_control;
|
||||
if (he_spr_params & IEEE80211_HE_SPR_NON_SRG_OFFSET_PRESENT)
|
||||
spr_len++;
|
||||
if (he_spr_params & IEEE80211_HE_SPR_SRG_INFORMATION_PRESENT)
|
||||
|
|
|
|||
|
|
@ -2,15 +2,10 @@
|
|||
#ifndef _INET_DIAG_H_
|
||||
#define _INET_DIAG_H_ 1
|
||||
|
||||
#include <net/netlink.h>
|
||||
#include <uapi/linux/inet_diag.h>
|
||||
|
||||
struct net;
|
||||
struct sock;
|
||||
struct inet_hashinfo;
|
||||
struct nlattr;
|
||||
struct nlmsghdr;
|
||||
struct sk_buff;
|
||||
struct netlink_callback;
|
||||
|
||||
struct inet_diag_handler {
|
||||
void (*dump)(struct sk_buff *skb,
|
||||
|
|
@ -62,6 +57,17 @@ int inet_diag_bc_sk(const struct nlattr *_bc, struct sock *sk);
|
|||
|
||||
void inet_diag_msg_common_fill(struct inet_diag_msg *r, struct sock *sk);
|
||||
|
||||
static inline size_t inet_diag_msg_attrs_size(void)
|
||||
{
|
||||
return nla_total_size(1) /* INET_DIAG_SHUTDOWN */
|
||||
+ nla_total_size(1) /* INET_DIAG_TOS */
|
||||
#if IS_ENABLED(CONFIG_IPV6)
|
||||
+ nla_total_size(1) /* INET_DIAG_TCLASS */
|
||||
+ nla_total_size(1) /* INET_DIAG_SKV6ONLY */
|
||||
#endif
|
||||
+ nla_total_size(4) /* INET_DIAG_MARK */
|
||||
+ nla_total_size(4); /* INET_DIAG_CLASS_ID */
|
||||
}
|
||||
int inet_diag_msg_attrs_fill(struct sock *sk, struct sk_buff *skb,
|
||||
struct inet_diag_msg *r, int ext,
|
||||
struct user_namespace *user_ns, bool net_admin);
|
||||
|
|
|
|||
|
|
@ -123,6 +123,8 @@
|
|||
|
||||
#define dmar_readq(a) readq(a)
|
||||
#define dmar_writeq(a,v) writeq(v,a)
|
||||
#define dmar_readl(a) readl(a)
|
||||
#define dmar_writel(a, v) writel(v, a)
|
||||
|
||||
#define DMAR_VER_MAJOR(v) (((v) & 0xf0) >> 4)
|
||||
#define DMAR_VER_MINOR(v) ((v) & 0x0f)
|
||||
|
|
|
|||
|
|
@ -695,6 +695,7 @@ static inline unsigned long lruvec_page_state_local(struct lruvec *lruvec,
|
|||
void __mod_lruvec_state(struct lruvec *lruvec, enum node_stat_item idx,
|
||||
int val);
|
||||
void __mod_lruvec_slab_state(void *p, enum node_stat_item idx, int val);
|
||||
void mod_memcg_obj_state(void *p, int idx, int val);
|
||||
|
||||
static inline void mod_lruvec_state(struct lruvec *lruvec,
|
||||
enum node_stat_item idx, int val)
|
||||
|
|
@ -1123,6 +1124,10 @@ static inline void __mod_lruvec_slab_state(void *p, enum node_stat_item idx,
|
|||
__mod_node_page_state(page_pgdat(page), idx, val);
|
||||
}
|
||||
|
||||
static inline void mod_memcg_obj_state(void *p, int idx, int val)
|
||||
{
|
||||
}
|
||||
|
||||
static inline
|
||||
unsigned long mem_cgroup_soft_limit_reclaim(pg_data_t *pgdat, int order,
|
||||
gfp_t gfp_mask,
|
||||
|
|
@ -1427,6 +1432,8 @@ static inline int memcg_cache_id(struct mem_cgroup *memcg)
|
|||
return memcg ? memcg->kmemcg_id : -1;
|
||||
}
|
||||
|
||||
struct mem_cgroup *mem_cgroup_from_obj(void *p);
|
||||
|
||||
#else
|
||||
|
||||
static inline int memcg_kmem_charge(struct page *page, gfp_t gfp, int order)
|
||||
|
|
@ -1468,6 +1475,11 @@ static inline void memcg_put_cache_ids(void)
|
|||
{
|
||||
}
|
||||
|
||||
static inline struct mem_cgroup *mem_cgroup_from_obj(void *p)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_MEMCG_KMEM */
|
||||
|
||||
#endif /* _LINUX_MEMCONTROL_H */
|
||||
|
|
|
|||
|
|
@ -333,6 +333,7 @@ struct mmc_host {
|
|||
MMC_CAP_UHS_SDR50 | MMC_CAP_UHS_SDR104 | \
|
||||
MMC_CAP_UHS_DDR50)
|
||||
#define MMC_CAP_SYNC_RUNTIME_PM (1 << 21) /* Synced runtime PM suspends. */
|
||||
#define MMC_CAP_NEED_RSP_BUSY (1 << 22) /* Commands with R1B can't use R1. */
|
||||
#define MMC_CAP_DRIVER_TYPE_A (1 << 23) /* Host supports Driver Type A */
|
||||
#define MMC_CAP_DRIVER_TYPE_C (1 << 24) /* Host supports Driver Type C */
|
||||
#define MMC_CAP_DRIVER_TYPE_D (1 << 25) /* Host supports Driver Type D */
|
||||
|
|
|
|||
|
|
@ -115,6 +115,19 @@ static inline void nl_set_extack_cookie_u64(struct netlink_ext_ack *extack,
|
|||
{
|
||||
u64 __cookie = cookie;
|
||||
|
||||
if (!extack)
|
||||
return;
|
||||
memcpy(extack->cookie, &__cookie, sizeof(__cookie));
|
||||
extack->cookie_len = sizeof(__cookie);
|
||||
}
|
||||
|
||||
static inline void nl_set_extack_cookie_u32(struct netlink_ext_ack *extack,
|
||||
u32 cookie)
|
||||
{
|
||||
u32 __cookie = cookie;
|
||||
|
||||
if (!extack)
|
||||
return;
|
||||
memcpy(extack->cookie, &__cookie, sizeof(__cookie));
|
||||
extack->cookie_len = sizeof(__cookie);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,17 +11,17 @@ struct of_device_id;
|
|||
|
||||
#if defined(CONFIG_COMMON_CLK) && defined(CONFIG_OF)
|
||||
|
||||
unsigned int of_clk_get_parent_count(struct device_node *np);
|
||||
const char *of_clk_get_parent_name(struct device_node *np, int index);
|
||||
unsigned int of_clk_get_parent_count(const struct device_node *np);
|
||||
const char *of_clk_get_parent_name(const struct device_node *np, int index);
|
||||
void of_clk_init(const struct of_device_id *matches);
|
||||
|
||||
#else /* !CONFIG_COMMON_CLK || !CONFIG_OF */
|
||||
|
||||
static inline unsigned int of_clk_get_parent_count(struct device_node *np)
|
||||
static inline unsigned int of_clk_get_parent_count(const struct device_node *np)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
static inline const char *of_clk_get_parent_name(struct device_node *np,
|
||||
static inline const char *of_clk_get_parent_name(const struct device_node *np,
|
||||
int index)
|
||||
{
|
||||
return NULL;
|
||||
|
|
|
|||
|
|
@ -311,7 +311,7 @@ static inline int TestClearPage##uname(struct page *page) { return 0; }
|
|||
|
||||
__PAGEFLAG(Locked, locked, PF_NO_TAIL)
|
||||
PAGEFLAG(Waiters, waiters, PF_ONLY_HEAD) __CLEARPAGEFLAG(Waiters, waiters, PF_ONLY_HEAD)
|
||||
PAGEFLAG(Error, error, PF_NO_COMPOUND) TESTCLEARFLAG(Error, error, PF_NO_COMPOUND)
|
||||
PAGEFLAG(Error, error, PF_NO_TAIL) TESTCLEARFLAG(Error, error, PF_NO_TAIL)
|
||||
PAGEFLAG(Referenced, referenced, PF_HEAD)
|
||||
TESTCLEARFLAG(Referenced, referenced, PF_HEAD)
|
||||
__SETPAGEFLAG(Referenced, referenced, PF_HEAD)
|
||||
|
|
|
|||
|
|
@ -357,6 +357,7 @@ struct macsec_ops;
|
|||
* is_gigabit_capable: Set to true if PHY supports 1000Mbps
|
||||
* has_fixups: Set to true if this phy has fixups/quirks.
|
||||
* suspended: Set to true if this phy has been suspended successfully.
|
||||
* suspended_by_mdio_bus: Set to true if this phy was suspended by MDIO bus.
|
||||
* sysfs_links: Internal boolean tracking sysfs symbolic links setup/removal.
|
||||
* loopback_enabled: Set true if this phy has been loopbacked successfully.
|
||||
* state: state of the PHY for management purposes
|
||||
|
|
@ -396,6 +397,7 @@ struct phy_device {
|
|||
unsigned is_gigabit_capable:1;
|
||||
unsigned has_fixups:1;
|
||||
unsigned suspended:1;
|
||||
unsigned suspended_by_mdio_bus:1;
|
||||
unsigned sysfs_links:1;
|
||||
unsigned loopback_enabled:1;
|
||||
|
||||
|
|
@ -557,6 +559,7 @@ struct phy_driver {
|
|||
/*
|
||||
* Checks if the PHY generated an interrupt.
|
||||
* For multi-PHY devices with shared PHY interrupt pin
|
||||
* Set interrupt bits have to be cleared.
|
||||
*/
|
||||
int (*did_interrupt)(struct phy_device *phydev);
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ struct platform_device {
|
|||
int id;
|
||||
bool id_auto;
|
||||
struct device dev;
|
||||
u64 dma_mask;
|
||||
u64 platform_dma_mask;
|
||||
u32 num_resources;
|
||||
struct resource *resource;
|
||||
|
||||
|
|
|
|||
|
|
@ -972,9 +972,9 @@ static inline int rhashtable_lookup_insert_key(
|
|||
/**
|
||||
* rhashtable_lookup_get_insert_key - lookup and insert object into hash table
|
||||
* @ht: hash table
|
||||
* @key: key
|
||||
* @obj: pointer to hash head inside object
|
||||
* @params: hash table parameters
|
||||
* @data: pointer to element data already in hashes
|
||||
*
|
||||
* Just like rhashtable_lookup_insert_key(), but this function returns the
|
||||
* object if it exists, NULL if it does not and the insertion was successful,
|
||||
|
|
|
|||
|
|
@ -645,8 +645,8 @@ typedef unsigned char *sk_buff_data_t;
|
|||
* @offload_l3_fwd_mark: Packet was L3-forwarded in hardware
|
||||
* @tc_skip_classify: do not classify packet. set by IFB device
|
||||
* @tc_at_ingress: used within tc_classify to distinguish in/egress
|
||||
* @tc_redirected: packet was redirected by a tc action
|
||||
* @tc_from_ingress: if tc_redirected, tc_at_ingress at time of redirect
|
||||
* @redirected: packet was redirected by packet classifier
|
||||
* @from_ingress: packet was redirected from the ingress path
|
||||
* @peeked: this packet has been seen already, so stats have been
|
||||
* done for it, don't do them again
|
||||
* @nf_trace: netfilter packet trace flag
|
||||
|
|
@ -848,8 +848,10 @@ struct sk_buff {
|
|||
#ifdef CONFIG_NET_CLS_ACT
|
||||
__u8 tc_skip_classify:1;
|
||||
__u8 tc_at_ingress:1;
|
||||
__u8 tc_redirected:1;
|
||||
__u8 tc_from_ingress:1;
|
||||
#endif
|
||||
#ifdef CONFIG_NET_REDIRECT
|
||||
__u8 redirected:1;
|
||||
__u8 from_ingress:1;
|
||||
#endif
|
||||
#ifdef CONFIG_TLS_DEVICE
|
||||
__u8 decrypted:1;
|
||||
|
|
@ -4579,5 +4581,31 @@ static inline __wsum lco_csum(struct sk_buff *skb)
|
|||
return csum_partial(l4_hdr, csum_start - l4_hdr, partial);
|
||||
}
|
||||
|
||||
static inline bool skb_is_redirected(const struct sk_buff *skb)
|
||||
{
|
||||
#ifdef CONFIG_NET_REDIRECT
|
||||
return skb->redirected;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void skb_set_redirected(struct sk_buff *skb, bool from_ingress)
|
||||
{
|
||||
#ifdef CONFIG_NET_REDIRECT
|
||||
skb->redirected = 1;
|
||||
skb->from_ingress = from_ingress;
|
||||
if (skb->from_ingress)
|
||||
skb->tstamp = 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void skb_reset_redirect(struct sk_buff *skb)
|
||||
{
|
||||
#ifdef CONFIG_NET_REDIRECT
|
||||
skb->redirected = 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* _LINUX_SKBUFF_H */
|
||||
|
|
|
|||
|
|
@ -401,7 +401,8 @@ extern int __sys_sendto(int fd, void __user *buff, size_t len,
|
|||
int addr_len);
|
||||
extern int __sys_accept4_file(struct file *file, unsigned file_flags,
|
||||
struct sockaddr __user *upeer_sockaddr,
|
||||
int __user *upeer_addrlen, int flags);
|
||||
int __user *upeer_addrlen, int flags,
|
||||
unsigned long nofile);
|
||||
extern int __sys_accept4(int fd, struct sockaddr __user *upeer_sockaddr,
|
||||
int __user *upeer_addrlen, int flags);
|
||||
extern int __sys_socket(int family, int type, int protocol);
|
||||
|
|
|
|||
|
|
@ -141,8 +141,9 @@ extern int remap_vmalloc_range_partial(struct vm_area_struct *vma,
|
|||
|
||||
extern int remap_vmalloc_range(struct vm_area_struct *vma, void *addr,
|
||||
unsigned long pgoff);
|
||||
void vmalloc_sync_all(void);
|
||||
|
||||
void vmalloc_sync_mappings(void);
|
||||
void vmalloc_sync_unmappings(void);
|
||||
|
||||
/*
|
||||
* Lowlevel-APIs (not for driver use!)
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -487,6 +487,19 @@ extern void wq_worker_comm(char *buf, size_t size, struct task_struct *task);
|
|||
*
|
||||
* We queue the work to the CPU on which it was submitted, but if the CPU dies
|
||||
* it can be processed by another CPU.
|
||||
*
|
||||
* Memory-ordering properties: If it returns %true, guarantees that all stores
|
||||
* preceding the call to queue_work() in the program order will be visible from
|
||||
* the CPU which will execute @work by the time such work executes, e.g.,
|
||||
*
|
||||
* { x is initially 0 }
|
||||
*
|
||||
* CPU0 CPU1
|
||||
*
|
||||
* WRITE_ONCE(x, 1); [ @work is being executed ]
|
||||
* r0 = queue_work(wq, work); r1 = READ_ONCE(x);
|
||||
*
|
||||
* Forbids: r0 == true && r1 == 0
|
||||
*/
|
||||
static inline bool queue_work(struct workqueue_struct *wq,
|
||||
struct work_struct *work)
|
||||
|
|
@ -546,6 +559,9 @@ static inline bool schedule_work_on(int cpu, struct work_struct *work)
|
|||
* This puts a job in the kernel-global workqueue if it was not already
|
||||
* queued and leaves it in the same position on the kernel-global
|
||||
* workqueue otherwise.
|
||||
*
|
||||
* Shares the same memory-ordering properties of queue_work(), cf. the
|
||||
* DocBook header of queue_work().
|
||||
*/
|
||||
static inline bool schedule_work(struct work_struct *work)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue