diff options
author | Hauke Mehrtens <hauke@hauke-m.de> | 2013-12-15 19:16:30 +0000 |
---|---|---|
committer | Hauke Mehrtens <hauke@hauke-m.de> | 2013-12-15 19:16:30 +0000 |
commit | 952db22551ae621deef18680625aaede453001f4 (patch) | |
tree | 3e70781509679af75aa1d73cc62d32b1f3a9ebb7 /target/linux/generic | |
parent | fd50416248add8012b0581fc3c28875c546c947b (diff) | |
download | upstream-952db22551ae621deef18680625aaede453001f4.tar.gz upstream-952db22551ae621deef18680625aaede453001f4.tar.bz2 upstream-952db22551ae621deef18680625aaede453001f4.zip |
kernel: update kernel 3.10 to 3.10.24
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
SVN-Revision: 39059
Diffstat (limited to 'target/linux/generic')
8 files changed, 26 insertions, 106 deletions
diff --git a/target/linux/generic/patches-3.10/010-tsq_queueing_minimum.patch b/target/linux/generic/patches-3.10/010-tsq_queueing_minimum.patch deleted file mode 100644 index 2d2dafcdb2..0000000000 --- a/target/linux/generic/patches-3.10/010-tsq_queueing_minimum.patch +++ /dev/null @@ -1,80 +0,0 @@ -From 98e09386c0ef4dfd48af7ba60ff908f0d525cdee Mon Sep 17 00:00:00 2001 -From: Eric Dumazet <edumazet@google.com> -Date: Wed, 13 Nov 2013 14:32:54 +0000 -Subject: tcp: tsq: restore minimal amount of queueing - -After commit c9eeec26e32e ("tcp: TSQ can use a dynamic limit"), several -users reported throughput regressions, notably on mvneta and wifi -adapters. - -802.11 AMPDU requires a fair amount of queueing to be effective. - -This patch partially reverts the change done in tcp_write_xmit() -so that the minimal amount is sysctl_tcp_limit_output_bytes. - -It also remove the use of this sysctl while building skb stored -in write queue, as TSO autosizing does the right thing anyway. - -Users with well behaving NICS and correct qdisc (like sch_fq), -can then lower the default sysctl_tcp_limit_output_bytes value from -128KB to 8KB. - -This new usage of sysctl_tcp_limit_output_bytes permits each driver -authors to check how their driver performs when/if the value is set -to a minimum of 4KB. - -Normally, line rate for a single TCP flow should be possible, -but some drivers rely on timers to perform TX completion and -too long TX completion delays prevent reaching full throughput. - -Fixes: c9eeec26e32e ("tcp: TSQ can use a dynamic limit") -Signed-off-by: Eric Dumazet <edumazet@google.com> -Reported-by: Sujith Manoharan <sujith@msujith.org> -Reported-by: Arnaud Ebalard <arno@natisbad.org> -Tested-by: Sujith Manoharan <sujith@msujith.org> -Cc: Felix Fietkau <nbd@openwrt.org> -Signed-off-by: David S. Miller <davem@davemloft.net> ---- ---- a/Documentation/networking/ip-sysctl.txt -+++ b/Documentation/networking/ip-sysctl.txt -@@ -571,9 +571,6 @@ tcp_limit_output_bytes - INTEGER - typical pfifo_fast qdiscs. - tcp_limit_output_bytes limits the number of bytes on qdisc - or device to reduce artificial RTT/cwnd and reduce bufferbloat. -- Note: For GSO/TSO enabled flows, we try to have at least two -- packets in flight. Reducing tcp_limit_output_bytes might also -- reduce the size of individual GSO packet (64KB being the max) - Default: 131072 - - tcp_challenge_ack_limit - INTEGER ---- a/net/ipv4/tcp.c -+++ b/net/ipv4/tcp.c -@@ -807,12 +807,6 @@ static unsigned int tcp_xmit_size_goal(s - xmit_size_goal = min_t(u32, gso_size, - sk->sk_gso_max_size - 1 - hlen); - -- /* TSQ : try to have at least two segments in flight -- * (one in NIC TX ring, another in Qdisc) -- */ -- xmit_size_goal = min_t(u32, xmit_size_goal, -- sysctl_tcp_limit_output_bytes >> 1); -- - xmit_size_goal = tcp_bound_to_half_wnd(tp, xmit_size_goal); - - /* We try hard to avoid divides here */ ---- a/net/ipv4/tcp_output.c -+++ b/net/ipv4/tcp_output.c -@@ -1866,8 +1866,12 @@ static bool tcp_write_xmit(struct sock * - * - better RTT estimation and ACK scheduling - * - faster recovery - * - high rates -+ * Alas, some drivers / subsystems require a fair amount -+ * of queued bytes to ensure line rate. -+ * One example is wifi aggregation (802.11 AMPDU) - */ -- limit = max(skb->truesize, sk->sk_pacing_rate >> 10); -+ limit = max_t(unsigned int, sysctl_tcp_limit_output_bytes, -+ sk->sk_pacing_rate >> 10); - - if (atomic_read(&sk->sk_wmem_alloc) > limit) { - set_bit(TSQ_THROTTLED, &tp->tsq_flags); diff --git a/target/linux/generic/patches-3.10/100-overlayfs.patch b/target/linux/generic/patches-3.10/100-overlayfs.patch index 5d1c5f6d38..f8c8aacbcc 100644 --- a/target/linux/generic/patches-3.10/100-overlayfs.patch +++ b/target/linux/generic/patches-3.10/100-overlayfs.patch @@ -330,7 +330,7 @@ /** * sb_permission - Check superblock-level permissions -@@ -2867,9 +2868,12 @@ finish_open_created: +@@ -2868,9 +2869,12 @@ finish_open_created: error = may_open(&nd->path, acc_mode, open_flag); if (error) goto out; diff --git a/target/linux/generic/patches-3.10/630-packet_socket_type.patch b/target/linux/generic/patches-3.10/630-packet_socket_type.patch index 48a9bb9126..62a81c7c0c 100644 --- a/target/linux/generic/patches-3.10/630-packet_socket_type.patch +++ b/target/linux/generic/patches-3.10/630-packet_socket_type.patch @@ -26,7 +26,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org> #define PACKET_FANOUT_LB 1 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c -@@ -1375,6 +1375,7 @@ static int packet_rcv_spkt(struct sk_buf +@@ -1382,6 +1382,7 @@ static int packet_rcv_spkt(struct sk_buf { struct sock *sk; struct sockaddr_pkt *spkt; @@ -34,7 +34,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org> /* * When we registered the protocol we saved the socket in the data -@@ -1382,6 +1383,7 @@ static int packet_rcv_spkt(struct sk_buf +@@ -1389,6 +1390,7 @@ static int packet_rcv_spkt(struct sk_buf */ sk = pt->af_packet_priv; @@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org> /* * Yank back the headers [hope the device set this -@@ -1394,7 +1396,7 @@ static int packet_rcv_spkt(struct sk_buf +@@ -1401,7 +1403,7 @@ static int packet_rcv_spkt(struct sk_buf * so that this procedure is noop. */ @@ -51,7 +51,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org> goto out; if (!net_eq(dev_net(dev), sock_net(sk))) -@@ -1601,12 +1603,12 @@ static int packet_rcv(struct sk_buff *sk +@@ -1608,12 +1610,12 @@ static int packet_rcv(struct sk_buff *sk int skb_len = skb->len; unsigned int snaplen, res; @@ -67,7 +67,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org> if (!net_eq(dev_net(dev), sock_net(sk))) goto drop; -@@ -1719,12 +1721,12 @@ static int tpacket_rcv(struct sk_buff *s +@@ -1726,12 +1728,12 @@ static int tpacket_rcv(struct sk_buff *s struct timespec ts; __u32 ts_status; @@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org> if (!net_eq(dev_net(dev), sock_net(sk))) goto drop; -@@ -2614,6 +2616,7 @@ static int packet_create(struct net *net +@@ -2627,6 +2629,7 @@ static int packet_create(struct net *net spin_lock_init(&po->bind_lock); mutex_init(&po->pg_vec_lock); po->prot_hook.func = packet_rcv; @@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org> if (sock->type == SOCK_PACKET) po->prot_hook.func = packet_rcv_spkt; -@@ -3226,6 +3229,16 @@ packet_setsockopt(struct socket *sock, i +@@ -3237,6 +3240,16 @@ packet_setsockopt(struct socket *sock, i po->tp_tx_has_off = !!val; return 0; } @@ -108,7 +108,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org> default: return -ENOPROTOOPT; } -@@ -3277,6 +3290,13 @@ static int packet_getsockopt(struct sock +@@ -3288,6 +3301,13 @@ static int packet_getsockopt(struct sock case PACKET_VNET_HDR: val = po->has_vnet_hdr; break; @@ -124,9 +124,9 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org> break; --- a/net/packet/internal.h +++ b/net/packet/internal.h -@@ -114,6 +114,7 @@ struct packet_sock { - unsigned int tp_tx_has_off:1; +@@ -115,6 +115,7 @@ struct packet_sock { unsigned int tp_tstamp; + struct net_device __rcu *cached_dev; struct packet_type prot_hook ____cacheline_aligned_in_smp; + unsigned int pkt_type; }; diff --git a/target/linux/generic/patches-3.10/655-increase_skb_pad.patch b/target/linux/generic/patches-3.10/655-increase_skb_pad.patch index 590fa1686c..44ab947bd6 100644 --- a/target/linux/generic/patches-3.10/655-increase_skb_pad.patch +++ b/target/linux/generic/patches-3.10/655-increase_skb_pad.patch @@ -1,6 +1,6 @@ --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h -@@ -1853,7 +1853,7 @@ static inline int pskb_network_may_pull( +@@ -1844,7 +1844,7 @@ static inline int pskb_network_may_pull( * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8) */ #ifndef NET_SKB_PAD diff --git a/target/linux/generic/patches-3.10/656-skb_reduce_truesize-helper.patch b/target/linux/generic/patches-3.10/656-skb_reduce_truesize-helper.patch index 86b7e1ff3b..9aa96a8670 100644 --- a/target/linux/generic/patches-3.10/656-skb_reduce_truesize-helper.patch +++ b/target/linux/generic/patches-3.10/656-skb_reduce_truesize-helper.patch @@ -14,7 +14,7 @@ when needed. --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h -@@ -1898,6 +1898,24 @@ static inline void pskb_trim_unique(stru +@@ -1889,6 +1889,24 @@ static inline void pskb_trim_unique(stru BUG_ON(err); } diff --git a/target/linux/generic/patches-3.10/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/patches-3.10/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch index 7e8e526612..122d23c417 100644 --- a/target/linux/generic/patches-3.10/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch +++ b/target/linux/generic/patches-3.10/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch @@ -127,7 +127,7 @@ static const struct rt6_info ip6_blk_hole_entry_template = { .dst = { .__refcnt = ATOMIC_INIT(1), -@@ -1508,6 +1526,9 @@ int ip6_route_add(struct fib6_config *cf +@@ -1511,6 +1529,9 @@ int ip6_route_add(struct fib6_config *cf case RTN_THROW: rt->dst.error = -EAGAIN; break; @@ -137,7 +137,7 @@ default: rt->dst.error = -ENETUNREACH; break; -@@ -2087,6 +2108,17 @@ static int ip6_pkt_prohibit_out(struct s +@@ -2090,6 +2111,17 @@ static int ip6_pkt_prohibit_out(struct s return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES); } @@ -155,7 +155,7 @@ #endif /* -@@ -2293,7 +2325,8 @@ static int rtm_to_fib6_config(struct sk_ +@@ -2296,7 +2328,8 @@ static int rtm_to_fib6_config(struct sk_ if (rtm->rtm_type == RTN_UNREACHABLE || rtm->rtm_type == RTN_BLACKHOLE || rtm->rtm_type == RTN_PROHIBIT || @@ -165,7 +165,7 @@ cfg->fc_flags |= RTF_REJECT; if (rtm->rtm_type == RTN_LOCAL) -@@ -2495,6 +2528,9 @@ static int rt6_fill_node(struct net *net +@@ -2498,6 +2531,9 @@ static int rt6_fill_node(struct net *net case -EACCES: rtm->rtm_type = RTN_PROHIBIT; break; @@ -175,7 +175,7 @@ case -EAGAIN: rtm->rtm_type = RTN_THROW; break; -@@ -2745,6 +2781,8 @@ static int ip6_route_dev_notify(struct n +@@ -2748,6 +2784,8 @@ static int ip6_route_dev_notify(struct n #ifdef CONFIG_IPV6_MULTIPLE_TABLES net->ipv6.ip6_prohibit_entry->dst.dev = dev; net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev); @@ -184,7 +184,7 @@ net->ipv6.ip6_blk_hole_entry->dst.dev = dev; net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev); #endif -@@ -3005,6 +3043,17 @@ static int __net_init ip6_route_net_init +@@ -3008,6 +3046,17 @@ static int __net_init ip6_route_net_init net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops; dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst, ip6_template_metrics, true); @@ -202,7 +202,7 @@ #endif net->ipv6.sysctl.flush_delay = 0; -@@ -3023,6 +3072,8 @@ out: +@@ -3026,6 +3075,8 @@ out: return ret; #ifdef CONFIG_IPV6_MULTIPLE_TABLES @@ -211,7 +211,7 @@ out_ip6_prohibit_entry: kfree(net->ipv6.ip6_prohibit_entry); out_ip6_null_entry: -@@ -3040,6 +3091,7 @@ static void __net_exit ip6_route_net_exi +@@ -3043,6 +3094,7 @@ static void __net_exit ip6_route_net_exi #ifdef CONFIG_IPV6_MULTIPLE_TABLES kfree(net->ipv6.ip6_prohibit_entry); kfree(net->ipv6.ip6_blk_hole_entry); @@ -219,7 +219,7 @@ #endif dst_entries_destroy(&net->ipv6.ip6_dst_ops); } -@@ -3136,6 +3188,9 @@ int __init ip6_route_init(void) +@@ -3139,6 +3191,9 @@ int __init ip6_route_init(void) init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev; init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); diff --git a/target/linux/generic/patches-3.10/721-phy_packets.patch b/target/linux/generic/patches-3.10/721-phy_packets.patch index f678ef42e2..7d51ae70ff 100644 --- a/target/linux/generic/patches-3.10/721-phy_packets.patch +++ b/target/linux/generic/patches-3.10/721-phy_packets.patch @@ -34,7 +34,7 @@ #define IF_GET_IFACE 0x0001 /* for querying only */ --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h -@@ -1883,6 +1883,10 @@ static inline int pskb_trim(struct sk_bu +@@ -1874,6 +1874,10 @@ static inline int pskb_trim(struct sk_bu return (len < skb->len) ? __pskb_trim(skb, len) : 0; } @@ -45,7 +45,7 @@ /** * pskb_trim_unique - remove end from a paged unique (not cloned) buffer * @skb: buffer to alter -@@ -2007,16 +2011,6 @@ static inline struct sk_buff *dev_alloc_ +@@ -1998,16 +2002,6 @@ static inline struct sk_buff *dev_alloc_ } diff --git a/target/linux/generic/patches-3.10/902-debloat_proc.patch b/target/linux/generic/patches-3.10/902-debloat_proc.patch index fd50eb1a28..dc2a923989 100644 --- a/target/linux/generic/patches-3.10/902-debloat_proc.patch +++ b/target/linux/generic/patches-3.10/902-debloat_proc.patch @@ -133,7 +133,7 @@ } --- a/mm/vmstat.c +++ b/mm/vmstat.c -@@ -1241,10 +1241,12 @@ static int __init setup_vmstat(void) +@@ -1242,10 +1242,12 @@ static int __init setup_vmstat(void) start_cpu_timer(cpu); #endif #ifdef CONFIG_PROC_FS @@ -285,7 +285,7 @@ " key shmid perms size cpid lpid nattch uid gid cuid cgid atime dtime ctime rss swap\n", --- a/ipc/util.c +++ b/ipc/util.c -@@ -158,6 +158,9 @@ void __init ipc_init_proc_interface(cons +@@ -173,6 +173,9 @@ void __init ipc_init_proc_interface(cons struct proc_dir_entry *pde; struct ipc_proc_iface *iface; |