|
@@ -824,8 +824,7 @@ static int __ip_append_data(struct sock *sk,
|
|
|
|
|
|
fragheaderlen = sizeof(struct iphdr) + (opt ? opt->optlen : 0);
|
|
|
maxfraglen = ((mtu - fragheaderlen) & ~7) + fragheaderlen;
|
|
|
- maxnonfragsize = (inet->pmtudisc >= IP_PMTUDISC_DO) ?
|
|
|
- mtu : 0xFFFF;
|
|
|
+ maxnonfragsize = ip_sk_local_df(sk) ? 0xFFFF : mtu;
|
|
|
|
|
|
if (cork->length + length > maxnonfragsize - fragheaderlen) {
|
|
|
ip_local_error(sk, EMSGSIZE, fl4->daddr, inet->inet_dport,
|
|
@@ -1148,8 +1147,7 @@ ssize_t ip_append_page(struct sock *sk, struct flowi4 *fl4, struct page *page,
|
|
|
|
|
|
fragheaderlen = sizeof(struct iphdr) + (opt ? opt->optlen : 0);
|
|
|
maxfraglen = ((mtu - fragheaderlen) & ~7) + fragheaderlen;
|
|
|
- maxnonfragsize = (inet->pmtudisc >= IP_PMTUDISC_DO) ?
|
|
|
- mtu : 0xFFFF;
|
|
|
+ maxnonfragsize = ip_sk_local_df(sk) ? 0xFFFF : mtu;
|
|
|
|
|
|
if (cork->length + size > maxnonfragsize - fragheaderlen) {
|
|
|
ip_local_error(sk, EMSGSIZE, fl4->daddr, inet->inet_dport,
|
|
@@ -1310,8 +1308,7 @@ struct sk_buff *__ip_make_skb(struct sock *sk,
|
|
|
* to fragment the frame generated here. No matter, what transforms
|
|
|
* how transforms change size of the packet, it will come out.
|
|
|
*/
|
|
|
- if (inet->pmtudisc < IP_PMTUDISC_DO)
|
|
|
- skb->local_df = 1;
|
|
|
+ skb->local_df = ip_sk_local_df(sk);
|
|
|
|
|
|
/* DF bit is set when we want to see DF on outgoing frames.
|
|
|
* If local_df is set too, we still allow to fragment this frame
|