Lines Matching refs:cork
1341 static int ip6_setup_cork(struct sock *sk, struct inet_cork_full *cork, in ip6_setup_cork() argument
1346 struct inet6_cork *v6_cork = &cork->base6; in ip6_setup_cork()
1353 cork->base.dst = &rt->dst; in ip6_setup_cork()
1402 cork->base.fragsize = mtu; in ip6_setup_cork()
1403 cork->base.gso_size = ipc6->gso_size; in ip6_setup_cork()
1404 cork->base.tx_flags = 0; in ip6_setup_cork()
1405 cork->base.mark = ipc6->sockc.mark; in ip6_setup_cork()
1406 cork->base.priority = ipc6->sockc.priority; in ip6_setup_cork()
1407 sock_tx_timestamp(sk, &ipc6->sockc, &cork->base.tx_flags); in ip6_setup_cork()
1409 cork->base.flags |= IPCORK_TS_OPT_ID; in ip6_setup_cork()
1410 cork->base.ts_opt_id = ipc6->sockc.ts_opt_id; in ip6_setup_cork()
1412 cork->base.length = 0; in ip6_setup_cork()
1413 cork->base.transmit_time = ipc6->sockc.transmit_time; in ip6_setup_cork()
1429 struct inet_cork *cork = &cork_full->base; in __ip6_append_data() local
1441 struct rt6_info *rt = dst_rt6_info(cork->dst); in __ip6_append_data()
1454 paged = !!cork->gso_size; in __ip6_append_data()
1455 mtu = cork->gso_size ? IP6_MAX_MTU : cork->fragsize; in __ip6_append_data()
1480 if (cork->length + length > mtu - headersize && v6_cork->dontfrag && in __ip6_append_data()
1494 if (cork->length + length > maxnonfragsize - headersize) { in __ip6_append_data()
1507 (!(flags & MSG_MORE) || cork->gso_size) && in __ip6_append_data()
1553 if (cork->tx_flags & SKBTX_ANY_TSTAMP && in __ip6_append_data()
1555 if (cork->flags & IPCORK_TS_OPT_ID) { in __ip6_append_data()
1556 tskey = cork->ts_opt_id; in __ip6_append_data()
1579 cork->length += length; in __ip6_append_data()
1585 copy = (cork->length <= mtu ? mtu : maxfraglen) - skb->len; in __ip6_append_data()
1616 if (datalen > (cork->length <= mtu ? mtu : maxfraglen) - fragheaderlen) in __ip6_append_data()
1721 skb_shinfo(skb)->tx_flags = cork->tx_flags; in __ip6_append_data()
1722 cork->tx_flags = 0; in __ip6_append_data()
1818 cork->length -= length; in __ip6_append_data()
1844 err = ip6_setup_cork(sk, &inet->cork, in ip6_append_data()
1849 inet->cork.fl.u.ip6 = *fl6; in ip6_append_data()
1857 return __ip6_append_data(sk, &sk->sk_write_queue, &inet->cork, in ip6_append_data()
1863 static void ip6_cork_steal_dst(struct sk_buff *skb, struct inet_cork_full *cork) in ip6_cork_steal_dst() argument
1865 struct dst_entry *dst = cork->base.dst; in ip6_cork_steal_dst()
1867 cork->base.dst = NULL; in ip6_cork_steal_dst()
1871 static void ip6_cork_release(struct inet_cork_full *cork) in ip6_cork_release() argument
1873 struct inet6_cork *v6_cork = &cork->base6; in ip6_cork_release()
1886 if (cork->base.dst) { in ip6_cork_release()
1887 dst_release(cork->base.dst); in ip6_cork_release()
1888 cork->base.dst = NULL; in ip6_cork_release()
1894 struct inet_cork_full *cork) in __ip6_make_skb() argument
1902 struct rt6_info *rt = dst_rt6_info(cork->base.dst); in __ip6_make_skb()
1903 struct flowi6 *fl6 = &cork->fl.u.ip6; in __ip6_make_skb()
1930 opt = cork->base6.opt; in __ip6_make_skb()
1942 ip6_flow_hdr(hdr, cork->base6.tclass, in __ip6_make_skb()
1945 hdr->hop_limit = cork->base6.hop_limit; in __ip6_make_skb()
1950 skb->priority = cork->base.priority; in __ip6_make_skb()
1951 skb->mark = cork->base.mark; in __ip6_make_skb()
1953 skb_set_delivery_time(skb, cork->base.transmit_time, SKB_CLOCK_MONOTONIC); in __ip6_make_skb()
1955 skb_set_delivery_type_by_clockid(skb, cork->base.transmit_time, sk->sk_clockid); in __ip6_make_skb()
1957 ip6_cork_steal_dst(skb, cork); in __ip6_make_skb()
1972 ip6_cork_release(cork); in __ip6_make_skb()
2011 struct inet_cork_full *cork) in __ip6_flush_pending_frames() argument
2022 ip6_cork_release(cork); in __ip6_flush_pending_frames()
2028 &inet_sk(sk)->cork); in ip6_flush_pending_frames()
2037 unsigned int flags, struct inet_cork_full *cork) in ip6_make_skb() argument
2050 cork->base.flags = 0; in ip6_make_skb()
2051 cork->base.addr = 0; in ip6_make_skb()
2052 cork->base.opt = NULL; in ip6_make_skb()
2053 cork->base6.opt = NULL; in ip6_make_skb()
2054 err = ip6_setup_cork(sk, cork, ipc6, rt); in ip6_make_skb()
2056 ip6_cork_release(cork); in ip6_make_skb()
2060 err = __ip6_append_data(sk, &queue, cork, in ip6_make_skb()
2065 __ip6_flush_pending_frames(sk, &queue, cork); in ip6_make_skb()
2069 return __ip6_make_skb(sk, &queue, cork); in ip6_make_skb()