Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Minor conflicts in drivers/net/ethernet/mellanox/mlx5/core/en_rep.c, we had some overlapping changes: 1) In 'net' MLX5E_PARAMS_LOG_{SQ,RQ}_SIZE --> MLX5E_REP_PARAMS_LOG_{SQ,RQ}_SIZE 2) In 'net-next' params->log_rq_size is renamed to be params->log_rq_mtu_frames. 3) In 'net-next' params->hard_mtu is added. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -1246,7 +1246,7 @@ static int __ip6_append_data(struct sock *sk,
|
||||
const struct sockcm_cookie *sockc)
|
||||
{
|
||||
struct sk_buff *skb, *skb_prev = NULL;
|
||||
unsigned int maxfraglen, fragheaderlen, mtu, orig_mtu;
|
||||
unsigned int maxfraglen, fragheaderlen, mtu, orig_mtu, pmtu;
|
||||
int exthdrlen = 0;
|
||||
int dst_exthdrlen = 0;
|
||||
int hh_len;
|
||||
@@ -1283,6 +1283,12 @@ static int __ip6_append_data(struct sock *sk,
|
||||
sizeof(struct frag_hdr) : 0) +
|
||||
rt->rt6i_nfheader_len;
|
||||
|
||||
/* as per RFC 7112 section 5, the entire IPv6 Header Chain must fit
|
||||
* the first fragment
|
||||
*/
|
||||
if (headersize + transhdrlen > mtu)
|
||||
goto emsgsize;
|
||||
|
||||
if (cork->length + length > mtu - headersize && ipc6->dontfrag &&
|
||||
(sk->sk_protocol == IPPROTO_UDP ||
|
||||
sk->sk_protocol == IPPROTO_RAW)) {
|
||||
@@ -1298,9 +1304,8 @@ static int __ip6_append_data(struct sock *sk,
|
||||
|
||||
if (cork->length + length > maxnonfragsize - headersize) {
|
||||
emsgsize:
|
||||
ipv6_local_error(sk, EMSGSIZE, fl6,
|
||||
mtu - headersize +
|
||||
sizeof(struct ipv6hdr));
|
||||
pmtu = max_t(int, mtu - headersize + sizeof(struct ipv6hdr), 0);
|
||||
ipv6_local_error(sk, EMSGSIZE, fl6, pmtu);
|
||||
return -EMSGSIZE;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user