mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-24 13:44:26 -04:00
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
Resolve conflicts with conntrack template fixes. Conflicts: net/netfilter/nf_conntrack_core.c net/netfilter/nf_synproxy_core.c net/netfilter/xt_CT.c Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
commit
81bf1c64e7
855 changed files with 24295 additions and 7762 deletions
|
|
@ -3,28 +3,43 @@
|
|||
|
||||
/* Exponentially weighted moving average (EWMA) */
|
||||
|
||||
/* For more documentation see lib/average.c */
|
||||
|
||||
struct ewma {
|
||||
unsigned long internal;
|
||||
unsigned long factor;
|
||||
unsigned long weight;
|
||||
};
|
||||
|
||||
extern void ewma_init(struct ewma *avg, unsigned long factor,
|
||||
unsigned long weight);
|
||||
|
||||
extern struct ewma *ewma_add(struct ewma *avg, unsigned long val);
|
||||
|
||||
/**
|
||||
* ewma_read() - Get average value
|
||||
* @avg: Average structure
|
||||
*
|
||||
* Returns the average value held in @avg.
|
||||
*/
|
||||
static inline unsigned long ewma_read(const struct ewma *avg)
|
||||
{
|
||||
return avg->internal >> avg->factor;
|
||||
}
|
||||
#define DECLARE_EWMA(name, _factor, _weight) \
|
||||
struct ewma_##name { \
|
||||
unsigned long internal; \
|
||||
}; \
|
||||
static inline void ewma_##name##_init(struct ewma_##name *e) \
|
||||
{ \
|
||||
BUILD_BUG_ON(!__builtin_constant_p(_factor)); \
|
||||
BUILD_BUG_ON(!__builtin_constant_p(_weight)); \
|
||||
BUILD_BUG_ON_NOT_POWER_OF_2(_factor); \
|
||||
BUILD_BUG_ON_NOT_POWER_OF_2(_weight); \
|
||||
e->internal = 0; \
|
||||
} \
|
||||
static inline unsigned long \
|
||||
ewma_##name##_read(struct ewma_##name *e) \
|
||||
{ \
|
||||
BUILD_BUG_ON(!__builtin_constant_p(_factor)); \
|
||||
BUILD_BUG_ON(!__builtin_constant_p(_weight)); \
|
||||
BUILD_BUG_ON_NOT_POWER_OF_2(_factor); \
|
||||
BUILD_BUG_ON_NOT_POWER_OF_2(_weight); \
|
||||
return e->internal >> ilog2(_factor); \
|
||||
} \
|
||||
static inline void ewma_##name##_add(struct ewma_##name *e, \
|
||||
unsigned long val) \
|
||||
{ \
|
||||
unsigned long internal = ACCESS_ONCE(e->internal); \
|
||||
unsigned long weight = ilog2(_weight); \
|
||||
unsigned long factor = ilog2(_factor); \
|
||||
\
|
||||
BUILD_BUG_ON(!__builtin_constant_p(_factor)); \
|
||||
BUILD_BUG_ON(!__builtin_constant_p(_weight)); \
|
||||
BUILD_BUG_ON_NOT_POWER_OF_2(_factor); \
|
||||
BUILD_BUG_ON_NOT_POWER_OF_2(_weight); \
|
||||
\
|
||||
ACCESS_ONCE(e->internal) = internal ? \
|
||||
(((internal << weight) - internal) + \
|
||||
(val << factor)) >> weight : \
|
||||
(val << factor); \
|
||||
}
|
||||
|
||||
#endif /* _LINUX_AVERAGE_H */
|
||||
|
|
|
|||
|
|
@ -640,7 +640,6 @@ struct bcma_drv_cc {
|
|||
spinlock_t gpio_lock;
|
||||
#ifdef CONFIG_BCMA_DRIVER_GPIO
|
||||
struct gpio_chip gpio;
|
||||
struct irq_domain *irq_domain;
|
||||
#endif
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
#include <uapi/linux/bpf.h>
|
||||
#include <linux/workqueue.h>
|
||||
#include <linux/file.h>
|
||||
#include <linux/perf_event.h>
|
||||
|
||||
struct bpf_map;
|
||||
|
||||
|
|
@ -24,6 +25,10 @@ struct bpf_map_ops {
|
|||
void *(*map_lookup_elem)(struct bpf_map *map, void *key);
|
||||
int (*map_update_elem)(struct bpf_map *map, void *key, void *value, u64 flags);
|
||||
int (*map_delete_elem)(struct bpf_map *map, void *key);
|
||||
|
||||
/* funcs called by prog_array and perf_event_array map */
|
||||
void *(*map_fd_get_ptr) (struct bpf_map *map, int fd);
|
||||
void (*map_fd_put_ptr) (void *ptr);
|
||||
};
|
||||
|
||||
struct bpf_map {
|
||||
|
|
@ -142,13 +147,13 @@ struct bpf_array {
|
|||
bool owner_jited;
|
||||
union {
|
||||
char value[0] __aligned(8);
|
||||
struct bpf_prog *prog[0] __aligned(8);
|
||||
void *ptrs[0] __aligned(8);
|
||||
};
|
||||
};
|
||||
#define MAX_TAIL_CALL_CNT 32
|
||||
|
||||
u64 bpf_tail_call(u64 ctx, u64 r2, u64 index, u64 r4, u64 r5);
|
||||
void bpf_prog_array_map_clear(struct bpf_map *map);
|
||||
void bpf_fd_array_map_clear(struct bpf_map *map);
|
||||
bool bpf_prog_array_compatible(struct bpf_array *array, const struct bpf_prog *fp);
|
||||
const struct bpf_func_proto *bpf_get_trace_printk_proto(void);
|
||||
|
||||
|
|
@ -185,6 +190,7 @@ extern const struct bpf_func_proto bpf_map_lookup_elem_proto;
|
|||
extern const struct bpf_func_proto bpf_map_update_elem_proto;
|
||||
extern const struct bpf_func_proto bpf_map_delete_elem_proto;
|
||||
|
||||
extern const struct bpf_func_proto bpf_perf_event_read_proto;
|
||||
extern const struct bpf_func_proto bpf_get_prandom_u32_proto;
|
||||
extern const struct bpf_func_proto bpf_get_smp_processor_id_proto;
|
||||
extern const struct bpf_func_proto bpf_tail_call_proto;
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ static inline bool is_link_local_ether_addr(const u8 *addr)
|
|||
|
||||
#if defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS)
|
||||
return (((*(const u32 *)addr) ^ (*(const u32 *)b)) |
|
||||
((a[2] ^ b[2]) & m)) == 0;
|
||||
(__force int)((a[2] ^ b[2]) & m)) == 0;
|
||||
#else
|
||||
return ((a[0] ^ b[0]) | (a[1] ^ b[1]) | ((a[2] ^ b[2]) & m)) == 0;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -55,7 +55,8 @@ struct vm_fault;
|
|||
|
||||
extern void __init inode_init(void);
|
||||
extern void __init inode_init_early(void);
|
||||
extern void __init files_init(unsigned long);
|
||||
extern void __init files_init(void);
|
||||
extern void __init files_maxfiles_init(void);
|
||||
|
||||
extern struct files_stat_struct files_stat;
|
||||
extern unsigned long get_max_files(void);
|
||||
|
|
@ -2245,7 +2246,7 @@ extern int ioctl_preallocate(struct file *filp, void __user *argp);
|
|||
|
||||
/* fs/dcache.c */
|
||||
extern void __init vfs_caches_init_early(void);
|
||||
extern void __init vfs_caches_init(unsigned long);
|
||||
extern void __init vfs_caches_init(void);
|
||||
|
||||
extern struct kmem_cache *names_cachep;
|
||||
|
||||
|
|
|
|||
|
|
@ -2074,8 +2074,8 @@ enum ieee80211_tdls_actioncode {
|
|||
#define WLAN_EXT_CAPA5_TDLS_PROHIBITED BIT(6)
|
||||
#define WLAN_EXT_CAPA5_TDLS_CH_SW_PROHIBITED BIT(7)
|
||||
|
||||
#define WLAN_EXT_CAPA8_TDLS_WIDE_BW_ENABLED BIT(5)
|
||||
#define WLAN_EXT_CAPA8_OPMODE_NOTIF BIT(6)
|
||||
#define WLAN_EXT_CAPA8_TDLS_WIDE_BW_ENABLED BIT(7)
|
||||
|
||||
/* TDLS specific payload type in the LLC/SNAP header */
|
||||
#define WLAN_TDLS_SNAP_RFTYPE 0x2
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ struct ipv6_devconf {
|
|||
__s32 accept_ra_defrtr;
|
||||
__s32 accept_ra_min_hop_limit;
|
||||
__s32 accept_ra_pinfo;
|
||||
__s32 ignore_routes_with_linkdown;
|
||||
#ifdef CONFIG_IPV6_ROUTER_PREF
|
||||
__s32 accept_ra_rtr_pref;
|
||||
__s32 rtr_probe_interval;
|
||||
|
|
|
|||
|
|
@ -103,6 +103,7 @@ enum {
|
|||
MLX5_REG_PMTU = 0x5003,
|
||||
MLX5_REG_PTYS = 0x5004,
|
||||
MLX5_REG_PAOS = 0x5006,
|
||||
MLX5_REG_PFCC = 0x5007,
|
||||
MLX5_REG_PPCNT = 0x5008,
|
||||
MLX5_REG_PMAOS = 0x5012,
|
||||
MLX5_REG_PUDE = 0x5009,
|
||||
|
|
@ -152,8 +153,8 @@ enum mlx5_dev_event {
|
|||
};
|
||||
|
||||
enum mlx5_port_status {
|
||||
MLX5_PORT_UP = 1 << 1,
|
||||
MLX5_PORT_DOWN = 1 << 2,
|
||||
MLX5_PORT_UP = 1,
|
||||
MLX5_PORT_DOWN = 2,
|
||||
};
|
||||
|
||||
struct mlx5_uuar_info {
|
||||
|
|
@ -761,9 +762,10 @@ int mlx5_query_port_proto_oper(struct mlx5_core_dev *dev,
|
|||
u8 local_port);
|
||||
int mlx5_set_port_proto(struct mlx5_core_dev *dev, u32 proto_admin,
|
||||
int proto_mask);
|
||||
int mlx5_set_port_status(struct mlx5_core_dev *dev,
|
||||
enum mlx5_port_status status);
|
||||
int mlx5_query_port_status(struct mlx5_core_dev *dev, u8 *status);
|
||||
int mlx5_set_port_admin_status(struct mlx5_core_dev *dev,
|
||||
enum mlx5_port_status status);
|
||||
int mlx5_query_port_admin_status(struct mlx5_core_dev *dev,
|
||||
enum mlx5_port_status *status);
|
||||
|
||||
int mlx5_set_port_mtu(struct mlx5_core_dev *dev, int mtu, u8 port);
|
||||
void mlx5_query_port_max_mtu(struct mlx5_core_dev *dev, int *max_mtu, u8 port);
|
||||
|
|
@ -773,6 +775,10 @@ void mlx5_query_port_oper_mtu(struct mlx5_core_dev *dev, int *oper_mtu,
|
|||
int mlx5_query_port_vl_hw_cap(struct mlx5_core_dev *dev,
|
||||
u8 *vl_hw_cap, u8 local_port);
|
||||
|
||||
int mlx5_set_port_pause(struct mlx5_core_dev *dev, u32 rx_pause, u32 tx_pause);
|
||||
int mlx5_query_port_pause(struct mlx5_core_dev *dev,
|
||||
u32 *rx_pause, u32 *tx_pause);
|
||||
|
||||
int mlx5_debug_eq_add(struct mlx5_core_dev *dev, struct mlx5_eq *eq);
|
||||
void mlx5_debug_eq_remove(struct mlx5_core_dev *dev, struct mlx5_eq *eq);
|
||||
int mlx5_core_eq_query(struct mlx5_core_dev *dev, struct mlx5_eq *eq,
|
||||
|
|
|
|||
|
|
@ -1262,6 +1262,8 @@ struct net_device_ops {
|
|||
* @IFF_LIVE_ADDR_CHANGE: device supports hardware address
|
||||
* change when it's running
|
||||
* @IFF_MACVLAN: Macvlan device
|
||||
* @IFF_VRF_MASTER: device is a VRF master
|
||||
* @IFF_NO_QUEUE: device can run without qdisc attached
|
||||
*/
|
||||
enum netdev_priv_flags {
|
||||
IFF_802_1Q_VLAN = 1<<0,
|
||||
|
|
@ -1289,6 +1291,8 @@ enum netdev_priv_flags {
|
|||
IFF_XMIT_DST_RELEASE_PERM = 1<<22,
|
||||
IFF_IPVLAN_MASTER = 1<<23,
|
||||
IFF_IPVLAN_SLAVE = 1<<24,
|
||||
IFF_VRF_MASTER = 1<<25,
|
||||
IFF_NO_QUEUE = 1<<26,
|
||||
};
|
||||
|
||||
#define IFF_802_1Q_VLAN IFF_802_1Q_VLAN
|
||||
|
|
@ -1316,6 +1320,8 @@ enum netdev_priv_flags {
|
|||
#define IFF_XMIT_DST_RELEASE_PERM IFF_XMIT_DST_RELEASE_PERM
|
||||
#define IFF_IPVLAN_MASTER IFF_IPVLAN_MASTER
|
||||
#define IFF_IPVLAN_SLAVE IFF_IPVLAN_SLAVE
|
||||
#define IFF_VRF_MASTER IFF_VRF_MASTER
|
||||
#define IFF_NO_QUEUE IFF_NO_QUEUE
|
||||
|
||||
/**
|
||||
* struct net_device - The DEVICE structure.
|
||||
|
|
@ -1432,6 +1438,7 @@ enum netdev_priv_flags {
|
|||
* @dn_ptr: DECnet specific data
|
||||
* @ip6_ptr: IPv6 specific data
|
||||
* @ax25_ptr: AX.25 specific data
|
||||
* @vrf_ptr: VRF specific data
|
||||
* @ieee80211_ptr: IEEE 802.11 specific data, assign before registering
|
||||
*
|
||||
* @last_rx: Time of last Rx
|
||||
|
|
@ -1650,6 +1657,7 @@ struct net_device {
|
|||
struct dn_dev __rcu *dn_ptr;
|
||||
struct inet6_dev __rcu *ip6_ptr;
|
||||
void *ax25_ptr;
|
||||
struct net_vrf_dev __rcu *vrf_ptr;
|
||||
struct wireless_dev *ieee80211_ptr;
|
||||
struct wpan_dev *ieee802154_ptr;
|
||||
#if IS_ENABLED(CONFIG_MPLS_ROUTING)
|
||||
|
|
@ -3808,6 +3816,32 @@ static inline bool netif_supports_nofcs(struct net_device *dev)
|
|||
return dev->priv_flags & IFF_SUPP_NOFCS;
|
||||
}
|
||||
|
||||
static inline bool netif_is_vrf(const struct net_device *dev)
|
||||
{
|
||||
return dev->priv_flags & IFF_VRF_MASTER;
|
||||
}
|
||||
|
||||
static inline bool netif_index_is_vrf(struct net *net, int ifindex)
|
||||
{
|
||||
bool rc = false;
|
||||
|
||||
#if IS_ENABLED(CONFIG_NET_VRF)
|
||||
struct net_device *dev;
|
||||
|
||||
if (ifindex == 0)
|
||||
return false;
|
||||
|
||||
rcu_read_lock();
|
||||
|
||||
dev = dev_get_by_index_rcu(net, ifindex);
|
||||
if (dev)
|
||||
rc = netif_is_vrf(dev);
|
||||
|
||||
rcu_read_unlock();
|
||||
#endif
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* This device needs to keep skb dst for qdisc enqueue or ndo_start_xmit() */
|
||||
static inline void netif_keep_dst(struct net_device *dev)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -631,15 +631,19 @@ static inline void ClearPageSlabPfmemalloc(struct page *page)
|
|||
1 << PG_private | 1 << PG_private_2 | \
|
||||
1 << PG_writeback | 1 << PG_reserved | \
|
||||
1 << PG_slab | 1 << PG_swapcache | 1 << PG_active | \
|
||||
1 << PG_unevictable | __PG_MLOCKED | __PG_HWPOISON | \
|
||||
1 << PG_unevictable | __PG_MLOCKED | \
|
||||
__PG_COMPOUND_LOCK)
|
||||
|
||||
/*
|
||||
* Flags checked when a page is prepped for return by the page allocator.
|
||||
* Pages being prepped should not have any flags set. It they are set,
|
||||
* Pages being prepped should not have these flags set. It they are set,
|
||||
* there has been a kernel bug or struct page corruption.
|
||||
*
|
||||
* __PG_HWPOISON is exceptional because it needs to be kept beyond page's
|
||||
* alloc-free cycle to prevent from reusing the page.
|
||||
*/
|
||||
#define PAGE_FLAGS_CHECK_AT_PREP ((1 << NR_PAGEFLAGS) - 1)
|
||||
#define PAGE_FLAGS_CHECK_AT_PREP \
|
||||
(((1 << NR_PAGEFLAGS) - 1) & ~__PG_HWPOISON)
|
||||
|
||||
#define PAGE_FLAGS_PRIVATE \
|
||||
(1 << PG_private | 1 << PG_private_2)
|
||||
|
|
|
|||
|
|
@ -641,6 +641,8 @@ extern int perf_event_init_task(struct task_struct *child);
|
|||
extern void perf_event_exit_task(struct task_struct *child);
|
||||
extern void perf_event_free_task(struct task_struct *task);
|
||||
extern void perf_event_delayed_put(struct task_struct *task);
|
||||
extern struct perf_event *perf_event_get(unsigned int fd);
|
||||
extern const struct perf_event_attr *perf_event_attrs(struct perf_event *event);
|
||||
extern void perf_event_print_debug(void);
|
||||
extern void perf_pmu_disable(struct pmu *pmu);
|
||||
extern void perf_pmu_enable(struct pmu *pmu);
|
||||
|
|
@ -659,6 +661,7 @@ perf_event_create_kernel_counter(struct perf_event_attr *attr,
|
|||
void *context);
|
||||
extern void perf_pmu_migrate_context(struct pmu *pmu,
|
||||
int src_cpu, int dst_cpu);
|
||||
extern u64 perf_event_read_local(struct perf_event *event);
|
||||
extern u64 perf_event_read_value(struct perf_event *event,
|
||||
u64 *enabled, u64 *running);
|
||||
|
||||
|
|
@ -979,6 +982,12 @@ static inline int perf_event_init_task(struct task_struct *child) { return 0; }
|
|||
static inline void perf_event_exit_task(struct task_struct *child) { }
|
||||
static inline void perf_event_free_task(struct task_struct *task) { }
|
||||
static inline void perf_event_delayed_put(struct task_struct *task) { }
|
||||
static inline struct perf_event *perf_event_get(unsigned int fd) { return ERR_PTR(-EINVAL); }
|
||||
static inline const struct perf_event_attr *perf_event_attrs(struct perf_event *event)
|
||||
{
|
||||
return ERR_PTR(-EINVAL);
|
||||
}
|
||||
static inline u64 perf_event_read_local(struct perf_event *event) { return -EINVAL; }
|
||||
static inline void perf_event_print_debug(void) { }
|
||||
static inline int perf_event_task_disable(void) { return -EINVAL; }
|
||||
static inline int perf_event_task_enable(void) { return -EINVAL; }
|
||||
|
|
@ -1011,6 +1020,7 @@ static inline void perf_event_enable(struct perf_event *event) { }
|
|||
static inline void perf_event_disable(struct perf_event *event) { }
|
||||
static inline int __perf_event_disable(void *info) { return -1; }
|
||||
static inline void perf_event_task_tick(void) { }
|
||||
static inline int perf_event_release_kernel(struct perf_event *event) { return 0; }
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_PERF_EVENTS) && defined(CONFIG_NO_HZ_FULL)
|
||||
|
|
|
|||
|
|
@ -166,4 +166,8 @@ void device_add_property_set(struct device *dev, struct property_set *pset);
|
|||
|
||||
bool device_dma_is_coherent(struct device *dev);
|
||||
|
||||
int device_get_phy_mode(struct device *dev);
|
||||
|
||||
void *device_get_mac_address(struct device *dev, char *addr, int alen);
|
||||
|
||||
#endif /* _LINUX_PROPERTY_H_ */
|
||||
|
|
|
|||
|
|
@ -2913,11 +2913,11 @@ static inline bool skb_defer_rx_timestamp(struct sk_buff *skb)
|
|||
*
|
||||
* PHY drivers may accept clones of transmitted packets for
|
||||
* timestamping via their phy_driver.txtstamp method. These drivers
|
||||
* must call this function to return the skb back to the stack, with
|
||||
* or without a timestamp.
|
||||
* must call this function to return the skb back to the stack with a
|
||||
* timestamp.
|
||||
*
|
||||
* @skb: clone of the the original outgoing packet
|
||||
* @hwtstamps: hardware time stamps, may be NULL if not available
|
||||
* @hwtstamps: hardware time stamps
|
||||
*
|
||||
*/
|
||||
void skb_complete_tx_timestamp(struct sk_buff *skb,
|
||||
|
|
|
|||
Loading…
Reference in a new issue