Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts: drivers/net/ethernet/sfc/rx.c Overlapping changes in drivers/net/ethernet/sfc/rx.c, one to change the rx_buf->is_page boolean into a set of u16 flags, and another to adjust how ->ip_summed is initialized. Signed-off-by: David S. Miller <davem@davemloft.net>
Tento commit je obsažen v:
@@ -65,7 +65,7 @@
|
||||
it is infeasible task. The most general solutions would be
|
||||
to keep skb->encapsulation counter (sort of local ttl),
|
||||
and silently drop packet when it expires. It is a good
|
||||
solution, but it supposes maintaing new variable in ALL
|
||||
solution, but it supposes maintaining new variable in ALL
|
||||
skb, even if no tunneling is used.
|
||||
|
||||
Current solution: xmit_recursion breaks dead loops. This is a percpu
|
||||
@@ -91,14 +91,14 @@
|
||||
|
||||
One of them is to parse packet trying to detect inner encapsulation
|
||||
made by our node. It is difficult or even impossible, especially,
|
||||
taking into account fragmentation. TO be short, tt is not solution at all.
|
||||
taking into account fragmentation. TO be short, ttl is not solution at all.
|
||||
|
||||
Current solution: The solution was UNEXPECTEDLY SIMPLE.
|
||||
We force DF flag on tunnels with preconfigured hop limit,
|
||||
that is ALL. :-) Well, it does not remove the problem completely,
|
||||
but exponential growth of network traffic is changed to linear
|
||||
(branches, that exceed pmtu are pruned) and tunnel mtu
|
||||
fastly degrades to value <68, where looping stops.
|
||||
rapidly degrades to value <68, where looping stops.
|
||||
Yes, it is not good if there exists a router in the loop,
|
||||
which does not force DF, even when encapsulating packets have DF set.
|
||||
But it is not our problem! Nobody could accuse us, we made
|
||||
@@ -457,8 +457,8 @@ static void ipgre_err(struct sk_buff *skb, u32 info)
|
||||
GRE tunnels with enabled checksum. Tell them "thank you".
|
||||
|
||||
Well, I wonder, rfc1812 was written by Cisco employee,
|
||||
what the hell these idiots break standrads established
|
||||
by themself???
|
||||
what the hell these idiots break standards established
|
||||
by themselves???
|
||||
*/
|
||||
|
||||
const struct iphdr *iph = (const struct iphdr *)skb->data;
|
||||
|
@@ -631,6 +631,7 @@ static int ping_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
|
||||
|
||||
pr_debug("ping_recvmsg(sk=%p,sk->num=%u)\n", isk, isk->inet_num);
|
||||
|
||||
err = -EOPNOTSUPP;
|
||||
if (flags & MSG_OOB)
|
||||
goto out;
|
||||
|
||||
|
@@ -3240,7 +3240,8 @@ void __init tcp_init(void)
|
||||
{
|
||||
struct sk_buff *skb = NULL;
|
||||
unsigned long limit;
|
||||
int i, max_share, cnt;
|
||||
int max_share, cnt;
|
||||
unsigned int i;
|
||||
unsigned long jiffy = jiffies;
|
||||
|
||||
BUILD_BUG_ON(sizeof(struct tcp_skb_cb) > sizeof(skb->cb));
|
||||
@@ -3283,7 +3284,7 @@ void __init tcp_init(void)
|
||||
&tcp_hashinfo.bhash_size,
|
||||
NULL,
|
||||
64 * 1024);
|
||||
tcp_hashinfo.bhash_size = 1 << tcp_hashinfo.bhash_size;
|
||||
tcp_hashinfo.bhash_size = 1U << tcp_hashinfo.bhash_size;
|
||||
for (i = 0; i < tcp_hashinfo.bhash_size; i++) {
|
||||
spin_lock_init(&tcp_hashinfo.bhash[i].lock);
|
||||
INIT_HLIST_HEAD(&tcp_hashinfo.bhash[i].chain);
|
||||
|
@@ -110,10 +110,7 @@ static int xfrm4_beet_input(struct xfrm_state *x, struct sk_buff *skb)
|
||||
|
||||
skb_push(skb, sizeof(*iph));
|
||||
skb_reset_network_header(skb);
|
||||
|
||||
memmove(skb->data - skb->mac_len, skb_mac_header(skb),
|
||||
skb->mac_len);
|
||||
skb_set_mac_header(skb, -skb->mac_len);
|
||||
skb_mac_header_rebuild(skb);
|
||||
|
||||
xfrm4_beet_make_header(skb);
|
||||
|
||||
|
@@ -66,7 +66,6 @@ static int xfrm4_mode_tunnel_output(struct xfrm_state *x, struct sk_buff *skb)
|
||||
|
||||
static int xfrm4_mode_tunnel_input(struct xfrm_state *x, struct sk_buff *skb)
|
||||
{
|
||||
const unsigned char *old_mac;
|
||||
int err = -EINVAL;
|
||||
|
||||
if (XFRM_MODE_SKB_CB(skb)->protocol != IPPROTO_IPIP)
|
||||
@@ -84,10 +83,9 @@ static int xfrm4_mode_tunnel_input(struct xfrm_state *x, struct sk_buff *skb)
|
||||
if (!(x->props.flags & XFRM_STATE_NOECN))
|
||||
ipip_ecn_decapsulate(skb);
|
||||
|
||||
old_mac = skb_mac_header(skb);
|
||||
skb_set_mac_header(skb, -skb->mac_len);
|
||||
memmove(skb_mac_header(skb), old_mac, skb->mac_len);
|
||||
skb_reset_network_header(skb);
|
||||
skb_mac_header_rebuild(skb);
|
||||
|
||||
err = 0;
|
||||
|
||||
out:
|
||||
|
Odkázat v novém úkolu
Zablokovat Uživatele