aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-04-27 17:05:19 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2015-04-27 17:05:19 -0400
commit2decb2682f80759f631c8332f9a2a34a02150a03 (patch)
tree6c30015e4118ff6a56c67043f2ba842ed4a6e011 /include
parentb787f68c36d49bb1d9236f403813641efa74a031 (diff)
parent22a8f237c0551bae95ffcd2a7ff17d6f5fcce7e7 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Pull networking fixes from David Miller: 1) mlx4 doesn't check fully for supported valid RSS hash function, fix from Amir Vadai 2) Off by one in ibmveth_change_mtu(), from David Gibson 3) Prevent altera chip from reporting false error interrupts in some circumstances, from Chee Nouk Phoon 4) Get rid of that stupid endless loop trying to allocate a FIN packet in TCP, and in the process kill deadlocks. From Eric Dumazet 5) Fix get_rps_cpus() crash due to wrong invalid-cpu value, also from Eric Dumazet 6) Fix two bugs in async rhashtable resizing, from Thomas Graf 7) Fix topology server listener socket namespace bug in TIPC, from Ying Xue 8) Add some missing HAS_DMA kconfig dependencies, from Geert Uytterhoeven 9) bgmac driver intends to force re-polling but does so by returning the wrong value from it's ->poll() handler. Fix from Rafał Miłecki 10) When the creater of an rhashtable configures a max size for it, don't bark in the logs and drop insertions when that is exceeded. Fix from Johannes Berg 11) Recover from out of order packets in ppp mppe properly, from Sylvain Rochet * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (41 commits) bnx2x: really disable TPA if 'disable_tpa' option is set net:treewide: Fix typo in drivers/net net/mlx4_en: Prevent setting invalid RSS hash function mdio-mux-gpio: use new gpiod_get_array and gpiod_put_array functions netfilter; Add some missing default cases to switch statements in nft_reject. ppp: mppe: discard late packet in stateless mode ppp: mppe: sanity error path rework net/bonding: Make DRV macros private net: rfs: fix crash in get_rps_cpus() altera tse: add support for fixed-links. pxa168: fix double deallocation of managed resources net: fix crash in build_skb() net: eth: altera: Resolve false errors from MSGDMA to TSE ehea: Fix memory hook reference counting crashes net/tg3: Release IRQs on permanent error net: mdio-gpio: support access that may sleep inet: fix possible panic in reqsk_queue_unlink() rhashtable: don't attempt to grow when at max_size bgmac: fix requests for extra polling calls from NAPI tcp: avoid looping in tcp_send_fin() ...
Diffstat (limited to 'include')
-rw-r--r--include/linux/netdevice.h10
-rw-r--r--include/linux/rhashtable.h3
-rw-r--r--include/linux/skbuff.h1
-rw-r--r--include/net/bonding.h7
-rw-r--r--include/net/inet_connection_sock.h20
-rw-r--r--include/net/request_sock.h18
6 files changed, 11 insertions, 48 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index bcbde799ec69..dbad4d728b4b 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -60,6 +60,7 @@ struct phy_device;
60struct wireless_dev; 60struct wireless_dev;
61/* 802.15.4 specific */ 61/* 802.15.4 specific */
62struct wpan_dev; 62struct wpan_dev;
63struct mpls_dev;
63 64
64void netdev_set_default_ethtool_ops(struct net_device *dev, 65void netdev_set_default_ethtool_ops(struct net_device *dev,
65 const struct ethtool_ops *ops); 66 const struct ethtool_ops *ops);
@@ -1627,6 +1628,9 @@ struct net_device {
1627 void *ax25_ptr; 1628 void *ax25_ptr;
1628 struct wireless_dev *ieee80211_ptr; 1629 struct wireless_dev *ieee80211_ptr;
1629 struct wpan_dev *ieee802154_ptr; 1630 struct wpan_dev *ieee802154_ptr;
1631#if IS_ENABLED(CONFIG_MPLS_ROUTING)
1632 struct mpls_dev __rcu *mpls_ptr;
1633#endif
1630 1634
1631/* 1635/*
1632 * Cache lines mostly used on receive path (including eth_type_trans()) 1636 * Cache lines mostly used on receive path (including eth_type_trans())
@@ -2021,10 +2025,10 @@ struct pcpu_sw_netstats {
2021({ \ 2025({ \
2022 typeof(type) __percpu *pcpu_stats = alloc_percpu(type); \ 2026 typeof(type) __percpu *pcpu_stats = alloc_percpu(type); \
2023 if (pcpu_stats) { \ 2027 if (pcpu_stats) { \
2024 int i; \ 2028 int __cpu; \
2025 for_each_possible_cpu(i) { \ 2029 for_each_possible_cpu(__cpu) { \
2026 typeof(type) *stat; \ 2030 typeof(type) *stat; \
2027 stat = per_cpu_ptr(pcpu_stats, i); \ 2031 stat = per_cpu_ptr(pcpu_stats, __cpu); \
2028 u64_stats_init(&stat->syncp); \ 2032 u64_stats_init(&stat->syncp); \
2029 } \ 2033 } \
2030 } \ 2034 } \
diff --git a/include/linux/rhashtable.h b/include/linux/rhashtable.h
index e23d242d1230..dbcbcc59aa92 100644
--- a/include/linux/rhashtable.h
+++ b/include/linux/rhashtable.h
@@ -282,7 +282,8 @@ static inline bool rht_shrink_below_30(const struct rhashtable *ht,
282static inline bool rht_grow_above_100(const struct rhashtable *ht, 282static inline bool rht_grow_above_100(const struct rhashtable *ht,
283 const struct bucket_table *tbl) 283 const struct bucket_table *tbl)
284{ 284{
285 return atomic_read(&ht->nelems) > tbl->size; 285 return atomic_read(&ht->nelems) > tbl->size &&
286 (!ht->p.max_size || tbl->size < ht->p.max_size);
286} 287}
287 288
288/* The bucket lock is selected based on the hash and protects mutations 289/* The bucket lock is selected based on the hash and protects mutations
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 06793b598f44..66e374d62f64 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -773,6 +773,7 @@ bool skb_try_coalesce(struct sk_buff *to, struct sk_buff *from,
773 773
774struct sk_buff *__alloc_skb(unsigned int size, gfp_t priority, int flags, 774struct sk_buff *__alloc_skb(unsigned int size, gfp_t priority, int flags,
775 int node); 775 int node);
776struct sk_buff *__build_skb(void *data, unsigned int frag_size);
776struct sk_buff *build_skb(void *data, unsigned int frag_size); 777struct sk_buff *build_skb(void *data, unsigned int frag_size);
777static inline struct sk_buff *alloc_skb(unsigned int size, 778static inline struct sk_buff *alloc_skb(unsigned int size,
778 gfp_t priority) 779 gfp_t priority)
diff --git a/include/net/bonding.h b/include/net/bonding.h
index fda6feeb6c1f..78ed135e9dea 100644
--- a/include/net/bonding.h
+++ b/include/net/bonding.h
@@ -30,13 +30,6 @@
30#include <net/bond_alb.h> 30#include <net/bond_alb.h>
31#include <net/bond_options.h> 31#include <net/bond_options.h>
32 32
33#define DRV_VERSION "3.7.1"
34#define DRV_RELDATE "April 27, 2011"
35#define DRV_NAME "bonding"
36#define DRV_DESCRIPTION "Ethernet Channel Bonding Driver"
37
38#define bond_version DRV_DESCRIPTION ": v" DRV_VERSION " (" DRV_RELDATE ")\n"
39
40#define BOND_MAX_ARP_TARGETS 16 33#define BOND_MAX_ARP_TARGETS 16
41 34
42#define BOND_DEFAULT_MIIMON 100 35#define BOND_DEFAULT_MIIMON 100
diff --git a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h
index 7b5887cd1172..48a815823587 100644
--- a/include/net/inet_connection_sock.h
+++ b/include/net/inet_connection_sock.h
@@ -279,12 +279,6 @@ static inline void inet_csk_reqsk_queue_add(struct sock *sk,
279void inet_csk_reqsk_queue_hash_add(struct sock *sk, struct request_sock *req, 279void inet_csk_reqsk_queue_hash_add(struct sock *sk, struct request_sock *req,
280 unsigned long timeout); 280 unsigned long timeout);
281 281
282static inline void inet_csk_reqsk_queue_removed(struct sock *sk,
283 struct request_sock *req)
284{
285 reqsk_queue_removed(&inet_csk(sk)->icsk_accept_queue, req);
286}
287
288static inline void inet_csk_reqsk_queue_added(struct sock *sk, 282static inline void inet_csk_reqsk_queue_added(struct sock *sk,
289 const unsigned long timeout) 283 const unsigned long timeout)
290{ 284{
@@ -306,19 +300,7 @@ static inline int inet_csk_reqsk_queue_is_full(const struct sock *sk)
306 return reqsk_queue_is_full(&inet_csk(sk)->icsk_accept_queue); 300 return reqsk_queue_is_full(&inet_csk(sk)->icsk_accept_queue);
307} 301}
308 302
309static inline void inet_csk_reqsk_queue_unlink(struct sock *sk, 303void inet_csk_reqsk_queue_drop(struct sock *sk, struct request_sock *req);
310 struct request_sock *req)
311{
312 reqsk_queue_unlink(&inet_csk(sk)->icsk_accept_queue, req);
313}
314
315static inline void inet_csk_reqsk_queue_drop(struct sock *sk,
316 struct request_sock *req)
317{
318 inet_csk_reqsk_queue_unlink(sk, req);
319 inet_csk_reqsk_queue_removed(sk, req);
320 reqsk_put(req);
321}
322 304
323void inet_csk_destroy_sock(struct sock *sk); 305void inet_csk_destroy_sock(struct sock *sk);
324void inet_csk_prepare_forced_close(struct sock *sk); 306void inet_csk_prepare_forced_close(struct sock *sk);
diff --git a/include/net/request_sock.h b/include/net/request_sock.h
index fe41f3ceb008..9f4265ce8892 100644
--- a/include/net/request_sock.h
+++ b/include/net/request_sock.h
@@ -212,24 +212,6 @@ static inline int reqsk_queue_empty(struct request_sock_queue *queue)
212 return queue->rskq_accept_head == NULL; 212 return queue->rskq_accept_head == NULL;
213} 213}
214 214
215static inline void reqsk_queue_unlink(struct request_sock_queue *queue,
216 struct request_sock *req)
217{
218 struct listen_sock *lopt = queue->listen_opt;
219 struct request_sock **prev;
220
221 spin_lock(&queue->syn_wait_lock);
222
223 prev = &lopt->syn_table[req->rsk_hash];
224 while (*prev != req)
225 prev = &(*prev)->dl_next;
226 *prev = req->dl_next;
227
228 spin_unlock(&queue->syn_wait_lock);
229 if (del_timer(&req->rsk_timer))
230 reqsk_put(req);
231}
232
233static inline void reqsk_queue_add(struct request_sock_queue *queue, 215static inline void reqsk_queue_add(struct request_sock_queue *queue,
234 struct request_sock *req, 216 struct request_sock *req,
235 struct sock *parent, 217 struct sock *parent,