/* * header file for ADAV80X parts * * Copyright 2011 Analog Devices Inc. * * Licensed under the GPL-2 or later. */ #ifndef _ADAV80X_H #define _ADAV80X_H #include struct device; extern const struct regmap_config adav80x_regmap_config; int adav80x_bus_probe(struct device *dev, struct regmap *regmap); enum adav80x_pll_src { ADAV80X_PLL_SRC_XIN, ADAV80X_PLL_SRC_XTAL, ADAV80X_PLL_SRC_MCLKI, }; enum adav80x_pll { ADAV80X_PLL1 = 0, ADAV80X_PLL2 = 1, }; enum adav80x_clk_src { ADAV80X_CLK_XIN = 0, ADAV80X_CLK_MCLKI = 1, ADAV80X_CLK_PLL1 = 2, ADAV80X_CLK_PLL2 = 3, ADAV80X_CLK_XTAL = 6, ADAV80X_CLK_SYSCLK1 = 6, ADAV80X_CLK_SYSCLK2 = 7, ADAV80X_CLK_SYSCLK3 = 8, }; #endif /> index : net-next.git
net-next plumbingsTobias Klauser
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2016-11-15 12:51:50 -0800
committerDavid S. Miller <davem@davemloft.net>2016-11-24 15:40:42 -0500
commitf8071cde7890db198201afa748efd658a8ba0fb2 (patch)
treeb237d496ebafad7eda06cdba81e50d003cdf191e
parent7d381a025f01550350a1890ab782afc832399eb6 (diff)
tcp: enhance tcp_collapse_retrans() with skb_shift()
In commit 2331ccc5b323 ("tcp: enhance tcp collapsing"), we made a first step allowing copying right skb to left skb head. Since all skbs in socket write queue are headless (but possibly the very first one), this strategy often does not work. This patch extends tcp_collapse_retrans() to perform frag shifting, thanks to skb_shift() helper. This helper needs to not BUG on non headless skbs, as callers are ok with that. Tested: Following packetdrill test now passes : 0.000 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3 +0 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0 +0 bind(3, ..., ...) = 0 +0 listen(3, 1) = 0 +0 < S 0:0(0) win 32792 <mss 1460,sackOK,nop,nop,nop,wscale 8> +0 > S. 0:0(0) ack 1 <mss 1460,nop,nop,sackOK,nop,wscale 8> +.100 < . 1:1(0) ack 1 win 257 +0 accept(3, ..., ...) = 4 +0 setsockopt(4, SOL_TCP, TCP_NODELAY, [1], 4) = 0 +0 write(4, ..., 200) = 200 +0 > P. 1:201(200) ack 1 +.001 write(4, ..., 200) = 200 +0 > P. 201:401(200) ack 1 +.001 write(4, ..., 200) = 200 +0 > P. 401:601(200) ack 1 +.001 write(4, ..., 200) = 200 +0 > P. 601:801(200) ack 1 +.001 write(4, ..., 200) = 200 +0 > P. 801:1001(200) ack 1 +.001 write(4, ..., 100) = 100 +0 > P. 1001:1101(100) ack 1 +.001 write(4, ..., 100) = 100 +0 > P. 1101:1201(100) ack 1 +.001 write(4, ..., 100) = 100 +0 > P. 1201:1301(100) ack 1 +.001 write(4, ..., 100) = 100 +0 > P. 1301:1401(100) ack 1 +.099 < . 1:1(0) ack 201 win 257 +.001 < . 1:1(0) ack 201 win 257 <nop,nop,sack 1001:1401> +0 > P. 201:1001(800) ack 1 Signed-off-by: Eric Dumazet <edumazet@google.com> Cc: Neal Cardwell <ncardwell@google.com> Cc: Yuchung Cheng <ycheng@google.com> Acked-by: Yuchung Cheng <ycheng@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>