Lines Matching refs:mtu

144 				    struct sk_buff *skb, unsigned int mtu)
171 err = segs->len > mtu ?
182 struct sk_buff *skb, unsigned int mtu)
185 !skb_gso_validate_network_len(skb, mtu))
186 return ip6_finish_output_gso_slowpath_drop(net, sk, skb, mtu);
193 unsigned int mtu;
203 mtu = ip6_skb_dst_mtu(skb);
205 return ip6_finish_output_gso(net, sk, skb, mtu);
207 if (skb->len > mtu ||
279 u32 mtu;
344 mtu = dst_mtu(dst);
345 if ((skb->len <= mtu) || skb->ignore_df || skb_is_gso(skb)) {
367 ipv6_local_error((struct sock *)sk, EMSGSIZE, fl6, mtu);
475 static bool ip6_pkt_too_big(const struct sk_buff *skb, unsigned int mtu)
477 if (skb->len <= mtu)
481 if (IP6CB(skb)->frag_max_size && IP6CB(skb)->frag_max_size > mtu)
487 if (skb_is_gso(skb) && skb_gso_validate_network_len(skb, mtu))
501 u32 mtu;
633 mtu = ip6_dst_mtu_maybe_forward(dst, true);
634 if (mtu < IPV6_MIN_MTU)
635 mtu = IPV6_MIN_MTU;
637 if (ip6_pkt_too_big(skb, mtu)) {
640 icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu);
758 void ip6_frag_init(struct sk_buff *skb, unsigned int hlen, unsigned int mtu,
767 state->mtu = mtu;
787 /* IF: it doesn't fit, use 'mtu' - the data space left */
788 if (len > state->mtu)
789 len = state->mtu;
864 unsigned int mtu, hlen, nexthdr_offset;
877 mtu = ip6_skb_dst_mtu(skb);
882 if (unlikely(!skb->ignore_df && skb->len > mtu))
886 if (IP6CB(skb)->frag_max_size > mtu)
890 mtu = IP6CB(skb)->frag_max_size;
891 if (mtu < IPV6_MIN_MTU)
892 mtu = IPV6_MIN_MTU;
898 if (frag_size && frag_size < mtu)
899 mtu = frag_size;
901 if (mtu < hlen + sizeof(struct frag_hdr) + 8)
903 mtu -= hlen + sizeof(struct frag_hdr);
919 if (first_len - hlen > mtu ||
927 if (frag->len > mtu ||
1001 ip6_frag_init(skb, hlen, mtu, rt->dst.dev->needed_tailroom,
1033 icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu);
1308 static void ip6_append_data_mtu(unsigned int *mtu,
1318 *mtu = orig_mtu - rt->dst.header_len;
1325 *mtu = orig_mtu;
1327 *maxfraglen = ((*mtu - fragheaderlen) & ~7)
1337 unsigned int mtu, frag_size;
1381 mtu = READ_ONCE(np->pmtudisc) >= IPV6_PMTUDISC_PROBE ?
1382 READ_ONCE(rt->dst.dev->mtu) : dst_mtu(&rt->dst);
1384 mtu = READ_ONCE(np->pmtudisc) >= IPV6_PMTUDISC_PROBE ?
1385 READ_ONCE(rt->dst.dev->mtu) : dst_mtu(xfrm_dst_path(&rt->dst));
1388 if (frag_size && frag_size < mtu)
1389 mtu = frag_size;
1391 cork->base.fragsize = mtu;
1416 unsigned int maxfraglen, fragheaderlen, mtu, orig_mtu, pmtu;
1440 mtu = cork->gso_size ? IP6_MAX_MTU : cork->fragsize;
1441 orig_mtu = mtu;
1452 if (mtu <= fragheaderlen ||
1453 ((mtu - fragheaderlen) & ~7) + fragheaderlen <= sizeof(struct frag_hdr))
1456 maxfraglen = ((mtu - fragheaderlen) & ~7) + fragheaderlen -
1462 if (headersize + transhdrlen > mtu)
1465 if (cork->length + length > mtu - headersize && ipc6->dontfrag &&
1469 ipv6_local_rxpmtu(sk, fl6, mtu - headersize +
1477 maxnonfragsize = mtu;
1481 pmtu = max_t(int, mtu - headersize + sizeof(struct ipv6hdr), 0);
1491 length <= mtu - headersize &&
1564 copy = (cork->length <= mtu ? mtu : maxfraglen) - skb->len;
1581 /* update mtu and maxfraglen if necessary */
1583 ip6_append_data_mtu(&mtu, &maxfraglen,
1590 * If remaining data exceeds the mtu,
1595 if (datalen > (cork->length <= mtu ? mtu : maxfraglen) - fragheaderlen)
1612 alloclen = mtu;