Lines Matching refs:cork
868 struct inet_cork *cork, in __ip_append_data() argument
878 struct ip_options *opt = cork->opt; in __ip_append_data()
887 struct rtable *rt = (struct rtable *)cork->dst; in __ip_append_data()
893 mtu = cork->fragsize; in __ip_append_data()
894 if (cork->tx_flags & SKBTX_ANY_SW_TSTAMP && in __ip_append_data()
904 if (cork->length + length > maxnonfragsize - fragheaderlen) { in __ip_append_data()
921 cork->length += length; in __ip_append_data()
1013 skb_shinfo(skb)->tx_flags = cork->tx_flags; in __ip_append_data()
1014 cork->tx_flags = 0; in __ip_append_data()
1110 cork->length -= length; in __ip_append_data()
1115 static int ip_setup_cork(struct sock *sk, struct inet_cork *cork, in ip_setup_cork() argument
1126 if (!cork->opt) { in ip_setup_cork()
1127 cork->opt = kmalloc(sizeof(struct ip_options) + 40, in ip_setup_cork()
1129 if (unlikely(!cork->opt)) in ip_setup_cork()
1132 memcpy(cork->opt, &opt->opt, sizeof(struct ip_options) + opt->opt.optlen); in ip_setup_cork()
1133 cork->flags |= IPCORK_OPT; in ip_setup_cork()
1134 cork->addr = ipc->addr; in ip_setup_cork()
1143 cork->fragsize = ip_sk_use_pmtu(sk) ? in ip_setup_cork()
1145 cork->dst = &rt->dst; in ip_setup_cork()
1146 cork->length = 0; in ip_setup_cork()
1147 cork->ttl = ipc->ttl; in ip_setup_cork()
1148 cork->tos = ipc->tos; in ip_setup_cork()
1149 cork->priority = ipc->priority; in ip_setup_cork()
1150 cork->tx_flags = ipc->tx_flags; in ip_setup_cork()
1180 err = ip_setup_cork(sk, &inet->cork.base, ipc, rtp); in ip_append_data()
1187 return __ip_append_data(sk, fl4, &sk->sk_write_queue, &inet->cork.base, in ip_append_data()
1199 struct inet_cork *cork; in ip_append_page() local
1215 cork = &inet->cork.base; in ip_append_page()
1216 rt = (struct rtable *)cork->dst; in ip_append_page()
1217 if (cork->flags & IPCORK_OPT) in ip_append_page()
1218 opt = cork->opt; in ip_append_page()
1224 mtu = cork->fragsize; in ip_append_page()
1230 if (cork->length + size > maxnonfragsize - fragheaderlen) { in ip_append_page()
1249 cork->length += size; in ip_append_page()
1330 cork->length -= size; in ip_append_page()
1335 static void ip_cork_release(struct inet_cork *cork) in ip_cork_release() argument
1337 cork->flags &= ~IPCORK_OPT; in ip_cork_release()
1338 kfree(cork->opt); in ip_cork_release()
1339 cork->opt = NULL; in ip_cork_release()
1340 dst_release(cork->dst); in ip_cork_release()
1341 cork->dst = NULL; in ip_cork_release()
1351 struct inet_cork *cork) in __ip_make_skb() argument
1358 struct rtable *rt = (struct rtable *)cork->dst; in __ip_make_skb()
1397 if (cork->flags & IPCORK_OPT) in __ip_make_skb()
1398 opt = cork->opt; in __ip_make_skb()
1400 if (cork->ttl != 0) in __ip_make_skb()
1401 ttl = cork->ttl; in __ip_make_skb()
1410 iph->tos = (cork->tos != -1) ? cork->tos : inet->tos; in __ip_make_skb()
1419 ip_options_build(skb, opt, cork->addr, rt, 0); in __ip_make_skb()
1422 skb->priority = (cork->tos != -1) ? cork->priority: sk->sk_priority; in __ip_make_skb()
1428 cork->dst = NULL; in __ip_make_skb()
1435 ip_cork_release(cork); in __ip_make_skb()
1472 struct inet_cork *cork) in __ip_flush_pending_frames() argument
1479 ip_cork_release(cork); in __ip_flush_pending_frames()
1484 __ip_flush_pending_frames(sk, &sk->sk_write_queue, &inet_sk(sk)->cork.base); in ip_flush_pending_frames()
1495 struct inet_cork cork; in ip_make_skb() local
1504 cork.flags = 0; in ip_make_skb()
1505 cork.addr = 0; in ip_make_skb()
1506 cork.opt = NULL; in ip_make_skb()
1507 err = ip_setup_cork(sk, &cork, ipc, rtp); in ip_make_skb()
1511 err = __ip_append_data(sk, fl4, &queue, &cork, in ip_make_skb()
1515 __ip_flush_pending_frames(sk, &queue, &cork); in ip_make_skb()
1519 return __ip_make_skb(sk, fl4, &queue, &cork); in ip_make_skb()