aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/generic')
-rw-r--r--target/linux/generic/patches-3.10/010-tsq_queueing_minimum.patch80
-rw-r--r--target/linux/generic/patches-3.10/100-overlayfs.patch2
-rw-r--r--target/linux/generic/patches-3.10/630-packet_socket_type.patch20
-rw-r--r--target/linux/generic/patches-3.10/655-increase_skb_pad.patch2
-rw-r--r--target/linux/generic/patches-3.10/656-skb_reduce_truesize-helper.patch2
-rw-r--r--target/linux/generic/patches-3.10/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch18
-rw-r--r--target/linux/generic/patches-3.10/721-phy_packets.patch4
-rw-r--r--target/linux/generic/patches-3.10/902-debloat_proc.patch4
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;