From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qk0-x243.google.com (mail-qk0-x243.google.com [IPv6:2607:f8b0:400d:c09::243]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.bufferbloat.net (Postfix) with ESMTPS id 29FE23B2A4 for ; Tue, 22 May 2018 16:22:49 -0400 (EDT) Received: by mail-qk0-x243.google.com with SMTP id 196-v6so2315100qke.9 for ; Tue, 22 May 2018 13:22:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=SkETbsWDTSD7NE5G+EQQkLrSnNg7PoaM0RV031+Qvvc=; b=g8Uu9EHpmi26Nv3872eku1WA+psbqGssi0Gjh/rAPeKW3fcNuymt4RAr1AwtDf7Dpy TrV2dgDaDoXmtInjf6RyzGgCWZgXqXlJLVEdZiP85VJukic1s43REZpb8i42hvnfX6SH vmYe1sAIey8uwKfUhjt0NHE5veFh6JJdqzQ2Ydrb3fTmQRLf34AkHo/UTzrNzZI+fkgW Am8vXkHzazxq78TWtwmTZdHl/YqPGmtoqUpmptrs0Uf/rtzpmBJOGEwIb+ZQ89njKr2y giPmBHPyNakaE8GKwVY82ORGgXGByY2t/tIGxlWYzuak9B+p0J70CbY5a/yMsHAakCB0 yw1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to:user-agent; bh=SkETbsWDTSD7NE5G+EQQkLrSnNg7PoaM0RV031+Qvvc=; b=LR/eBVmvDXS6Nn3HD0al2yssmG6KNOB+1biMBd6C5dDTcXGACE58RTWrFLiiINQbRk gLc43aQYbbExq6Xl/nRv57gpmlabqdbQWxztm0WLI+RoVVyBHoXIdg9vG2C/NRxEcUhg 7Ir05vsaMBi+Mhtx1gK5vDT2CycESfc+gleelQgt5qxHgupf4yG7GA6RNGvI5hQmuSjr OdyqgTPWNFh/TbGm8YF8Uog+hQfdsh5Epot6xSgFKHMgKj/9bvAsuqUP/wJu+VtnR05C u462WcyXXcM5IEIbw2Tqmkki78ZA3gTW9OMeMdUvvDrJ1Q/L6Atj1SA2+1n1dWp5eqmx RR8w== X-Gm-Message-State: ALKqPwfMAvTbw21eszdWtv45JuxRMiAOi86TFpxkuUM5fNLSRBUypCSF LYQVtPlVXsMLHpn97X/pYi50Fw/nwNY= X-Google-Smtp-Source: AB8JxZo5OycIzhbVDCq1qu3qfvGKxp5pAeVNozUC3nxgM4CAxc1IlCjSCgW+37LBfNf5GhtuLcEjOQ== X-Received: by 2002:a37:5e81:: with SMTP id s123-v6mr22776650qkb.5.1527020568327; Tue, 22 May 2018 13:22:48 -0700 (PDT) Received: from localhost.localdomain ([45.4.239.227]) by smtp.gmail.com with ESMTPSA id r28-v6sm14223886qta.28.2018.05.22.13.22.45 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 22 May 2018 13:22:46 -0700 (PDT) Received: by localhost.localdomain (Postfix, from userid 1000) id F3252180EF5; Tue, 22 May 2018 17:22:41 -0300 (-03) Date: Tue, 22 May 2018 17:22:41 -0300 From: Marcelo Ricardo Leitner To: Toke =?iso-8859-1?Q?H=F8iland-J=F8rgensen?= Cc: netdev@vger.kernel.org, cake@lists.bufferbloat.net Message-ID: <20180522202241.GJ5488@localhost.localdomain> References: <152693459693.32668.4272129427997495747.stgit@alrua-kau> <152693495874.32668.11244869690098290078.stgit@alrua-kau> <20180521234513.GH26212@localhost.localdomain> <52F9132E-4FDC-495A-A020-BCD963B3E3CF@toke.dk> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <52F9132E-4FDC-495A-A020-BCD963B3E3CF@toke.dk> User-Agent: Mutt/1.9.2 (2017-12-15) Subject: Re: [Cake] [PATCH net-next v14 6/7] sch_cake: Add overhead compensation support to the rate shaper X-BeenThere: cake@lists.bufferbloat.net X-Mailman-Version: 2.1.20 Precedence: list List-Id: Cake - FQ_codel the next generation List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 22 May 2018 20:22:49 -0000 On Tue, May 22, 2018 at 10:44:53AM +0200, Toke Høiland-Jørgensen wrote: > > > On 22 May 2018 01:45:13 CEST, Marcelo Ricardo Leitner wrote: > >On Mon, May 21, 2018 at 10:35:58PM +0200, Toke Høiland-Jørgensen wrote: > >> +static u32 cake_overhead(struct cake_sched_data *q, const struct > >sk_buff *skb) > >> +{ > >> + const struct skb_shared_info *shinfo = skb_shinfo(skb); > >> + unsigned int hdr_len, last_len = 0; > >> + u32 off = skb_network_offset(skb); > >> + u32 len = qdisc_pkt_len(skb); > >> + u16 segs = 1; > >> + > >> + q->avg_netoff = cake_ewma(q->avg_netoff, off << 16, 8); > >> + > >> + if (!shinfo->gso_size) > >> + return cake_calc_overhead(q, len, off); > >> + > >> + /* borrowed from qdisc_pkt_len_init() */ > >> + hdr_len = skb_transport_header(skb) - skb_mac_header(skb); > >> + > >> + /* + transport layer */ > >> + if (likely(shinfo->gso_type & (SKB_GSO_TCPV4 | > >> + SKB_GSO_TCPV6))) { > >> + const struct tcphdr *th; > >> + struct tcphdr _tcphdr; > >> + > >> + th = skb_header_pointer(skb, skb_transport_offset(skb), > >> + sizeof(_tcphdr), &_tcphdr); > >> + if (likely(th)) > >> + hdr_len += __tcp_hdrlen(th); > >> + } else { > > > >I didn't see some code limiting GSO packets to just TCP or UDP. Is it > >safe to assume that this packet is an UDP one, and not SCTP or ESP, > >for example? > > As the comment says, I nicked this from the qdisc init code. > So I assume it's safe? :) As long as it doesn't go further than this, it is. As in, it is just validating if it can contain an UDP header, and if so, account for its size, without actually reading the header. Considering everything !TCP as UDP work as an approximation, which is quite accurate. SCTP header is just 4 bytes bigger than UDP header and is equal to ESP header size. > > >> + struct udphdr _udphdr; > >> + > >> + if (skb_header_pointer(skb, skb_transport_offset(skb), > >> + sizeof(_udphdr), &_udphdr)) > >> + hdr_len += sizeof(struct udphdr); > >> + } > >> + > >> + if (unlikely(shinfo->gso_type & SKB_GSO_DODGY)) > >> + segs = DIV_ROUND_UP(skb->len - hdr_len, > >> + shinfo->gso_size); > >> + else > >> + segs = shinfo->gso_segs; > >> + > >> + len = shinfo->gso_size + hdr_len; > >> + last_len = skb->len - shinfo->gso_size * (segs - 1); > >> + > >> + return (cake_calc_overhead(q, len, off) * (segs - 1) + > >> + cake_calc_overhead(q, last_len, off)); > >> +} > >> + >