diff options
| author | Ingo Molnar <mingo@kernel.org> | 2013-08-29 06:02:08 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2013-08-29 06:02:08 -0400 |
| commit | aee2bce3cfdcb9bf2c51c24496ee776e8202ed11 (patch) | |
| tree | 66ff8e345cf693cfb39383f25ad796e2f59ab6ad /include | |
| parent | 5ec4c599a52362896c3e7c6a31ba6145dca9c6f5 (diff) | |
| parent | c95389b4cd6a4b52af78bea706a274453e886251 (diff) | |
Merge branch 'linus' into perf/core
Pick up the latest upstream fixes.
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'include')
| -rw-r--r-- | include/asm-generic/pgtable.h | 30 | ||||
| -rw-r--r-- | include/asm-generic/tlb.h | 2 | ||||
| -rw-r--r-- | include/linux/dcache.h | 20 | ||||
| -rw-r--r-- | include/linux/inetdevice.h | 34 | ||||
| -rw-r--r-- | include/linux/ipv6.h | 1 | ||||
| -rw-r--r-- | include/linux/lockref.h | 71 | ||||
| -rw-r--r-- | include/linux/mlx5/device.h | 22 | ||||
| -rw-r--r-- | include/linux/mlx5/driver.h | 7 | ||||
| -rw-r--r-- | include/linux/mm_types.h | 1 | ||||
| -rw-r--r-- | include/linux/regmap.h | 1 | ||||
| -rw-r--r-- | include/linux/sched.h | 6 | ||||
| -rw-r--r-- | include/linux/spinlock.h | 14 | ||||
| -rw-r--r-- | include/linux/swapops.h | 2 | ||||
| -rw-r--r-- | include/linux/syscalls.h | 5 | ||||
| -rw-r--r-- | include/linux/wait.h | 57 | ||||
| -rw-r--r-- | include/net/busy_poll.h | 7 | ||||
| -rw-r--r-- | include/net/ip6_route.h | 2 | ||||
| -rw-r--r-- | include/net/ip_tunnels.h | 14 | ||||
| -rw-r--r-- | include/net/sch_generic.h | 9 | ||||
| -rw-r--r-- | include/uapi/linux/cm4000_cs.h | 1 | ||||
| -rw-r--r-- | include/uapi/linux/ip.h | 34 | ||||
| -rw-r--r-- | include/uapi/linux/pkt_sched.h | 10 | ||||
| -rw-r--r-- | include/uapi/linux/snmp.h | 2 |
23 files changed, 265 insertions, 87 deletions
diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h index 2f47ade1b567..0807ddf97b05 100644 --- a/include/asm-generic/pgtable.h +++ b/include/asm-generic/pgtable.h | |||
| @@ -417,6 +417,36 @@ static inline pmd_t pmd_mksoft_dirty(pmd_t pmd) | |||
| 417 | { | 417 | { |
| 418 | return pmd; | 418 | return pmd; |
| 419 | } | 419 | } |
| 420 | |||
| 421 | static inline pte_t pte_swp_mksoft_dirty(pte_t pte) | ||
| 422 | { | ||
| 423 | return pte; | ||
| 424 | } | ||
| 425 | |||
| 426 | static inline int pte_swp_soft_dirty(pte_t pte) | ||
| 427 | { | ||
| 428 | return 0; | ||
| 429 | } | ||
| 430 | |||
| 431 | static inline pte_t pte_swp_clear_soft_dirty(pte_t pte) | ||
| 432 | { | ||
| 433 | return pte; | ||
| 434 | } | ||
| 435 | |||
| 436 | static inline pte_t pte_file_clear_soft_dirty(pte_t pte) | ||
| 437 | { | ||
| 438 | return pte; | ||
| 439 | } | ||
| 440 | |||
| 441 | static inline pte_t pte_file_mksoft_dirty(pte_t pte) | ||
| 442 | { | ||
| 443 | return pte; | ||
| 444 | } | ||
| 445 | |||
| 446 | static inline int pte_file_soft_dirty(pte_t pte) | ||
| 447 | { | ||
| 448 | return 0; | ||
| 449 | } | ||
| 420 | #endif | 450 | #endif |
| 421 | 451 | ||
| 422 | #ifndef __HAVE_PFNMAP_TRACKING | 452 | #ifndef __HAVE_PFNMAP_TRACKING |
diff --git a/include/asm-generic/tlb.h b/include/asm-generic/tlb.h index 13821c339a41..5672d7ea1fa0 100644 --- a/include/asm-generic/tlb.h +++ b/include/asm-generic/tlb.h | |||
| @@ -112,7 +112,7 @@ struct mmu_gather { | |||
| 112 | 112 | ||
| 113 | #define HAVE_GENERIC_MMU_GATHER | 113 | #define HAVE_GENERIC_MMU_GATHER |
| 114 | 114 | ||
| 115 | void tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, bool fullmm); | 115 | void tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, unsigned long start, unsigned long end); |
| 116 | void tlb_flush_mmu(struct mmu_gather *tlb); | 116 | void tlb_flush_mmu(struct mmu_gather *tlb); |
| 117 | void tlb_finish_mmu(struct mmu_gather *tlb, unsigned long start, | 117 | void tlb_finish_mmu(struct mmu_gather *tlb, unsigned long start, |
| 118 | unsigned long end); | 118 | unsigned long end); |
diff --git a/include/linux/dcache.h b/include/linux/dcache.h index b90337c9d468..efdc94434c30 100644 --- a/include/linux/dcache.h +++ b/include/linux/dcache.h | |||
| @@ -9,6 +9,7 @@ | |||
| 9 | #include <linux/seqlock.h> | 9 | #include <linux/seqlock.h> |
| 10 | #include <linux/cache.h> | 10 | #include <linux/cache.h> |
| 11 | #include <linux/rcupdate.h> | 11 | #include <linux/rcupdate.h> |
| 12 | #include <linux/lockref.h> | ||
| 12 | 13 | ||
| 13 | struct nameidata; | 14 | struct nameidata; |
| 14 | struct path; | 15 | struct path; |
| @@ -100,6 +101,8 @@ extern unsigned int full_name_hash(const unsigned char *, unsigned int); | |||
| 100 | # endif | 101 | # endif |
| 101 | #endif | 102 | #endif |
| 102 | 103 | ||
| 104 | #define d_lock d_lockref.lock | ||
| 105 | |||
| 103 | struct dentry { | 106 | struct dentry { |
| 104 | /* RCU lookup touched fields */ | 107 | /* RCU lookup touched fields */ |
| 105 | unsigned int d_flags; /* protected by d_lock */ | 108 | unsigned int d_flags; /* protected by d_lock */ |
| @@ -112,8 +115,7 @@ struct dentry { | |||
| 112 | unsigned char d_iname[DNAME_INLINE_LEN]; /* small names */ | 115 | unsigned char d_iname[DNAME_INLINE_LEN]; /* small names */ |
| 113 | 116 | ||
| 114 | /* Ref lookup also touches following */ | 117 | /* Ref lookup also touches following */ |
| 115 | unsigned int d_count; /* protected by d_lock */ | 118 | struct lockref d_lockref; /* per-dentry lock and refcount */ |
| 116 | spinlock_t d_lock; /* per dentry lock */ | ||
| 117 | const struct dentry_operations *d_op; | 119 | const struct dentry_operations *d_op; |
| 118 | struct super_block *d_sb; /* The root of the dentry tree */ | 120 | struct super_block *d_sb; /* The root of the dentry tree */ |
| 119 | unsigned long d_time; /* used by d_revalidate */ | 121 | unsigned long d_time; /* used by d_revalidate */ |
| @@ -318,7 +320,7 @@ static inline int __d_rcu_to_refcount(struct dentry *dentry, unsigned seq) | |||
| 318 | assert_spin_locked(&dentry->d_lock); | 320 | assert_spin_locked(&dentry->d_lock); |
| 319 | if (!read_seqcount_retry(&dentry->d_seq, seq)) { | 321 | if (!read_seqcount_retry(&dentry->d_seq, seq)) { |
| 320 | ret = 1; | 322 | ret = 1; |
| 321 | dentry->d_count++; | 323 | dentry->d_lockref.count++; |
| 322 | } | 324 | } |
| 323 | 325 | ||
| 324 | return ret; | 326 | return ret; |
| @@ -326,7 +328,7 @@ static inline int __d_rcu_to_refcount(struct dentry *dentry, unsigned seq) | |||
| 326 | 328 | ||
| 327 | static inline unsigned d_count(const struct dentry *dentry) | 329 | static inline unsigned d_count(const struct dentry *dentry) |
| 328 | { | 330 | { |
| 329 | return dentry->d_count; | 331 | return dentry->d_lockref.count; |
| 330 | } | 332 | } |
| 331 | 333 | ||
| 332 | /* validate "insecure" dentry pointer */ | 334 | /* validate "insecure" dentry pointer */ |
| @@ -336,6 +338,7 @@ extern int d_validate(struct dentry *, struct dentry *); | |||
| 336 | * helper function for dentry_operations.d_dname() members | 338 | * helper function for dentry_operations.d_dname() members |
| 337 | */ | 339 | */ |
| 338 | extern char *dynamic_dname(struct dentry *, char *, int, const char *, ...); | 340 | extern char *dynamic_dname(struct dentry *, char *, int, const char *, ...); |
| 341 | extern char *simple_dname(struct dentry *, char *, int); | ||
| 339 | 342 | ||
| 340 | extern char *__d_path(const struct path *, const struct path *, char *, int); | 343 | extern char *__d_path(const struct path *, const struct path *, char *, int); |
| 341 | extern char *d_absolute_path(const struct path *, char *, int); | 344 | extern char *d_absolute_path(const struct path *, char *, int); |
| @@ -356,17 +359,14 @@ extern char *dentry_path(struct dentry *, char *, int); | |||
| 356 | static inline struct dentry *dget_dlock(struct dentry *dentry) | 359 | static inline struct dentry *dget_dlock(struct dentry *dentry) |
| 357 | { | 360 | { |
| 358 | if (dentry) | 361 | if (dentry) |
| 359 | dentry->d_count++; | 362 | dentry->d_lockref.count++; |
| 360 | return dentry; | 363 | return dentry; |
| 361 | } | 364 | } |
| 362 | 365 | ||
| 363 | static inline struct dentry *dget(struct dentry *dentry) | 366 | static inline struct dentry *dget(struct dentry *dentry) |
| 364 | { | 367 | { |
| 365 | if (dentry) { | 368 | if (dentry) |
| 366 | spin_lock(&dentry->d_lock); | 369 | lockref_get(&dentry->d_lockref); |
| 367 | dget_dlock(dentry); | ||
| 368 | spin_unlock(&dentry->d_lock); | ||
| 369 | } | ||
| 370 | return dentry; | 370 | return dentry; |
| 371 | } | 371 | } |
| 372 | 372 | ||
diff --git a/include/linux/inetdevice.h b/include/linux/inetdevice.h index b99cd23f3474..79640e015a86 100644 --- a/include/linux/inetdevice.h +++ b/include/linux/inetdevice.h | |||
| @@ -5,45 +5,13 @@ | |||
| 5 | 5 | ||
| 6 | #include <linux/bitmap.h> | 6 | #include <linux/bitmap.h> |
| 7 | #include <linux/if.h> | 7 | #include <linux/if.h> |
| 8 | #include <linux/ip.h> | ||
| 8 | #include <linux/netdevice.h> | 9 | #include <linux/netdevice.h> |
| 9 | #include <linux/rcupdate.h> | 10 | #include <linux/rcupdate.h> |
| 10 | #include <linux/timer.h> | 11 | #include <linux/timer.h> |
| 11 | #include <linux/sysctl.h> | 12 | #include <linux/sysctl.h> |
| 12 | #include <linux/rtnetlink.h> | 13 | #include <linux/rtnetlink.h> |
| 13 | 14 | ||
| 14 | enum | ||
| 15 | { | ||
| 16 | IPV4_DEVCONF_FORWARDING=1, | ||
| 17 | IPV4_DEVCONF_MC_FORWARDING, | ||
| 18 | IPV4_DEVCONF_PROXY_ARP, | ||
| 19 | IPV4_DEVCONF_ACCEPT_REDIRECTS, | ||
| 20 | IPV4_DEVCONF_SECURE_REDIRECTS, | ||
| 21 | IPV4_DEVCONF_SEND_REDIRECTS, | ||
| 22 | IPV4_DEVCONF_SHARED_MEDIA, | ||
| 23 | IPV4_DEVCONF_RP_FILTER, | ||
| 24 | IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE, | ||
| 25 | IPV4_DEVCONF_BOOTP_RELAY, | ||
| 26 | IPV4_DEVCONF_LOG_MARTIANS, | ||
| 27 | IPV4_DEVCONF_TAG, | ||
| 28 | IPV4_DEVCONF_ARPFILTER, | ||
| 29 | IPV4_DEVCONF_MEDIUM_ID, | ||
| 30 | IPV4_DEVCONF_NOXFRM, | ||
| 31 | IPV4_DEVCONF_NOPOLICY, | ||
| 32 | IPV4_DEVCONF_FORCE_IGMP_VERSION, | ||
| 33 | IPV4_DEVCONF_ARP_ANNOUNCE, | ||
| 34 | IPV4_DEVCONF_ARP_IGNORE, | ||
| 35 | IPV4_DEVCONF_PROMOTE_SECONDARIES, | ||
| 36 | IPV4_DEVCONF_ARP_ACCEPT, | ||
| 37 | IPV4_DEVCONF_ARP_NOTIFY, | ||
| 38 | IPV4_DEVCONF_ACCEPT_LOCAL, | ||
| 39 | IPV4_DEVCONF_SRC_VMARK, | ||
| 40 | IPV4_DEVCONF_PROXY_ARP_PVLAN, | ||
| 41 | IPV4_DEVCONF_ROUTE_LOCALNET, | ||
| 42 | __IPV4_DEVCONF_MAX | ||
| 43 | }; | ||
| 44 | |||
| 45 | #define IPV4_DEVCONF_MAX (__IPV4_DEVCONF_MAX - 1) | ||
| 46 | |||
| 47 | struct ipv4_devconf { | 15 | struct ipv4_devconf { |
| 48 | void *sysctl; | 16 | void *sysctl; |
| 49 | int data[IPV4_DEVCONF_MAX]; | 17 | int data[IPV4_DEVCONF_MAX]; |
diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h index 850e95bc766c..b8b7dc755752 100644 --- a/include/linux/ipv6.h +++ b/include/linux/ipv6.h | |||
| @@ -101,6 +101,7 @@ struct inet6_skb_parm { | |||
| 101 | #define IP6SKB_FORWARDED 2 | 101 | #define IP6SKB_FORWARDED 2 |
| 102 | #define IP6SKB_REROUTED 4 | 102 | #define IP6SKB_REROUTED 4 |
| 103 | #define IP6SKB_ROUTERALERT 8 | 103 | #define IP6SKB_ROUTERALERT 8 |
| 104 | #define IP6SKB_FRAGMENTED 16 | ||
| 104 | }; | 105 | }; |
| 105 | 106 | ||
| 106 | #define IP6CB(skb) ((struct inet6_skb_parm*)((skb)->cb)) | 107 | #define IP6CB(skb) ((struct inet6_skb_parm*)((skb)->cb)) |
diff --git a/include/linux/lockref.h b/include/linux/lockref.h new file mode 100644 index 000000000000..01233e01627a --- /dev/null +++ b/include/linux/lockref.h | |||
| @@ -0,0 +1,71 @@ | |||
| 1 | #ifndef __LINUX_LOCKREF_H | ||
| 2 | #define __LINUX_LOCKREF_H | ||
| 3 | |||
| 4 | /* | ||
| 5 | * Locked reference counts. | ||
| 6 | * | ||
| 7 | * These are different from just plain atomic refcounts in that they | ||
| 8 | * are atomic with respect to the spinlock that goes with them. In | ||
| 9 | * particular, there can be implementations that don't actually get | ||
| 10 | * the spinlock for the common decrement/increment operations, but they | ||
| 11 | * still have to check that the operation is done semantically as if | ||
| 12 | * the spinlock had been taken (using a cmpxchg operation that covers | ||
| 13 | * both the lock and the count word, or using memory transactions, for | ||
| 14 | * example). | ||
| 15 | */ | ||
| 16 | |||
| 17 | #include <linux/spinlock.h> | ||
| 18 | |||
| 19 | struct lockref { | ||
| 20 | spinlock_t lock; | ||
| 21 | unsigned int count; | ||
| 22 | }; | ||
| 23 | |||
| 24 | /** | ||
| 25 | * lockref_get - Increments reference count unconditionally | ||
| 26 | * @lockcnt: pointer to lockref structure | ||
| 27 | * | ||
| 28 | * This operation is only valid if you already hold a reference | ||
| 29 | * to the object, so you know the count cannot be zero. | ||
| 30 | */ | ||
| 31 | static inline void lockref_get(struct lockref *lockref) | ||
| 32 | { | ||
| 33 | spin_lock(&lockref->lock); | ||
| 34 | lockref->count++; | ||
| 35 | spin_unlock(&lockref->lock); | ||
| 36 | } | ||
| 37 | |||
| 38 | /** | ||
| 39 | * lockref_get_not_zero - Increments count unless the count is 0 | ||
| 40 | * @lockcnt: pointer to lockref structure | ||
| 41 | * Return: 1 if count updated successfully or 0 if count is 0 | ||
| 42 | */ | ||
| 43 | static inline int lockref_get_not_zero(struct lockref *lockref) | ||
| 44 | { | ||
| 45 | int retval = 0; | ||
| 46 | |||
| 47 | spin_lock(&lockref->lock); | ||
| 48 | if (lockref->count) { | ||
| 49 | lockref->count++; | ||
| 50 | retval = 1; | ||
| 51 | } | ||
| 52 | spin_unlock(&lockref->lock); | ||
| 53 | return retval; | ||
| 54 | } | ||
| 55 | |||
| 56 | /** | ||
| 57 | * lockref_put_or_lock - decrements count unless count <= 1 before decrement | ||
| 58 | * @lockcnt: pointer to lockref structure | ||
| 59 | * Return: 1 if count updated successfully or 0 if count <= 1 and lock taken | ||
| 60 | */ | ||
| 61 | static inline int lockref_put_or_lock(struct lockref *lockref) | ||
| 62 | { | ||
| 63 | spin_lock(&lockref->lock); | ||
| 64 | if (lockref->count <= 1) | ||
| 65 | return 0; | ||
| 66 | lockref->count--; | ||
| 67 | spin_unlock(&lockref->lock); | ||
| 68 | return 1; | ||
| 69 | } | ||
| 70 | |||
| 71 | #endif /* __LINUX_LOCKREF_H */ | ||
diff --git a/include/linux/mlx5/device.h b/include/linux/mlx5/device.h index 737685e9e852..68029b30c3dc 100644 --- a/include/linux/mlx5/device.h +++ b/include/linux/mlx5/device.h | |||
| @@ -309,21 +309,20 @@ struct mlx5_hca_cap { | |||
| 309 | __be16 max_desc_sz_rq; | 309 | __be16 max_desc_sz_rq; |
| 310 | u8 rsvd21[2]; | 310 | u8 rsvd21[2]; |
| 311 | __be16 max_desc_sz_sq_dc; | 311 | __be16 max_desc_sz_sq_dc; |
| 312 | u8 rsvd22[4]; | 312 | __be32 max_qp_mcg; |
| 313 | __be16 max_qp_mcg; | 313 | u8 rsvd22[3]; |
| 314 | u8 rsvd23; | ||
| 315 | u8 log_max_mcg; | 314 | u8 log_max_mcg; |
| 316 | u8 rsvd24; | 315 | u8 rsvd23; |
| 317 | u8 log_max_pd; | 316 | u8 log_max_pd; |
| 318 | u8 rsvd25; | 317 | u8 rsvd24; |
| 319 | u8 log_max_xrcd; | 318 | u8 log_max_xrcd; |
| 320 | u8 rsvd26[42]; | 319 | u8 rsvd25[42]; |
| 321 | __be16 log_uar_page_sz; | 320 | __be16 log_uar_page_sz; |
| 322 | u8 rsvd27[28]; | 321 | u8 rsvd26[28]; |
| 323 | u8 log_msx_atomic_size_qp; | 322 | u8 log_msx_atomic_size_qp; |
| 324 | u8 rsvd28[2]; | 323 | u8 rsvd27[2]; |
| 325 | u8 log_msx_atomic_size_dc; | 324 | u8 log_msx_atomic_size_dc; |
| 326 | u8 rsvd29[76]; | 325 | u8 rsvd28[76]; |
| 327 | }; | 326 | }; |
| 328 | 327 | ||
| 329 | 328 | ||
| @@ -472,9 +471,8 @@ struct mlx5_eqe_cmd { | |||
| 472 | struct mlx5_eqe_page_req { | 471 | struct mlx5_eqe_page_req { |
| 473 | u8 rsvd0[2]; | 472 | u8 rsvd0[2]; |
| 474 | __be16 func_id; | 473 | __be16 func_id; |
| 475 | u8 rsvd1[2]; | 474 | __be32 num_pages; |
| 476 | __be16 num_pages; | 475 | __be32 rsvd1[5]; |
| 477 | __be32 rsvd2[5]; | ||
| 478 | }; | 476 | }; |
| 479 | 477 | ||
| 480 | union ev_data { | 478 | union ev_data { |
diff --git a/include/linux/mlx5/driver.h b/include/linux/mlx5/driver.h index 2aa258b0ced1..8888381fc150 100644 --- a/include/linux/mlx5/driver.h +++ b/include/linux/mlx5/driver.h | |||
| @@ -358,7 +358,7 @@ struct mlx5_caps { | |||
| 358 | u32 reserved_lkey; | 358 | u32 reserved_lkey; |
| 359 | u8 local_ca_ack_delay; | 359 | u8 local_ca_ack_delay; |
| 360 | u8 log_max_mcg; | 360 | u8 log_max_mcg; |
| 361 | u16 max_qp_mcg; | 361 | u32 max_qp_mcg; |
| 362 | int min_page_sz; | 362 | int min_page_sz; |
| 363 | }; | 363 | }; |
| 364 | 364 | ||
| @@ -691,7 +691,7 @@ void mlx5_pagealloc_cleanup(struct mlx5_core_dev *dev); | |||
| 691 | int mlx5_pagealloc_start(struct mlx5_core_dev *dev); | 691 | int mlx5_pagealloc_start(struct mlx5_core_dev *dev); |
| 692 | void mlx5_pagealloc_stop(struct mlx5_core_dev *dev); | 692 | void mlx5_pagealloc_stop(struct mlx5_core_dev *dev); |
| 693 | void mlx5_core_req_pages_handler(struct mlx5_core_dev *dev, u16 func_id, | 693 | void mlx5_core_req_pages_handler(struct mlx5_core_dev *dev, u16 func_id, |
| 694 | s16 npages); | 694 | s32 npages); |
| 695 | int mlx5_satisfy_startup_pages(struct mlx5_core_dev *dev, int boot); | 695 | int mlx5_satisfy_startup_pages(struct mlx5_core_dev *dev, int boot); |
| 696 | int mlx5_reclaim_startup_pages(struct mlx5_core_dev *dev); | 696 | int mlx5_reclaim_startup_pages(struct mlx5_core_dev *dev); |
| 697 | void mlx5_register_debugfs(void); | 697 | void mlx5_register_debugfs(void); |
| @@ -731,9 +731,6 @@ void mlx5_cq_debugfs_cleanup(struct mlx5_core_dev *dev); | |||
| 731 | int mlx5_db_alloc(struct mlx5_core_dev *dev, struct mlx5_db *db); | 731 | int mlx5_db_alloc(struct mlx5_core_dev *dev, struct mlx5_db *db); |
| 732 | void mlx5_db_free(struct mlx5_core_dev *dev, struct mlx5_db *db); | 732 | void mlx5_db_free(struct mlx5_core_dev *dev, struct mlx5_db *db); |
| 733 | 733 | ||
| 734 | typedef void (*health_handler_t)(struct pci_dev *pdev, struct health_buffer __iomem *buf, int size); | ||
| 735 | int mlx5_register_health_report_handler(health_handler_t handler); | ||
| 736 | void mlx5_unregister_health_report_handler(void); | ||
| 737 | const char *mlx5_command_str(int command); | 734 | const char *mlx5_command_str(int command); |
| 738 | int mlx5_cmdif_debugfs_init(struct mlx5_core_dev *dev); | 735 | int mlx5_cmdif_debugfs_init(struct mlx5_core_dev *dev); |
| 739 | void mlx5_cmdif_debugfs_cleanup(struct mlx5_core_dev *dev); | 736 | void mlx5_cmdif_debugfs_cleanup(struct mlx5_core_dev *dev); |
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index fb425aa16c01..faf4b7c1ad12 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h | |||
| @@ -332,6 +332,7 @@ struct mm_struct { | |||
| 332 | unsigned long pgoff, unsigned long flags); | 332 | unsigned long pgoff, unsigned long flags); |
| 333 | #endif | 333 | #endif |
| 334 | unsigned long mmap_base; /* base of mmap area */ | 334 | unsigned long mmap_base; /* base of mmap area */ |
| 335 | unsigned long mmap_legacy_base; /* base of mmap area in bottom-up allocations */ | ||
| 335 | unsigned long task_size; /* size of task vm space */ | 336 | unsigned long task_size; /* size of task vm space */ |
| 336 | unsigned long highest_vm_end; /* highest vma end address */ | 337 | unsigned long highest_vm_end; /* highest vma end address */ |
| 337 | pgd_t * pgd; | 338 | pgd_t * pgd; |
diff --git a/include/linux/regmap.h b/include/linux/regmap.h index 580a5320cc96..6d91fcb4c5cb 100644 --- a/include/linux/regmap.h +++ b/include/linux/regmap.h | |||
| @@ -16,6 +16,7 @@ | |||
| 16 | #include <linux/list.h> | 16 | #include <linux/list.h> |
| 17 | #include <linux/rbtree.h> | 17 | #include <linux/rbtree.h> |
| 18 | #include <linux/err.h> | 18 | #include <linux/err.h> |
| 19 | #include <linux/bug.h> | ||
| 19 | 20 | ||
| 20 | struct module; | 21 | struct module; |
| 21 | struct device; | 22 | struct device; |
diff --git a/include/linux/sched.h b/include/linux/sched.h index 77c887b5d12f..f79ced719435 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
| @@ -1535,6 +1535,8 @@ static inline pid_t task_pgrp_nr(struct task_struct *tsk) | |||
| 1535 | * Test if a process is not yet dead (at most zombie state) | 1535 | * Test if a process is not yet dead (at most zombie state) |
| 1536 | * If pid_alive fails, then pointers within the task structure | 1536 | * If pid_alive fails, then pointers within the task structure |
| 1537 | * can be stale and must not be dereferenced. | 1537 | * can be stale and must not be dereferenced. |
| 1538 | * | ||
| 1539 | * Return: 1 if the process is alive. 0 otherwise. | ||
| 1538 | */ | 1540 | */ |
| 1539 | static inline int pid_alive(struct task_struct *p) | 1541 | static inline int pid_alive(struct task_struct *p) |
| 1540 | { | 1542 | { |
| @@ -1546,6 +1548,8 @@ static inline int pid_alive(struct task_struct *p) | |||
| 1546 | * @tsk: Task structure to be checked. | 1548 | * @tsk: Task structure to be checked. |
| 1547 | * | 1549 | * |
| 1548 | * Check if a task structure is the first user space task the kernel created. | 1550 | * Check if a task structure is the first user space task the kernel created. |
| 1551 | * | ||
| 1552 | * Return: 1 if the task structure is init. 0 otherwise. | ||
| 1549 | */ | 1553 | */ |
| 1550 | static inline int is_global_init(struct task_struct *tsk) | 1554 | static inline int is_global_init(struct task_struct *tsk) |
| 1551 | { | 1555 | { |
| @@ -1897,6 +1901,8 @@ extern struct task_struct *idle_task(int cpu); | |||
| 1897 | /** | 1901 | /** |
| 1898 | * is_idle_task - is the specified task an idle task? | 1902 | * is_idle_task - is the specified task an idle task? |
| 1899 | * @p: the task in question. | 1903 | * @p: the task in question. |
| 1904 | * | ||
| 1905 | * Return: 1 if @p is an idle task. 0 otherwise. | ||
| 1900 | */ | 1906 | */ |
| 1901 | static inline bool is_idle_task(const struct task_struct *p) | 1907 | static inline bool is_idle_task(const struct task_struct *p) |
| 1902 | { | 1908 | { |
diff --git a/include/linux/spinlock.h b/include/linux/spinlock.h index 7d537ced949a..75f34949d9ab 100644 --- a/include/linux/spinlock.h +++ b/include/linux/spinlock.h | |||
| @@ -117,9 +117,17 @@ do { \ | |||
| 117 | #endif /*arch_spin_is_contended*/ | 117 | #endif /*arch_spin_is_contended*/ |
| 118 | #endif | 118 | #endif |
| 119 | 119 | ||
| 120 | /* The lock does not imply full memory barrier. */ | 120 | /* |
| 121 | #ifndef ARCH_HAS_SMP_MB_AFTER_LOCK | 121 | * Despite its name it doesn't necessarily has to be a full barrier. |
| 122 | static inline void smp_mb__after_lock(void) { smp_mb(); } | 122 | * It should only guarantee that a STORE before the critical section |
| 123 | * can not be reordered with a LOAD inside this section. | ||
| 124 | * spin_lock() is the one-way barrier, this LOAD can not escape out | ||
| 125 | * of the region. So the default implementation simply ensures that | ||
| 126 | * a STORE can not move into the critical section, smp_wmb() should | ||
| 127 | * serialize it with another STORE done by spin_lock(). | ||
| 128 | */ | ||
| 129 | #ifndef smp_mb__before_spinlock | ||
| 130 | #define smp_mb__before_spinlock() smp_wmb() | ||
| 123 | #endif | 131 | #endif |
| 124 | 132 | ||
| 125 | /** | 133 | /** |
diff --git a/include/linux/swapops.h b/include/linux/swapops.h index c5fd30d2a415..8d4fa82bfb91 100644 --- a/include/linux/swapops.h +++ b/include/linux/swapops.h | |||
| @@ -67,6 +67,8 @@ static inline swp_entry_t pte_to_swp_entry(pte_t pte) | |||
| 67 | swp_entry_t arch_entry; | 67 | swp_entry_t arch_entry; |
| 68 | 68 | ||
| 69 | BUG_ON(pte_file(pte)); | 69 | BUG_ON(pte_file(pte)); |
| 70 | if (pte_swp_soft_dirty(pte)) | ||
| 71 | pte = pte_swp_clear_soft_dirty(pte); | ||
| 70 | arch_entry = __pte_to_swp_entry(pte); | 72 | arch_entry = __pte_to_swp_entry(pte); |
| 71 | return swp_entry(__swp_type(arch_entry), __swp_offset(arch_entry)); | 73 | return swp_entry(__swp_type(arch_entry), __swp_offset(arch_entry)); |
| 72 | } | 74 | } |
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index 4147d700a293..84662ecc7b51 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h | |||
| @@ -802,9 +802,14 @@ asmlinkage long sys_vfork(void); | |||
| 802 | asmlinkage long sys_clone(unsigned long, unsigned long, int __user *, int, | 802 | asmlinkage long sys_clone(unsigned long, unsigned long, int __user *, int, |
| 803 | int __user *); | 803 | int __user *); |
| 804 | #else | 804 | #else |
| 805 | #ifdef CONFIG_CLONE_BACKWARDS3 | ||
| 806 | asmlinkage long sys_clone(unsigned long, unsigned long, int, int __user *, | ||
| 807 | int __user *, int); | ||
| 808 | #else | ||
| 805 | asmlinkage long sys_clone(unsigned long, unsigned long, int __user *, | 809 | asmlinkage long sys_clone(unsigned long, unsigned long, int __user *, |
| 806 | int __user *, int); | 810 | int __user *, int); |
| 807 | #endif | 811 | #endif |
| 812 | #endif | ||
| 808 | 813 | ||
| 809 | asmlinkage long sys_execve(const char __user *filename, | 814 | asmlinkage long sys_execve(const char __user *filename, |
| 810 | const char __user *const __user *argv, | 815 | const char __user *const __user *argv, |
diff --git a/include/linux/wait.h b/include/linux/wait.h index f487a4750b7f..a67fc1635592 100644 --- a/include/linux/wait.h +++ b/include/linux/wait.h | |||
| @@ -811,6 +811,63 @@ do { \ | |||
| 811 | __ret; \ | 811 | __ret; \ |
| 812 | }) | 812 | }) |
| 813 | 813 | ||
| 814 | #define __wait_event_interruptible_lock_irq_timeout(wq, condition, \ | ||
| 815 | lock, ret) \ | ||
| 816 | do { \ | ||
| 817 | DEFINE_WAIT(__wait); \ | ||
| 818 | \ | ||
| 819 | for (;;) { \ | ||
| 820 | prepare_to_wait(&wq, &__wait, TASK_INTERRUPTIBLE); \ | ||
| 821 | if (condition) \ | ||
| 822 | break; \ | ||
| 823 | if (signal_pending(current)) { \ | ||
| 824 | ret = -ERESTARTSYS; \ | ||
| 825 | break; \ | ||
| 826 | } \ | ||
| 827 | spin_unlock_irq(&lock); \ | ||
| 828 | ret = schedule_timeout(ret); \ | ||
| 829 | spin_lock_irq(&lock); \ | ||
| 830 | if (!ret) \ | ||
| 831 | break; \ | ||
| 832 | } \ | ||
| 833 | finish_wait(&wq, &__wait); \ | ||
| 834 | } while (0) | ||
| 835 | |||
| 836 | /** | ||
| 837 | * wait_event_interruptible_lock_irq_timeout - sleep until a condition gets true or a timeout elapses. | ||
| 838 | * The condition is checked under the lock. This is expected | ||
| 839 | * to be called with the lock taken. | ||
| 840 | * @wq: the waitqueue to wait on | ||
| 841 | * @condition: a C expression for the event to wait for | ||
| 842 | * @lock: a locked spinlock_t, which will be released before schedule() | ||
| 843 | * and reacquired afterwards. | ||
| 844 | * @timeout: timeout, in jiffies | ||
| 845 | * | ||
| 846 | * The process is put to sleep (TASK_INTERRUPTIBLE) until the | ||
| 847 | * @condition evaluates to true or signal is received. The @condition is | ||
| 848 | * checked each time the waitqueue @wq is woken up. | ||
| 849 | * | ||
| 850 | * wake_up() has to be called after changing any variable that could | ||
| 851 | * change the result of the wait condition. | ||
| 852 | * | ||
| 853 | * This is supposed to be called while holding the lock. The lock is | ||
| 854 | * dropped before going to sleep and is reacquired afterwards. | ||
| 855 | * | ||
| 856 | * The function returns 0 if the @timeout elapsed, -ERESTARTSYS if it | ||
| 857 | * was interrupted by a signal, and the remaining jiffies otherwise | ||
| 858 | * if the condition evaluated to true before the timeout elapsed. | ||
| 859 | */ | ||
| 860 | #define wait_event_interruptible_lock_irq_timeout(wq, condition, lock, \ | ||
| 861 | timeout) \ | ||
| 862 | ({ \ | ||
| 863 | int __ret = timeout; \ | ||
| 864 | \ | ||
| 865 | if (!(condition)) \ | ||
| 866 | __wait_event_interruptible_lock_irq_timeout( \ | ||
| 867 | wq, condition, lock, __ret); \ | ||
| 868 | __ret; \ | ||
| 869 | }) | ||
| 870 | |||
| 814 | 871 | ||
| 815 | /* | 872 | /* |
| 816 | * These are the old interfaces to sleep waiting for an event. | 873 | * These are the old interfaces to sleep waiting for an event. |
diff --git a/include/net/busy_poll.h b/include/net/busy_poll.h index f18b91966d3d..8a358a2c97e6 100644 --- a/include/net/busy_poll.h +++ b/include/net/busy_poll.h | |||
| @@ -122,7 +122,7 @@ static inline bool sk_busy_loop(struct sock *sk, int nonblock) | |||
| 122 | if (rc > 0) | 122 | if (rc > 0) |
| 123 | /* local bh are disabled so it is ok to use _BH */ | 123 | /* local bh are disabled so it is ok to use _BH */ |
| 124 | NET_ADD_STATS_BH(sock_net(sk), | 124 | NET_ADD_STATS_BH(sock_net(sk), |
| 125 | LINUX_MIB_LOWLATENCYRXPACKETS, rc); | 125 | LINUX_MIB_BUSYPOLLRXPACKETS, rc); |
| 126 | 126 | ||
| 127 | } while (!nonblock && skb_queue_empty(&sk->sk_receive_queue) && | 127 | } while (!nonblock && skb_queue_empty(&sk->sk_receive_queue) && |
| 128 | !need_resched() && !busy_loop_timeout(end_time)); | 128 | !need_resched() && !busy_loop_timeout(end_time)); |
| @@ -162,11 +162,6 @@ static inline bool sk_can_busy_loop(struct sock *sk) | |||
| 162 | return false; | 162 | return false; |
| 163 | } | 163 | } |
| 164 | 164 | ||
| 165 | static inline bool sk_busy_poll(struct sock *sk, int nonblock) | ||
| 166 | { | ||
| 167 | return false; | ||
| 168 | } | ||
| 169 | |||
| 170 | static inline void skb_mark_napi_id(struct sk_buff *skb, | 165 | static inline void skb_mark_napi_id(struct sk_buff *skb, |
| 171 | struct napi_struct *napi) | 166 | struct napi_struct *napi) |
| 172 | { | 167 | { |
diff --git a/include/net/ip6_route.h b/include/net/ip6_route.h index 260f83f16bcf..f667248202b6 100644 --- a/include/net/ip6_route.h +++ b/include/net/ip6_route.h | |||
| @@ -135,6 +135,8 @@ extern void ip6_update_pmtu(struct sk_buff *skb, struct net *net, __be32 mtu, | |||
| 135 | extern void ip6_sk_update_pmtu(struct sk_buff *skb, struct sock *sk, | 135 | extern void ip6_sk_update_pmtu(struct sk_buff *skb, struct sock *sk, |
| 136 | __be32 mtu); | 136 | __be32 mtu); |
| 137 | extern void ip6_redirect(struct sk_buff *skb, struct net *net, int oif, u32 mark); | 137 | extern void ip6_redirect(struct sk_buff *skb, struct net *net, int oif, u32 mark); |
| 138 | extern void ip6_redirect_no_header(struct sk_buff *skb, struct net *net, int oif, | ||
| 139 | u32 mark); | ||
| 138 | extern void ip6_sk_redirect(struct sk_buff *skb, struct sock *sk); | 140 | extern void ip6_sk_redirect(struct sk_buff *skb, struct sock *sk); |
| 139 | 141 | ||
| 140 | struct netlink_callback; | 142 | struct netlink_callback; |
diff --git a/include/net/ip_tunnels.h b/include/net/ip_tunnels.h index 781b3cf86a2f..a354db5b7662 100644 --- a/include/net/ip_tunnels.h +++ b/include/net/ip_tunnels.h | |||
| @@ -145,20 +145,6 @@ static inline u8 ip_tunnel_ecn_encap(u8 tos, const struct iphdr *iph, | |||
| 145 | return INET_ECN_encapsulate(tos, inner); | 145 | return INET_ECN_encapsulate(tos, inner); |
| 146 | } | 146 | } |
| 147 | 147 | ||
| 148 | static inline void tunnel_ip_select_ident(struct sk_buff *skb, | ||
| 149 | const struct iphdr *old_iph, | ||
| 150 | struct dst_entry *dst) | ||
| 151 | { | ||
| 152 | struct iphdr *iph = ip_hdr(skb); | ||
| 153 | |||
| 154 | /* Use inner packet iph-id if possible. */ | ||
| 155 | if (skb->protocol == htons(ETH_P_IP) && old_iph->id) | ||
| 156 | iph->id = old_iph->id; | ||
| 157 | else | ||
| 158 | __ip_select_ident(iph, dst, | ||
| 159 | (skb_shinfo(skb)->gso_segs ?: 1) - 1); | ||
| 160 | } | ||
| 161 | |||
| 162 | int iptunnel_pull_header(struct sk_buff *skb, int hdr_len, __be16 inner_proto); | 148 | int iptunnel_pull_header(struct sk_buff *skb, int hdr_len, __be16 inner_proto); |
| 163 | int iptunnel_xmit(struct net *net, struct rtable *rt, | 149 | int iptunnel_xmit(struct net *net, struct rtable *rt, |
| 164 | struct sk_buff *skb, | 150 | struct sk_buff *skb, |
diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h index 6eab63363e59..e5ae0c50fa9c 100644 --- a/include/net/sch_generic.h +++ b/include/net/sch_generic.h | |||
| @@ -683,13 +683,19 @@ struct psched_ratecfg { | |||
| 683 | u64 rate_bytes_ps; /* bytes per second */ | 683 | u64 rate_bytes_ps; /* bytes per second */ |
| 684 | u32 mult; | 684 | u32 mult; |
| 685 | u16 overhead; | 685 | u16 overhead; |
| 686 | u8 linklayer; | ||
| 686 | u8 shift; | 687 | u8 shift; |
| 687 | }; | 688 | }; |
| 688 | 689 | ||
| 689 | static inline u64 psched_l2t_ns(const struct psched_ratecfg *r, | 690 | static inline u64 psched_l2t_ns(const struct psched_ratecfg *r, |
| 690 | unsigned int len) | 691 | unsigned int len) |
| 691 | { | 692 | { |
| 692 | return ((u64)(len + r->overhead) * r->mult) >> r->shift; | 693 | len += r->overhead; |
| 694 | |||
| 695 | if (unlikely(r->linklayer == TC_LINKLAYER_ATM)) | ||
| 696 | return ((u64)(DIV_ROUND_UP(len,48)*53) * r->mult) >> r->shift; | ||
| 697 | |||
| 698 | return ((u64)len * r->mult) >> r->shift; | ||
| 693 | } | 699 | } |
| 694 | 700 | ||
| 695 | extern void psched_ratecfg_precompute(struct psched_ratecfg *r, const struct tc_ratespec *conf); | 701 | extern void psched_ratecfg_precompute(struct psched_ratecfg *r, const struct tc_ratespec *conf); |
| @@ -700,6 +706,7 @@ static inline void psched_ratecfg_getrate(struct tc_ratespec *res, | |||
| 700 | memset(res, 0, sizeof(*res)); | 706 | memset(res, 0, sizeof(*res)); |
| 701 | res->rate = r->rate_bytes_ps; | 707 | res->rate = r->rate_bytes_ps; |
| 702 | res->overhead = r->overhead; | 708 | res->overhead = r->overhead; |
| 709 | res->linklayer = (r->linklayer & TC_LINKLAYER_MASK); | ||
| 703 | } | 710 | } |
| 704 | 711 | ||
| 705 | #endif | 712 | #endif |
diff --git a/include/uapi/linux/cm4000_cs.h b/include/uapi/linux/cm4000_cs.h index bc51f77db918..1217f751a1bc 100644 --- a/include/uapi/linux/cm4000_cs.h +++ b/include/uapi/linux/cm4000_cs.h | |||
| @@ -2,6 +2,7 @@ | |||
| 2 | #define _UAPI_CM4000_H_ | 2 | #define _UAPI_CM4000_H_ |
| 3 | 3 | ||
| 4 | #include <linux/types.h> | 4 | #include <linux/types.h> |
| 5 | #include <linux/ioctl.h> | ||
| 5 | 6 | ||
| 6 | #define MAX_ATR 33 | 7 | #define MAX_ATR 33 |
| 7 | 8 | ||
diff --git a/include/uapi/linux/ip.h b/include/uapi/linux/ip.h index 6cf06bfd841b..2fee45bdec0a 100644 --- a/include/uapi/linux/ip.h +++ b/include/uapi/linux/ip.h | |||
| @@ -133,4 +133,38 @@ struct ip_beet_phdr { | |||
| 133 | __u8 reserved; | 133 | __u8 reserved; |
| 134 | }; | 134 | }; |
| 135 | 135 | ||
| 136 | /* index values for the variables in ipv4_devconf */ | ||
| 137 | enum | ||
| 138 | { | ||
| 139 | IPV4_DEVCONF_FORWARDING=1, | ||
| 140 | IPV4_DEVCONF_MC_FORWARDING, | ||
| 141 | IPV4_DEVCONF_PROXY_ARP, | ||
| 142 | IPV4_DEVCONF_ACCEPT_REDIRECTS, | ||
| 143 | IPV4_DEVCONF_SECURE_REDIRECTS, | ||
| 144 | IPV4_DEVCONF_SEND_REDIRECTS, | ||
| 145 | IPV4_DEVCONF_SHARED_MEDIA, | ||
| 146 | IPV4_DEVCONF_RP_FILTER, | ||
| 147 | IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE, | ||
| 148 | IPV4_DEVCONF_BOOTP_RELAY, | ||
| 149 | IPV4_DEVCONF_LOG_MARTIANS, | ||
| 150 | IPV4_DEVCONF_TAG, | ||
| 151 | IPV4_DEVCONF_ARPFILTER, | ||
| 152 | IPV4_DEVCONF_MEDIUM_ID, | ||
| 153 | IPV4_DEVCONF_NOXFRM, | ||
| 154 | IPV4_DEVCONF_NOPOLICY, | ||
| 155 | IPV4_DEVCONF_FORCE_IGMP_VERSION, | ||
| 156 | IPV4_DEVCONF_ARP_ANNOUNCE, | ||
| 157 | IPV4_DEVCONF_ARP_IGNORE, | ||
| 158 | IPV4_DEVCONF_PROMOTE_SECONDARIES, | ||
| 159 | IPV4_DEVCONF_ARP_ACCEPT, | ||
| 160 | IPV4_DEVCONF_ARP_NOTIFY, | ||
| 161 | IPV4_DEVCONF_ACCEPT_LOCAL, | ||
| 162 | IPV4_DEVCONF_SRC_VMARK, | ||
| 163 | IPV4_DEVCONF_PROXY_ARP_PVLAN, | ||
| 164 | IPV4_DEVCONF_ROUTE_LOCALNET, | ||
| 165 | __IPV4_DEVCONF_MAX | ||
| 166 | }; | ||
| 167 | |||
| 168 | #define IPV4_DEVCONF_MAX (__IPV4_DEVCONF_MAX - 1) | ||
| 169 | |||
| 136 | #endif /* _UAPI_LINUX_IP_H */ | 170 | #endif /* _UAPI_LINUX_IP_H */ |
diff --git a/include/uapi/linux/pkt_sched.h b/include/uapi/linux/pkt_sched.h index dbd71b0c7d8c..09d62b9228ff 100644 --- a/include/uapi/linux/pkt_sched.h +++ b/include/uapi/linux/pkt_sched.h | |||
| @@ -73,9 +73,17 @@ struct tc_estimator { | |||
| 73 | #define TC_H_ROOT (0xFFFFFFFFU) | 73 | #define TC_H_ROOT (0xFFFFFFFFU) |
| 74 | #define TC_H_INGRESS (0xFFFFFFF1U) | 74 | #define TC_H_INGRESS (0xFFFFFFF1U) |
| 75 | 75 | ||
| 76 | /* Need to corrospond to iproute2 tc/tc_core.h "enum link_layer" */ | ||
| 77 | enum tc_link_layer { | ||
| 78 | TC_LINKLAYER_UNAWARE, /* Indicate unaware old iproute2 util */ | ||
| 79 | TC_LINKLAYER_ETHERNET, | ||
| 80 | TC_LINKLAYER_ATM, | ||
| 81 | }; | ||
| 82 | #define TC_LINKLAYER_MASK 0x0F /* limit use to lower 4 bits */ | ||
| 83 | |||
| 76 | struct tc_ratespec { | 84 | struct tc_ratespec { |
| 77 | unsigned char cell_log; | 85 | unsigned char cell_log; |
| 78 | unsigned char __reserved; | 86 | __u8 linklayer; /* lower 4 bits */ |
| 79 | unsigned short overhead; | 87 | unsigned short overhead; |
| 80 | short cell_align; | 88 | short cell_align; |
| 81 | unsigned short mpu; | 89 | unsigned short mpu; |
diff --git a/include/uapi/linux/snmp.h b/include/uapi/linux/snmp.h index af0a674cc677..a1356d3b54df 100644 --- a/include/uapi/linux/snmp.h +++ b/include/uapi/linux/snmp.h | |||
| @@ -253,7 +253,7 @@ enum | |||
| 253 | LINUX_MIB_TCPFASTOPENLISTENOVERFLOW, /* TCPFastOpenListenOverflow */ | 253 | LINUX_MIB_TCPFASTOPENLISTENOVERFLOW, /* TCPFastOpenListenOverflow */ |
| 254 | LINUX_MIB_TCPFASTOPENCOOKIEREQD, /* TCPFastOpenCookieReqd */ | 254 | LINUX_MIB_TCPFASTOPENCOOKIEREQD, /* TCPFastOpenCookieReqd */ |
| 255 | LINUX_MIB_TCPSPURIOUS_RTX_HOSTQUEUES, /* TCPSpuriousRtxHostQueues */ | 255 | LINUX_MIB_TCPSPURIOUS_RTX_HOSTQUEUES, /* TCPSpuriousRtxHostQueues */ |
| 256 | LINUX_MIB_LOWLATENCYRXPACKETS, /* LowLatencyRxPackets */ | 256 | LINUX_MIB_BUSYPOLLRXPACKETS, /* BusyPollRxPackets */ |
| 257 | __LINUX_MIB_MAX | 257 | __LINUX_MIB_MAX |
| 258 | }; | 258 | }; |
| 259 | 259 | ||
