mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-24 13:44:26 -04:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
Resolve conflicts between 5888b93 ("Merge branch 'nf-hook-compress'") and
Florian Westphal br_netfilter works.
Conflicts:
net/bridge/br_netfilter.c
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
commit
aadd51aa71
691 changed files with 13324 additions and 7276 deletions
|
|
@ -437,6 +437,8 @@ static inline struct bcma_device *bcma_find_core(struct bcma_bus *bus,
|
|||
#ifdef CONFIG_BCMA_HOST_PCI
|
||||
extern void bcma_host_pci_up(struct bcma_bus *bus);
|
||||
extern void bcma_host_pci_down(struct bcma_bus *bus);
|
||||
extern int bcma_host_pci_irq_ctl(struct bcma_bus *bus,
|
||||
struct bcma_device *core, bool enable);
|
||||
#else
|
||||
static inline void bcma_host_pci_up(struct bcma_bus *bus)
|
||||
{
|
||||
|
|
@ -444,6 +446,13 @@ static inline void bcma_host_pci_up(struct bcma_bus *bus)
|
|||
static inline void bcma_host_pci_down(struct bcma_bus *bus)
|
||||
{
|
||||
}
|
||||
static inline int bcma_host_pci_irq_ctl(struct bcma_bus *bus,
|
||||
struct bcma_device *core, bool enable)
|
||||
{
|
||||
if (bus->hosttype == BCMA_HOSTTYPE_PCI)
|
||||
return -ENOTSUPP;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
extern bool bcma_core_is_enabled(struct bcma_device *core);
|
||||
|
|
|
|||
|
|
@ -238,9 +238,13 @@ struct bcma_drv_pci {
|
|||
#define pcicore_write16(pc, offset, val) bcma_write16((pc)->core, offset, val)
|
||||
#define pcicore_write32(pc, offset, val) bcma_write32((pc)->core, offset, val)
|
||||
|
||||
extern int bcma_core_pci_irq_ctl(struct bcma_bus *bus,
|
||||
struct bcma_device *core, bool enable);
|
||||
#ifdef CONFIG_BCMA_DRIVER_PCI
|
||||
extern void bcma_core_pci_power_save(struct bcma_bus *bus, bool up);
|
||||
#else
|
||||
static inline void bcma_core_pci_power_save(struct bcma_bus *bus, bool up)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
extern int bcma_core_pci_pcibios_map_irq(const struct pci_dev *dev);
|
||||
extern int bcma_core_pci_plat_dev_init(struct pci_dev *dev);
|
||||
|
|
|
|||
|
|
@ -604,6 +604,7 @@ struct inode {
|
|||
struct mutex i_mutex;
|
||||
|
||||
unsigned long dirtied_when; /* jiffies of first dirtying */
|
||||
unsigned long dirtied_time_when;
|
||||
|
||||
struct hlist_node i_hash;
|
||||
struct list_head i_wb_list; /* backing dev IO list */
|
||||
|
|
|
|||
|
|
@ -126,8 +126,23 @@
|
|||
#define GICR_PROPBASER_WaWb (5U << 7)
|
||||
#define GICR_PROPBASER_RaWaWt (6U << 7)
|
||||
#define GICR_PROPBASER_RaWaWb (7U << 7)
|
||||
#define GICR_PROPBASER_CACHEABILITY_MASK (7U << 7)
|
||||
#define GICR_PROPBASER_IDBITS_MASK (0x1f)
|
||||
|
||||
#define GICR_PENDBASER_NonShareable (0U << 10)
|
||||
#define GICR_PENDBASER_InnerShareable (1U << 10)
|
||||
#define GICR_PENDBASER_OuterShareable (2U << 10)
|
||||
#define GICR_PENDBASER_SHAREABILITY_MASK (3UL << 10)
|
||||
#define GICR_PENDBASER_nCnB (0U << 7)
|
||||
#define GICR_PENDBASER_nC (1U << 7)
|
||||
#define GICR_PENDBASER_RaWt (2U << 7)
|
||||
#define GICR_PENDBASER_RaWb (3U << 7)
|
||||
#define GICR_PENDBASER_WaWt (4U << 7)
|
||||
#define GICR_PENDBASER_WaWb (5U << 7)
|
||||
#define GICR_PENDBASER_RaWaWt (6U << 7)
|
||||
#define GICR_PENDBASER_RaWaWb (7U << 7)
|
||||
#define GICR_PENDBASER_CACHEABILITY_MASK (7U << 7)
|
||||
|
||||
/*
|
||||
* Re-Distributor registers, offsets from SGI_base
|
||||
*/
|
||||
|
|
@ -182,6 +197,7 @@
|
|||
#define GITS_CBASER_WaWb (5UL << 59)
|
||||
#define GITS_CBASER_RaWaWt (6UL << 59)
|
||||
#define GITS_CBASER_RaWaWb (7UL << 59)
|
||||
#define GITS_CBASER_CACHEABILITY_MASK (7UL << 59)
|
||||
#define GITS_CBASER_NonShareable (0UL << 10)
|
||||
#define GITS_CBASER_InnerShareable (1UL << 10)
|
||||
#define GITS_CBASER_OuterShareable (2UL << 10)
|
||||
|
|
@ -198,6 +214,7 @@
|
|||
#define GITS_BASER_WaWb (5UL << 59)
|
||||
#define GITS_BASER_RaWaWt (6UL << 59)
|
||||
#define GITS_BASER_RaWaWb (7UL << 59)
|
||||
#define GITS_BASER_CACHEABILITY_MASK (7UL << 59)
|
||||
#define GITS_BASER_TYPE_SHIFT (56)
|
||||
#define GITS_BASER_TYPE(r) (((r) >> GITS_BASER_TYPE_SHIFT) & 7)
|
||||
#define GITS_BASER_ENTRY_SIZE_SHIFT (48)
|
||||
|
|
|
|||
|
|
@ -145,11 +145,11 @@ static inline u32 jhash2(const u32 *k, u32 length, u32 initval)
|
|||
}
|
||||
|
||||
|
||||
/* jhash_3words - hash exactly 3, 2 or 1 word(s) */
|
||||
static inline u32 jhash_3words(u32 a, u32 b, u32 c, u32 initval)
|
||||
/* __jhash_nwords - hash exactly 3, 2 or 1 word(s) */
|
||||
static inline u32 __jhash_nwords(u32 a, u32 b, u32 c, u32 initval)
|
||||
{
|
||||
a += JHASH_INITVAL;
|
||||
b += JHASH_INITVAL;
|
||||
a += initval;
|
||||
b += initval;
|
||||
c += initval;
|
||||
|
||||
__jhash_final(a, b, c);
|
||||
|
|
@ -157,14 +157,19 @@ static inline u32 jhash_3words(u32 a, u32 b, u32 c, u32 initval)
|
|||
return c;
|
||||
}
|
||||
|
||||
static inline u32 jhash_3words(u32 a, u32 b, u32 c, u32 initval)
|
||||
{
|
||||
return __jhash_nwords(a, b, c, initval + JHASH_INITVAL + (3 << 2));
|
||||
}
|
||||
|
||||
static inline u32 jhash_2words(u32 a, u32 b, u32 initval)
|
||||
{
|
||||
return jhash_3words(a, b, 0, initval);
|
||||
return __jhash_nwords(a, b, 0, initval + JHASH_INITVAL + (2 << 2));
|
||||
}
|
||||
|
||||
static inline u32 jhash_1word(u32 a, u32 initval)
|
||||
{
|
||||
return jhash_3words(a, 0, 0, initval);
|
||||
return __jhash_nwords(a, 0, 0, initval + JHASH_INITVAL + (1 << 2));
|
||||
}
|
||||
|
||||
#endif /* _LINUX_JHASH_H */
|
||||
|
|
|
|||
|
|
@ -4,5 +4,6 @@
|
|||
#include <linux/compiler.h>
|
||||
|
||||
unsigned long lcm(unsigned long a, unsigned long b) __attribute_const__;
|
||||
unsigned long lcm_not_zero(unsigned long a, unsigned long b) __attribute_const__;
|
||||
|
||||
#endif /* _LCM_H */
|
||||
|
|
|
|||
|
|
@ -232,6 +232,7 @@ enum {
|
|||
* led */
|
||||
ATA_FLAG_NO_DIPM = (1 << 23), /* host not happy with DIPM */
|
||||
ATA_FLAG_LOWTAG = (1 << 24), /* host wants lowest available tag */
|
||||
ATA_FLAG_SAS_HOST = (1 << 25), /* SAS host */
|
||||
|
||||
/* bits 24:31 of ap->flags are reserved for LLD specific flags */
|
||||
|
||||
|
|
|
|||
|
|
@ -2999,6 +2999,9 @@ enum usb_irq_events {
|
|||
#define PALMAS_GPADC_TRIM15 0x0E
|
||||
#define PALMAS_GPADC_TRIM16 0x0F
|
||||
|
||||
/* TPS659038 regen2_ctrl offset iss different from palmas */
|
||||
#define TPS659038_REGEN2_CTRL 0x12
|
||||
|
||||
/* TPS65917 Interrupt registers */
|
||||
|
||||
/* Registers for function INTERRUPT */
|
||||
|
|
|
|||
|
|
@ -68,6 +68,8 @@ enum {
|
|||
MLX4_CMD_UNMAP_ICM_AUX = 0xffb,
|
||||
MLX4_CMD_SET_ICM_SIZE = 0xffd,
|
||||
MLX4_CMD_ACCESS_REG = 0x3b,
|
||||
MLX4_CMD_ALLOCATE_VPP = 0x80,
|
||||
MLX4_CMD_SET_VPORT_QOS = 0x81,
|
||||
|
||||
/*master notify fw on finish for slave's flr*/
|
||||
MLX4_CMD_INFORM_FLR_DONE = 0x5b,
|
||||
|
|
@ -186,7 +188,14 @@ enum {
|
|||
};
|
||||
|
||||
enum {
|
||||
/* set port opcode modifiers */
|
||||
/* Set port opcode modifiers */
|
||||
MLX4_SET_PORT_IB_OPCODE = 0x0,
|
||||
MLX4_SET_PORT_ETH_OPCODE = 0x1,
|
||||
MLX4_SET_PORT_BEACON_OPCODE = 0x4,
|
||||
};
|
||||
|
||||
enum {
|
||||
/* Set port Ethernet input modifiers */
|
||||
MLX4_SET_PORT_GENERAL = 0x0,
|
||||
MLX4_SET_PORT_RQP_CALC = 0x1,
|
||||
MLX4_SET_PORT_MAC_TABLE = 0x2,
|
||||
|
|
@ -294,6 +303,8 @@ void mlx4_free_cmd_mailbox(struct mlx4_dev *dev, struct mlx4_cmd_mailbox *mailbo
|
|||
u32 mlx4_comm_get_version(void);
|
||||
int mlx4_set_vf_mac(struct mlx4_dev *dev, int port, int vf, u64 mac);
|
||||
int mlx4_set_vf_vlan(struct mlx4_dev *dev, int port, int vf, u16 vlan, u8 qos);
|
||||
int mlx4_set_vf_rate(struct mlx4_dev *dev, int port, int vf, int min_tx_rate,
|
||||
int max_tx_rate);
|
||||
int mlx4_set_vf_spoofchk(struct mlx4_dev *dev, int port, int vf, bool setting);
|
||||
int mlx4_get_vf_config(struct mlx4_dev *dev, int port, int vf, struct ifla_vf_info *ivf);
|
||||
int mlx4_set_vf_link_state(struct mlx4_dev *dev, int port, int vf, int link_state);
|
||||
|
|
|
|||
|
|
@ -49,8 +49,6 @@
|
|||
#define MSIX_LEGACY_SZ 4
|
||||
#define MIN_MSIX_P_PORT 5
|
||||
|
||||
#define MLX4_NUM_UP 8
|
||||
#define MLX4_NUM_TC 8
|
||||
#define MLX4_MAX_100M_UNITS_VAL 255 /*
|
||||
* work around: can't set values
|
||||
* greater then this value when
|
||||
|
|
@ -174,6 +172,7 @@ enum {
|
|||
MLX4_DEV_CAP_FLAG_VEP_UC_STEER = 1LL << 41,
|
||||
MLX4_DEV_CAP_FLAG_VEP_MC_STEER = 1LL << 42,
|
||||
MLX4_DEV_CAP_FLAG_COUNTERS = 1LL << 48,
|
||||
MLX4_DEV_CAP_FLAG_RSS_IP_FRAG = 1LL << 52,
|
||||
MLX4_DEV_CAP_FLAG_SET_ETH_SCHED = 1LL << 53,
|
||||
MLX4_DEV_CAP_FLAG_SENSE_SUPPORT = 1LL << 55,
|
||||
MLX4_DEV_CAP_FLAG_PORT_MNG_CHG_EV = 1LL << 59,
|
||||
|
|
@ -206,7 +205,11 @@ enum {
|
|||
MLX4_DEV_CAP_FLAG2_PORT_REMAP = 1LL << 21,
|
||||
MLX4_DEV_CAP_FLAG2_QCN = 1LL << 22,
|
||||
MLX4_DEV_CAP_FLAG2_QP_RATE_LIMIT = 1LL << 23,
|
||||
MLX4_DEV_CAP_FLAG2_FLOWSTATS_EN = 1LL << 24
|
||||
MLX4_DEV_CAP_FLAG2_FLOWSTATS_EN = 1LL << 24,
|
||||
MLX4_DEV_CAP_FLAG2_QOS_VPP = 1LL << 25,
|
||||
MLX4_DEV_CAP_FLAG2_ETS_CFG = 1LL << 26,
|
||||
MLX4_DEV_CAP_FLAG2_PORT_BEACON = 1LL << 27,
|
||||
MLX4_DEV_CAP_FLAG2_IGNORE_FCS = 1LL << 28,
|
||||
};
|
||||
|
||||
enum {
|
||||
|
|
@ -1001,6 +1004,11 @@ static inline int mlx4_is_slave(struct mlx4_dev *dev)
|
|||
return dev->flags & MLX4_FLAG_SLAVE;
|
||||
}
|
||||
|
||||
static inline int mlx4_is_eth(struct mlx4_dev *dev, int port)
|
||||
{
|
||||
return dev->caps.port_type[port] == MLX4_PORT_TYPE_IB ? 0 : 1;
|
||||
}
|
||||
|
||||
int mlx4_buf_alloc(struct mlx4_dev *dev, int size, int max_direct,
|
||||
struct mlx4_buf *buf, gfp_t gfp);
|
||||
void mlx4_buf_free(struct mlx4_dev *dev, int size, struct mlx4_buf *buf);
|
||||
|
|
@ -1305,9 +1313,9 @@ int mlx4_SET_PORT_general(struct mlx4_dev *dev, u8 port, int mtu,
|
|||
u8 pptx, u8 pfctx, u8 pprx, u8 pfcrx);
|
||||
int mlx4_SET_PORT_qpn_calc(struct mlx4_dev *dev, u8 port, u32 base_qpn,
|
||||
u8 promisc);
|
||||
int mlx4_SET_PORT_PRIO2TC(struct mlx4_dev *dev, u8 port, u8 *prio2tc);
|
||||
int mlx4_SET_PORT_SCHEDULER(struct mlx4_dev *dev, u8 port, u8 *tc_tx_bw,
|
||||
u8 *pg, u16 *ratelimit);
|
||||
int mlx4_SET_PORT_BEACON(struct mlx4_dev *dev, u8 port, u16 time);
|
||||
int mlx4_SET_PORT_fcs_check(struct mlx4_dev *dev, u8 port,
|
||||
u8 ignore_fcs_value);
|
||||
int mlx4_SET_PORT_VXLAN(struct mlx4_dev *dev, u8 port, u8 steering, int enable);
|
||||
int mlx4_find_cached_mac(struct mlx4_dev *dev, u8 port, u64 mac, int *idx);
|
||||
int mlx4_find_cached_vlan(struct mlx4_dev *dev, u8 port, u16 vid, int *idx);
|
||||
|
|
|
|||
|
|
@ -209,7 +209,8 @@ struct mlx4_qp_context {
|
|||
__be16 sq_wqe_counter;
|
||||
u32 reserved3;
|
||||
__be16 rate_limit_params;
|
||||
__be16 reserved4;
|
||||
u8 reserved4;
|
||||
u8 qos_vport;
|
||||
__be32 param3;
|
||||
__be32 nummmcpeers_basemkey;
|
||||
u8 log_page_size;
|
||||
|
|
@ -231,6 +232,7 @@ struct mlx4_update_qp_context {
|
|||
enum {
|
||||
MLX4_UPD_QP_MASK_PM_STATE = 32,
|
||||
MLX4_UPD_QP_MASK_VSD = 33,
|
||||
MLX4_UPD_QP_MASK_QOS_VPP = 34,
|
||||
MLX4_UPD_QP_MASK_RATE_LIMIT = 35,
|
||||
};
|
||||
|
||||
|
|
@ -432,7 +434,8 @@ enum mlx4_update_qp_attr {
|
|||
MLX4_UPDATE_QP_SMAC = 1 << 0,
|
||||
MLX4_UPDATE_QP_VSD = 1 << 1,
|
||||
MLX4_UPDATE_QP_RATE_LIMIT = 1 << 2,
|
||||
MLX4_UPDATE_QP_SUPPORTED_ATTRS = (1 << 3) - 1
|
||||
MLX4_UPDATE_QP_QOS_VPORT = 1 << 3,
|
||||
MLX4_UPDATE_QP_SUPPORTED_ATTRS = (1 << 4) - 1
|
||||
};
|
||||
|
||||
enum mlx4_update_qp_params_flags {
|
||||
|
|
@ -441,6 +444,7 @@ enum mlx4_update_qp_params_flags {
|
|||
|
||||
struct mlx4_update_qp_params {
|
||||
u8 smac_index;
|
||||
u8 qos_vport;
|
||||
u32 flags;
|
||||
u16 rate_unit;
|
||||
u16 rate_val;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2013, Mellanox Technologies inc. All rights reserved.
|
||||
* Copyright (c) 2013-2015, Mellanox Technologies. All rights reserved.
|
||||
*
|
||||
* This software is available to you under a choice of one of two
|
||||
* licenses. You may choose to be licensed under the terms of the GNU
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2013, Mellanox Technologies inc. All rights reserved.
|
||||
* Copyright (c) 2013-2015, Mellanox Technologies. All rights reserved.
|
||||
*
|
||||
* This software is available to you under a choice of one of two
|
||||
* licenses. You may choose to be licensed under the terms of the GNU
|
||||
|
|
@ -137,14 +137,15 @@ enum {
|
|||
|
||||
static inline void mlx5_cq_arm(struct mlx5_core_cq *cq, u32 cmd,
|
||||
void __iomem *uar_page,
|
||||
spinlock_t *doorbell_lock)
|
||||
spinlock_t *doorbell_lock,
|
||||
u32 cons_index)
|
||||
{
|
||||
__be32 doorbell[2];
|
||||
u32 sn;
|
||||
u32 ci;
|
||||
|
||||
sn = cq->arm_sn & 3;
|
||||
ci = cq->cons_index & 0xffffff;
|
||||
ci = cons_index & 0xffffff;
|
||||
|
||||
*cq->arm_db = cpu_to_be32(sn << 28 | cmd | ci);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2013, Mellanox Technologies inc. All rights reserved.
|
||||
* Copyright (c) 2013-2015, Mellanox Technologies. All rights reserved.
|
||||
*
|
||||
* This software is available to you under a choice of one of two
|
||||
* licenses. You may choose to be licensed under the terms of the GNU
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2013, Mellanox Technologies inc. All rights reserved.
|
||||
* Copyright (c) 2013-2015, Mellanox Technologies. All rights reserved.
|
||||
*
|
||||
* This software is available to you under a choice of one of two
|
||||
* licenses. You may choose to be licensed under the terms of the GNU
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2013, Mellanox Technologies inc. All rights reserved.
|
||||
* Copyright (c) 2013-2015, Mellanox Technologies. All rights reserved.
|
||||
*
|
||||
* This software is available to you under a choice of one of two
|
||||
* licenses. You may choose to be licensed under the terms of the GNU
|
||||
|
|
@ -232,6 +232,9 @@ struct mlx5_cmd_stats {
|
|||
};
|
||||
|
||||
struct mlx5_cmd {
|
||||
void *cmd_alloc_buf;
|
||||
dma_addr_t alloc_dma;
|
||||
int alloc_size;
|
||||
void *cmd_buf;
|
||||
dma_addr_t dma;
|
||||
u16 cmdif_rev;
|
||||
|
|
@ -407,7 +410,7 @@ struct mlx5_core_srq {
|
|||
struct mlx5_eq_table {
|
||||
void __iomem *update_ci;
|
||||
void __iomem *update_arm_ci;
|
||||
struct list_head *comp_eq_head;
|
||||
struct list_head comp_eqs_list;
|
||||
struct mlx5_eq pages_eq;
|
||||
struct mlx5_eq async_eq;
|
||||
struct mlx5_eq cmd_eq;
|
||||
|
|
@ -722,6 +725,7 @@ int mlx5_create_map_eq(struct mlx5_core_dev *dev, struct mlx5_eq *eq, u8 vecidx,
|
|||
int mlx5_destroy_unmap_eq(struct mlx5_core_dev *dev, struct mlx5_eq *eq);
|
||||
int mlx5_start_eqs(struct mlx5_core_dev *dev);
|
||||
int mlx5_stop_eqs(struct mlx5_core_dev *dev);
|
||||
int mlx5_vector2eqn(struct mlx5_core_dev *dev, int vector, int *eqn, int *irqn);
|
||||
int mlx5_core_attach_mcg(struct mlx5_core_dev *dev, union ib_gid *mgid, u32 qpn);
|
||||
int mlx5_core_detach_mcg(struct mlx5_core_dev *dev, union ib_gid *mgid, u32 qpn);
|
||||
|
||||
|
|
@ -777,14 +781,22 @@ enum {
|
|||
MAX_MR_CACHE_ENTRIES = 16,
|
||||
};
|
||||
|
||||
enum {
|
||||
MLX5_INTERFACE_PROTOCOL_IB = 0,
|
||||
MLX5_INTERFACE_PROTOCOL_ETH = 1,
|
||||
};
|
||||
|
||||
struct mlx5_interface {
|
||||
void * (*add)(struct mlx5_core_dev *dev);
|
||||
void (*remove)(struct mlx5_core_dev *dev, void *context);
|
||||
void (*event)(struct mlx5_core_dev *dev, void *context,
|
||||
enum mlx5_dev_event event, unsigned long param);
|
||||
void * (*get_dev)(void *context);
|
||||
int protocol;
|
||||
struct list_head list;
|
||||
};
|
||||
|
||||
void *mlx5_get_protocol_dev(struct mlx5_core_dev *mdev, int protocol);
|
||||
int mlx5_register_interface(struct mlx5_interface *intf);
|
||||
void mlx5_unregister_interface(struct mlx5_interface *intf);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2014, Mellanox Technologies inc. All rights reserved.
|
||||
* Copyright (c) 2013-2015, Mellanox Technologies. All rights reserved.
|
||||
*
|
||||
* This software is available to you under a choice of one of two
|
||||
* licenses. You may choose to be licensed under the terms of the GNU
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2013, Mellanox Technologies inc. All rights reserved.
|
||||
* Copyright (c) 2013-2015, Mellanox Technologies. All rights reserved.
|
||||
*
|
||||
* This software is available to you under a choice of one of two
|
||||
* licenses. You may choose to be licensed under the terms of the GNU
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2013, Mellanox Technologies inc. All rights reserved.
|
||||
* Copyright (c) 2013-2015, Mellanox Technologies. All rights reserved.
|
||||
*
|
||||
* This software is available to you under a choice of one of two
|
||||
* licenses. You may choose to be licensed under the terms of the GNU
|
||||
|
|
|
|||
|
|
@ -33,6 +33,8 @@
|
|||
#define SDIO_DEVICE_ID_BROADCOM_43341 0xa94d
|
||||
#define SDIO_DEVICE_ID_BROADCOM_4335_4339 0x4335
|
||||
#define SDIO_DEVICE_ID_BROADCOM_43362 0xa962
|
||||
#define SDIO_DEVICE_ID_BROADCOM_43430 0xa9a6
|
||||
#define SDIO_DEVICE_ID_BROADCOM_4345 0x4345
|
||||
#define SDIO_DEVICE_ID_BROADCOM_4354 0x4354
|
||||
|
||||
#define SDIO_VENDOR_ID_INTEL 0x0089
|
||||
|
|
|
|||
|
|
@ -795,7 +795,10 @@ typedef u16 (*select_queue_fallback_t)(struct net_device *dev,
|
|||
* netdev_tx_t (*ndo_start_xmit)(struct sk_buff *skb,
|
||||
* struct net_device *dev);
|
||||
* Called when a packet needs to be transmitted.
|
||||
* Must return NETDEV_TX_OK , NETDEV_TX_BUSY.
|
||||
* Returns NETDEV_TX_OK. Can return NETDEV_TX_BUSY, but you should stop
|
||||
* the queue before that can happen; it's for obsolete devices and weird
|
||||
* corner cases, but the stack really does a non-trivial amount
|
||||
* of useless work if you return NETDEV_TX_BUSY.
|
||||
* (can also return NETDEV_TX_LOCKED iff NETIF_F_LLTX)
|
||||
* Required can not be NULL.
|
||||
*
|
||||
|
|
@ -1030,6 +1033,8 @@ typedef u16 (*select_queue_fallback_t)(struct net_device *dev,
|
|||
* int queue_index, u32 maxrate);
|
||||
* Called when a user wants to set a max-rate limitation of specific
|
||||
* TX queue.
|
||||
* int (*ndo_get_iflink)(const struct net_device *dev);
|
||||
* Called to get the iflink value of this device.
|
||||
*/
|
||||
struct net_device_ops {
|
||||
int (*ndo_init)(struct net_device *dev);
|
||||
|
|
@ -1191,6 +1196,7 @@ struct net_device_ops {
|
|||
int (*ndo_set_tx_maxrate)(struct net_device *dev,
|
||||
int queue_index,
|
||||
u32 maxrate);
|
||||
int (*ndo_get_iflink)(const struct net_device *dev);
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -1322,7 +1328,7 @@ enum netdev_priv_flags {
|
|||
* @mpls_features: Mask of features inheritable by MPLS
|
||||
*
|
||||
* @ifindex: interface index
|
||||
* @iflink: unique device identifier
|
||||
* @group: The group, that the device belongs to
|
||||
*
|
||||
* @stats: Statistics struct, which was left as a legacy, use
|
||||
* rtnl_link_stats64 instead
|
||||
|
|
@ -1482,7 +1488,6 @@ enum netdev_priv_flags {
|
|||
*
|
||||
* @qdisc_tx_busylock: XXX: need comments on this one
|
||||
*
|
||||
* @group: The group, that the device belongs to
|
||||
* @pm_qos_req: Power Management QoS object
|
||||
*
|
||||
* FIXME: cleanup struct net_device such that network protocol info
|
||||
|
|
@ -1535,7 +1540,7 @@ struct net_device {
|
|||
netdev_features_t mpls_features;
|
||||
|
||||
int ifindex;
|
||||
int iflink;
|
||||
int group;
|
||||
|
||||
struct net_device_stats stats;
|
||||
|
||||
|
|
@ -1738,7 +1743,6 @@ struct net_device {
|
|||
#endif
|
||||
struct phy_device *phydev;
|
||||
struct lock_class_key *qdisc_tx_busylock;
|
||||
int group;
|
||||
struct pm_qos_request pm_qos_req;
|
||||
};
|
||||
#define to_net_dev(d) container_of(d, struct net_device, dev)
|
||||
|
|
@ -2149,6 +2153,7 @@ void __dev_remove_pack(struct packet_type *pt);
|
|||
void dev_add_offload(struct packet_offload *po);
|
||||
void dev_remove_offload(struct packet_offload *po);
|
||||
|
||||
int dev_get_iflink(const struct net_device *dev);
|
||||
struct net_device *__dev_get_by_flags(struct net *net, unsigned short flags,
|
||||
unsigned short mask);
|
||||
struct net_device *dev_get_by_name(struct net *net, const char *name);
|
||||
|
|
@ -2159,8 +2164,12 @@ int dev_open(struct net_device *dev);
|
|||
int dev_close(struct net_device *dev);
|
||||
int dev_close_many(struct list_head *head, bool unlink);
|
||||
void dev_disable_lro(struct net_device *dev);
|
||||
int dev_loopback_xmit(struct sk_buff *newskb);
|
||||
int dev_queue_xmit(struct sk_buff *skb);
|
||||
int dev_loopback_xmit(struct sock *sk, struct sk_buff *newskb);
|
||||
int dev_queue_xmit_sk(struct sock *sk, struct sk_buff *skb);
|
||||
static inline int dev_queue_xmit(struct sk_buff *skb)
|
||||
{
|
||||
return dev_queue_xmit_sk(skb->sk, skb);
|
||||
}
|
||||
int dev_queue_xmit_accel(struct sk_buff *skb, void *accel_priv);
|
||||
int register_netdevice(struct net_device *dev);
|
||||
void unregister_netdevice_queue(struct net_device *dev, struct list_head *head);
|
||||
|
|
@ -2176,6 +2185,12 @@ void netdev_freemem(struct net_device *dev);
|
|||
void synchronize_net(void);
|
||||
int init_dummy_netdev(struct net_device *dev);
|
||||
|
||||
DECLARE_PER_CPU(int, xmit_recursion);
|
||||
static inline int dev_recursion_level(void)
|
||||
{
|
||||
return this_cpu_read(xmit_recursion);
|
||||
}
|
||||
|
||||
struct net_device *dev_get_by_index(struct net *net, int ifindex);
|
||||
struct net_device *__dev_get_by_index(struct net *net, int ifindex);
|
||||
struct net_device *dev_get_by_index_rcu(struct net *net, int ifindex);
|
||||
|
|
@ -2915,7 +2930,11 @@ static inline void dev_consume_skb_any(struct sk_buff *skb)
|
|||
|
||||
int netif_rx(struct sk_buff *skb);
|
||||
int netif_rx_ni(struct sk_buff *skb);
|
||||
int netif_receive_skb(struct sk_buff *skb);
|
||||
int netif_receive_skb_sk(struct sock *sk, struct sk_buff *skb);
|
||||
static inline int netif_receive_skb(struct sk_buff *skb)
|
||||
{
|
||||
return netif_receive_skb_sk(skb->sk, skb);
|
||||
}
|
||||
gro_result_t napi_gro_receive(struct napi_struct *napi, struct sk_buff *skb);
|
||||
void napi_gro_flush(struct napi_struct *napi, bool flush_old);
|
||||
struct sk_buff *napi_get_frags(struct napi_struct *napi);
|
||||
|
|
|
|||
|
|
@ -44,11 +44,39 @@ int netfilter_init(void);
|
|||
struct sk_buff;
|
||||
|
||||
struct nf_hook_ops;
|
||||
|
||||
struct sock;
|
||||
|
||||
struct nf_hook_state {
|
||||
unsigned int hook;
|
||||
int thresh;
|
||||
u_int8_t pf;
|
||||
struct net_device *in;
|
||||
struct net_device *out;
|
||||
struct sock *sk;
|
||||
int (*okfn)(struct sock *, struct sk_buff *);
|
||||
};
|
||||
|
||||
static inline void nf_hook_state_init(struct nf_hook_state *p,
|
||||
unsigned int hook,
|
||||
int thresh, u_int8_t pf,
|
||||
struct net_device *indev,
|
||||
struct net_device *outdev,
|
||||
struct sock *sk,
|
||||
int (*okfn)(struct sock *, struct sk_buff *))
|
||||
{
|
||||
p->hook = hook;
|
||||
p->thresh = thresh;
|
||||
p->pf = pf;
|
||||
p->in = indev;
|
||||
p->out = outdev;
|
||||
p->sk = sk;
|
||||
p->okfn = okfn;
|
||||
}
|
||||
|
||||
typedef unsigned int nf_hookfn(const struct nf_hook_ops *ops,
|
||||
struct sk_buff *skb,
|
||||
const struct net_device *in,
|
||||
const struct net_device *out,
|
||||
int (*okfn)(struct sk_buff *));
|
||||
const struct nf_hook_state *state);
|
||||
|
||||
struct nf_hook_ops {
|
||||
struct list_head list;
|
||||
|
|
@ -118,9 +146,7 @@ static inline bool nf_hooks_active(u_int8_t pf, unsigned int hook)
|
|||
}
|
||||
#endif
|
||||
|
||||
int nf_hook_slow(u_int8_t pf, unsigned int hook, struct sk_buff *skb,
|
||||
struct net_device *indev, struct net_device *outdev,
|
||||
int (*okfn)(struct sk_buff *), int thresh);
|
||||
int nf_hook_slow(struct sk_buff *skb, struct nf_hook_state *state);
|
||||
|
||||
/**
|
||||
* nf_hook_thresh - call a netfilter hook
|
||||
|
|
@ -130,21 +156,29 @@ int nf_hook_slow(u_int8_t pf, unsigned int hook, struct sk_buff *skb,
|
|||
* value indicates the packet has been consumed by the hook.
|
||||
*/
|
||||
static inline int nf_hook_thresh(u_int8_t pf, unsigned int hook,
|
||||
struct sock *sk,
|
||||
struct sk_buff *skb,
|
||||
struct net_device *indev,
|
||||
struct net_device *outdev,
|
||||
int (*okfn)(struct sk_buff *), int thresh)
|
||||
int (*okfn)(struct sock *, struct sk_buff *),
|
||||
int thresh)
|
||||
{
|
||||
if (nf_hooks_active(pf, hook))
|
||||
return nf_hook_slow(pf, hook, skb, indev, outdev, okfn, thresh);
|
||||
if (nf_hooks_active(pf, hook)) {
|
||||
struct nf_hook_state state;
|
||||
|
||||
nf_hook_state_init(&state, hook, thresh, pf,
|
||||
indev, outdev, sk, okfn);
|
||||
return nf_hook_slow(skb, &state);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
static inline int nf_hook(u_int8_t pf, unsigned int hook, struct sk_buff *skb,
|
||||
struct net_device *indev, struct net_device *outdev,
|
||||
int (*okfn)(struct sk_buff *))
|
||||
static inline int nf_hook(u_int8_t pf, unsigned int hook, struct sock *sk,
|
||||
struct sk_buff *skb, struct net_device *indev,
|
||||
struct net_device *outdev,
|
||||
int (*okfn)(struct sock *, struct sk_buff *))
|
||||
{
|
||||
return nf_hook_thresh(pf, hook, skb, indev, outdev, okfn, INT_MIN);
|
||||
return nf_hook_thresh(pf, hook, sk, skb, indev, outdev, okfn, INT_MIN);
|
||||
}
|
||||
|
||||
/* Activate hook; either okfn or kfree_skb called, unless a hook
|
||||
|
|
@ -165,35 +199,36 @@ static inline int nf_hook(u_int8_t pf, unsigned int hook, struct sk_buff *skb,
|
|||
*/
|
||||
|
||||
static inline int
|
||||
NF_HOOK_THRESH(uint8_t pf, unsigned int hook, struct sk_buff *skb,
|
||||
struct net_device *in, struct net_device *out,
|
||||
int (*okfn)(struct sk_buff *), int thresh)
|
||||
NF_HOOK_THRESH(uint8_t pf, unsigned int hook, struct sock *sk,
|
||||
struct sk_buff *skb, struct net_device *in,
|
||||
struct net_device *out,
|
||||
int (*okfn)(struct sock *, struct sk_buff *), int thresh)
|
||||
{
|
||||
int ret = nf_hook_thresh(pf, hook, skb, in, out, okfn, thresh);
|
||||
int ret = nf_hook_thresh(pf, hook, sk, skb, in, out, okfn, thresh);
|
||||
if (ret == 1)
|
||||
ret = okfn(skb);
|
||||
ret = okfn(sk, skb);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static inline int
|
||||
NF_HOOK_COND(uint8_t pf, unsigned int hook, struct sk_buff *skb,
|
||||
struct net_device *in, struct net_device *out,
|
||||
int (*okfn)(struct sk_buff *), bool cond)
|
||||
NF_HOOK_COND(uint8_t pf, unsigned int hook, struct sock *sk,
|
||||
struct sk_buff *skb, struct net_device *in, struct net_device *out,
|
||||
int (*okfn)(struct sock *, struct sk_buff *), bool cond)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (!cond ||
|
||||
((ret = nf_hook_thresh(pf, hook, skb, in, out, okfn, INT_MIN)) == 1))
|
||||
ret = okfn(skb);
|
||||
((ret = nf_hook_thresh(pf, hook, sk, skb, in, out, okfn, INT_MIN)) == 1))
|
||||
ret = okfn(sk, skb);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static inline int
|
||||
NF_HOOK(uint8_t pf, unsigned int hook, struct sk_buff *skb,
|
||||
NF_HOOK(uint8_t pf, unsigned int hook, struct sock *sk, struct sk_buff *skb,
|
||||
struct net_device *in, struct net_device *out,
|
||||
int (*okfn)(struct sk_buff *))
|
||||
int (*okfn)(struct sock *, struct sk_buff *))
|
||||
{
|
||||
return NF_HOOK_THRESH(pf, hook, skb, in, out, okfn, INT_MIN);
|
||||
return NF_HOOK_THRESH(pf, hook, sk, skb, in, out, okfn, INT_MIN);
|
||||
}
|
||||
|
||||
/* Call setsockopt() */
|
||||
|
|
@ -293,19 +328,21 @@ nf_nat_decode_session(struct sk_buff *skb, struct flowi *fl, u_int8_t family)
|
|||
}
|
||||
|
||||
#else /* !CONFIG_NETFILTER */
|
||||
#define NF_HOOK(pf, hook, skb, indev, outdev, okfn) (okfn)(skb)
|
||||
#define NF_HOOK_COND(pf, hook, skb, indev, outdev, okfn, cond) (okfn)(skb)
|
||||
#define NF_HOOK(pf, hook, sk, skb, indev, outdev, okfn) (okfn)(sk, skb)
|
||||
#define NF_HOOK_COND(pf, hook, sk, skb, indev, outdev, okfn, cond) (okfn)(sk, skb)
|
||||
static inline int nf_hook_thresh(u_int8_t pf, unsigned int hook,
|
||||
struct sock *sk,
|
||||
struct sk_buff *skb,
|
||||
struct net_device *indev,
|
||||
struct net_device *outdev,
|
||||
int (*okfn)(struct sk_buff *), int thresh)
|
||||
int (*okfn)(struct sock *sk, struct sk_buff *), int thresh)
|
||||
{
|
||||
return okfn(skb);
|
||||
return okfn(sk, skb);
|
||||
}
|
||||
static inline int nf_hook(u_int8_t pf, unsigned int hook, struct sk_buff *skb,
|
||||
struct net_device *indev, struct net_device *outdev,
|
||||
int (*okfn)(struct sk_buff *))
|
||||
static inline int nf_hook(u_int8_t pf, unsigned int hook, struct sock *sk,
|
||||
struct sk_buff *skb, struct net_device *indev,
|
||||
struct net_device *outdev,
|
||||
int (*okfn)(struct sock *, struct sk_buff *))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,8 +54,7 @@ extern struct xt_table *arpt_register_table(struct net *net,
|
|||
extern void arpt_unregister_table(struct xt_table *table);
|
||||
extern unsigned int arpt_do_table(struct sk_buff *skb,
|
||||
unsigned int hook,
|
||||
const struct net_device *in,
|
||||
const struct net_device *out,
|
||||
const struct nf_hook_state *state,
|
||||
struct xt_table *table);
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ static inline unsigned int nf_bridge_mtu_reduction(const struct sk_buff *skb)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int br_handle_frame_finish(struct sk_buff *skb);
|
||||
int br_handle_frame_finish(struct sock *sk, struct sk_buff *skb);
|
||||
|
||||
static inline void br_drop_fake_rtable(struct sk_buff *skb)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -65,8 +65,7 @@ struct ipt_error {
|
|||
extern void *ipt_alloc_initial_table(const struct xt_table *);
|
||||
extern unsigned int ipt_do_table(struct sk_buff *skb,
|
||||
unsigned int hook,
|
||||
const struct net_device *in,
|
||||
const struct net_device *out,
|
||||
const struct nf_hook_state *state,
|
||||
struct xt_table *table);
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
|
|
|
|||
|
|
@ -31,8 +31,7 @@ extern struct xt_table *ip6t_register_table(struct net *net,
|
|||
extern void ip6t_unregister_table(struct net *net, struct xt_table *table);
|
||||
extern unsigned int ip6t_do_table(struct sk_buff *skb,
|
||||
unsigned int hook,
|
||||
const struct net_device *in,
|
||||
const struct net_device *out,
|
||||
const struct nf_hook_state *state,
|
||||
struct xt_table *table);
|
||||
|
||||
/* Check for an extension */
|
||||
|
|
|
|||
|
|
@ -21,6 +21,9 @@ extern void fixed_phy_del(int phy_addr);
|
|||
extern int fixed_phy_set_link_update(struct phy_device *phydev,
|
||||
int (*link_update)(struct net_device *,
|
||||
struct fixed_phy_status *));
|
||||
extern int fixed_phy_update_state(struct phy_device *phydev,
|
||||
const struct fixed_phy_status *status,
|
||||
const struct fixed_phy_status *changed);
|
||||
#else
|
||||
static inline int fixed_phy_add(unsigned int irq, int phy_id,
|
||||
struct fixed_phy_status *status)
|
||||
|
|
@ -43,6 +46,12 @@ static inline int fixed_phy_set_link_update(struct phy_device *phydev,
|
|||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
static inline int fixed_phy_update_state(struct phy_device *phydev,
|
||||
const struct fixed_phy_status *status,
|
||||
const struct fixed_phy_status *changed)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
#endif /* CONFIG_FIXED_PHY */
|
||||
|
||||
#endif /* __PHY_FIXED_H */
|
||||
|
|
|
|||
|
|
@ -316,7 +316,7 @@ struct regulator_desc {
|
|||
* @driver_data: private regulator data
|
||||
* @of_node: OpenFirmware node to parse for device tree bindings (may be
|
||||
* NULL).
|
||||
* @regmap: regmap to use for core regmap helpers if dev_get_regulator() is
|
||||
* @regmap: regmap to use for core regmap helpers if dev_get_regmap() is
|
||||
* insufficient.
|
||||
* @ena_gpio_initialized: GPIO controlling regulator enable was properly
|
||||
* initialized, meaning that >= 0 is a valid gpio
|
||||
|
|
|
|||
|
|
@ -1625,11 +1625,11 @@ struct task_struct {
|
|||
|
||||
/*
|
||||
* numa_faults_locality tracks if faults recorded during the last
|
||||
* scan window were remote/local. The task scan period is adapted
|
||||
* based on the locality of the faults with different weights
|
||||
* depending on whether they were shared or private faults
|
||||
* scan window were remote/local or failed to migrate. The task scan
|
||||
* period is adapted based on the locality of the faults with different
|
||||
* weights depending on whether they were shared or private faults
|
||||
*/
|
||||
unsigned long numa_faults_locality[2];
|
||||
unsigned long numa_faults_locality[3];
|
||||
|
||||
unsigned long numa_pages_migrated;
|
||||
#endif /* CONFIG_NUMA_BALANCING */
|
||||
|
|
@ -1719,6 +1719,7 @@ struct task_struct {
|
|||
#define TNF_NO_GROUP 0x02
|
||||
#define TNF_SHARED 0x04
|
||||
#define TNF_FAULT_LOCAL 0x08
|
||||
#define TNF_MIGRATE_FAIL 0x10
|
||||
|
||||
#ifdef CONFIG_NUMA_BALANCING
|
||||
extern void task_numa_fault(int last_node, int node, int pages, int flags);
|
||||
|
|
|
|||
|
|
@ -60,17 +60,17 @@ struct rpc_xprt;
|
|||
#if IS_ENABLED(CONFIG_SUNRPC_DEBUG)
|
||||
void rpc_register_sysctl(void);
|
||||
void rpc_unregister_sysctl(void);
|
||||
int sunrpc_debugfs_init(void);
|
||||
void sunrpc_debugfs_init(void);
|
||||
void sunrpc_debugfs_exit(void);
|
||||
int rpc_clnt_debugfs_register(struct rpc_clnt *);
|
||||
void rpc_clnt_debugfs_register(struct rpc_clnt *);
|
||||
void rpc_clnt_debugfs_unregister(struct rpc_clnt *);
|
||||
int rpc_xprt_debugfs_register(struct rpc_xprt *);
|
||||
void rpc_xprt_debugfs_register(struct rpc_xprt *);
|
||||
void rpc_xprt_debugfs_unregister(struct rpc_xprt *);
|
||||
#else
|
||||
static inline int
|
||||
static inline void
|
||||
sunrpc_debugfs_init(void)
|
||||
{
|
||||
return 0;
|
||||
return;
|
||||
}
|
||||
|
||||
static inline void
|
||||
|
|
@ -79,10 +79,10 @@ sunrpc_debugfs_exit(void)
|
|||
return;
|
||||
}
|
||||
|
||||
static inline int
|
||||
static inline void
|
||||
rpc_clnt_debugfs_register(struct rpc_clnt *clnt)
|
||||
{
|
||||
return 0;
|
||||
return;
|
||||
}
|
||||
|
||||
static inline void
|
||||
|
|
@ -91,10 +91,10 @@ rpc_clnt_debugfs_unregister(struct rpc_clnt *clnt)
|
|||
return;
|
||||
}
|
||||
|
||||
static inline int
|
||||
static inline void
|
||||
rpc_xprt_debugfs_register(struct rpc_xprt *xprt)
|
||||
{
|
||||
return 0;
|
||||
return;
|
||||
}
|
||||
|
||||
static inline void
|
||||
|
|
|
|||
|
|
@ -58,6 +58,7 @@ static inline unsigned int tcp_optlen(const struct sk_buff *skb)
|
|||
struct tcp_fastopen_cookie {
|
||||
s8 len;
|
||||
u8 val[TCP_FASTOPEN_COOKIE_MAX];
|
||||
bool exp; /* In RFC6994 experimental option format */
|
||||
};
|
||||
|
||||
/* This defines a selective acknowledgement block. */
|
||||
|
|
@ -188,6 +189,7 @@ struct tcp_sock {
|
|||
u8 do_early_retrans:1,/* Enable RFC5827 early-retransmit */
|
||||
syn_data:1, /* SYN includes data */
|
||||
syn_fastopen:1, /* SYN includes Fast Open option */
|
||||
syn_fastopen_exp:1,/* SYN includes Fast Open exp. option */
|
||||
syn_data_acked:1,/* data in SYN is acked by SYN-ACK */
|
||||
is_cwnd_limited:1;/* forward progress limited by snd_cwnd? */
|
||||
u32 tlp_high_seq; /* snd_nxt at the time of TLP retransmit. */
|
||||
|
|
|
|||
|
|
@ -227,7 +227,7 @@ struct skb_data { /* skb->cb is one of these */
|
|||
struct urb *urb;
|
||||
struct usbnet *dev;
|
||||
enum skb_state state;
|
||||
size_t length;
|
||||
long length;
|
||||
unsigned long packets;
|
||||
};
|
||||
|
||||
|
|
@ -235,11 +235,13 @@ struct skb_data { /* skb->cb is one of these */
|
|||
* tx_fixup method before returning an skb.
|
||||
*/
|
||||
static inline void
|
||||
usbnet_set_skb_tx_stats(struct sk_buff *skb, unsigned long packets)
|
||||
usbnet_set_skb_tx_stats(struct sk_buff *skb,
|
||||
unsigned long packets, long bytes_delta)
|
||||
{
|
||||
struct skb_data *entry = (struct skb_data *) skb->cb;
|
||||
|
||||
entry->packets = packets;
|
||||
entry->length = bytes_delta;
|
||||
}
|
||||
|
||||
extern int usbnet_open(struct net_device *net);
|
||||
|
|
|
|||
|
|
@ -130,6 +130,7 @@ extern int vm_dirty_ratio;
|
|||
extern unsigned long vm_dirty_bytes;
|
||||
extern unsigned int dirty_writeback_interval;
|
||||
extern unsigned int dirty_expire_interval;
|
||||
extern unsigned int dirtytime_expire_interval;
|
||||
extern int vm_highmem_is_dirtyable;
|
||||
extern int block_dump;
|
||||
extern int laptop_mode;
|
||||
|
|
@ -146,6 +147,8 @@ extern int dirty_ratio_handler(struct ctl_table *table, int write,
|
|||
extern int dirty_bytes_handler(struct ctl_table *table, int write,
|
||||
void __user *buffer, size_t *lenp,
|
||||
loff_t *ppos);
|
||||
int dirtytime_interval_handler(struct ctl_table *table, int write,
|
||||
void __user *buffer, size_t *lenp, loff_t *ppos);
|
||||
|
||||
struct ctl_table;
|
||||
int dirty_writeback_centisecs_handler(struct ctl_table *, int,
|
||||
|
|
|
|||
Loading…
Reference in a new issue