From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.3 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C8269C10DCE for ; Tue, 10 Mar 2020 22:12:25 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 96D33222C3 for ; Tue, 10 Mar 2020 22:12:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726899AbgCJWMY (ORCPT ); Tue, 10 Mar 2020 18:12:24 -0400 Received: from mx2.suse.de ([195.135.220.15]:42976 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726273AbgCJWMY (ORCPT ); Tue, 10 Mar 2020 18:12:24 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 28095ACC3; Tue, 10 Mar 2020 22:12:22 +0000 (UTC) Received: by unicorn.suse.cz (Postfix, from userid 1000) id BE5C2E009C; Tue, 10 Mar 2020 23:12:21 +0100 (CET) Date: Tue, 10 Mar 2020 23:12:21 +0100 From: Michal Kubecek To: netdev@vger.kernel.org Cc: Andrej Ras Subject: Re: What does this code do Message-ID: <20200310221221.GD8012@unicorn.suse.cz> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org On Tue, Mar 10, 2020 at 02:42:11PM -0700, Andrej Ras wrote: > While browsing the Linux networking code I came across these two lines > in __ip_append_data() which I do not understand. > > /* Check if the remaining data fits into current packet. */ > copy = mtu - skb->len; > if (copy < length) > copy = maxfraglen - skb->len; > if (copy <= 0) { > > Why not just use maxfraglen. > > Perhaps someone can explain why this is needed. This function appends more data to an skb which can already contain some payload. Therefore you need to take current length (from earlier) into account, not only newly appended data. This can be easily enforced e.g. with TCP_CORK or UDP_CORK socket option or MSG_MORE flag. Michal Kubecek