static int __skb_send_sock(struct sock *sk, struct sk_buff *skb, int offset,
                           int len, sendmsg_func sendmsg, int flags)
 {
+       int more_hint = sk_is_tcp(sk) ? MSG_MORE : 0;
        unsigned int orig_len = len;
        struct sk_buff *head = skb;
        unsigned short fragidx;
                kv.iov_len = slen;
                memset(&msg, 0, sizeof(msg));
                msg.msg_flags = MSG_DONTWAIT | flags;
+               if (slen < len)
+                       msg.msg_flags |= more_hint;
 
                iov_iter_kvec(&msg.msg_iter, ITER_SOURCE, &kv, 1, slen);
                ret = INDIRECT_CALL_2(sendmsg, sendmsg_locked,
                                             flags,
                        };
 
+                       if (slen < len)
+                               msg.msg_flags |= more_hint;
                        bvec_set_page(&bvec, skb_frag_page(frag), slen,
                                      skb_frag_off(frag) + offset);
                        iov_iter_bvec(&msg.msg_iter, ITER_SOURCE, &bvec, 1,