From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.taht.net (mail.taht.net [176.58.107.8]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by lists.bufferbloat.net (Postfix) with ESMTPS id 809233B2A4 for ; Tue, 21 Nov 2017 19:58:57 -0500 (EST) Received: from nemesis.taht.net (unknown [IPv6:2603:3024:1536:86f0:2e0:4cff:fec1:1206]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.taht.net (Postfix) with ESMTPSA id EFB4D21341; Wed, 22 Nov 2017 00:58:55 +0000 (UTC) From: Dave Taht To: Stephen Hemminger Cc: Dave Taht , cake@lists.bufferbloat.net References: <1511309382-24060-1-git-send-email-dave.taht@gmail.com> <1511309382-24060-2-git-send-email-dave.taht@gmail.com> <20171121165513.036b01da@xeon-e3> Date: Tue, 21 Nov 2017 16:58:54 -0800 In-Reply-To: <20171121165513.036b01da@xeon-e3> (Stephen Hemminger's message of "Tue, 21 Nov 2017 16:55:13 -0800") Message-ID: <87shd7ruwh.fsf@nemesis.taht.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain Subject: Re: [Cake] [PATCH 1/3] pkt_sched.h: add support for sch_cake API 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: Wed, 22 Nov 2017 00:58:57 -0000 Stephen Hemminger writes: > On Tue, 21 Nov 2017 16:09:40 -0800 > Dave Taht wrote: > >> >> +/* CAKE */ >> +enum { >> + TCA_CAKE_UNSPEC, >> + TCA_CAKE_BASE_RATE, >> + TCA_CAKE_DIFFSERV_MODE, >> + TCA_CAKE_ATM, >> + TCA_CAKE_FLOW_MODE, >> + TCA_CAKE_OVERHEAD, >> + TCA_CAKE_RTT, >> + TCA_CAKE_TARGET, >> + TCA_CAKE_AUTORATE, >> + TCA_CAKE_MEMORY, >> + TCA_CAKE_NAT, >> + TCA_CAKE_ETHERNET, >> + TCA_CAKE_WASH, >> + TCA_CAKE_MPU, >> + TCA_CAKE_INGRESS, >> + TCA_CAKE_ACK_FILTER, >> + __TCA_CAKE_MAX >> +}; >> +#define TCA_CAKE_MAX (__TCA_CAKE_MAX - 1) >> + >> +struct tc_cake_traffic_stats { >> + __u32 packets; >> + __u32 link_ms; >> + __u64 bytes; >> +}; >> + >> +#define TC_CAKE_MAX_TINS (8) >> +struct tc_cake_xstats { >> + __u16 version; /* == 5, increments when struct extended */ >> + __u8 max_tins; /* == TC_CAKE_MAX_TINS */ >> + __u8 tin_cnt; /* <= TC_CAKE_MAX_TINS */ >> + >> + __u32 threshold_rate[TC_CAKE_MAX_TINS]; >> + __u32 target_us[TC_CAKE_MAX_TINS]; >> + struct tc_cake_traffic_stats sent[TC_CAKE_MAX_TINS]; >> + struct tc_cake_traffic_stats dropped[TC_CAKE_MAX_TINS]; >> + struct tc_cake_traffic_stats ecn_marked[TC_CAKE_MAX_TINS]; >> + struct tc_cake_traffic_stats backlog[TC_CAKE_MAX_TINS]; >> + __u32 interval_us[TC_CAKE_MAX_TINS]; >> + __u32 way_indirect_hits[TC_CAKE_MAX_TINS]; >> + __u32 way_misses[TC_CAKE_MAX_TINS]; >> + __u32 way_collisions[TC_CAKE_MAX_TINS]; >> + __u32 peak_delay_us[TC_CAKE_MAX_TINS]; /* ~= bulk flow delay */ >> + __u32 avge_delay_us[TC_CAKE_MAX_TINS]; >> + __u32 base_delay_us[TC_CAKE_MAX_TINS]; /* ~= sparse flows delay */ >> + __u16 sparse_flows[TC_CAKE_MAX_TINS]; >> + __u16 bulk_flows[TC_CAKE_MAX_TINS]; >> + __u16 unresponse_flows[TC_CAKE_MAX_TINS]; /* v4 - was u32 last_len */ >> + __u16 spare[TC_CAKE_MAX_TINS]; /* v4 - split last_len */ >> + __u32 max_skblen[TC_CAKE_MAX_TINS]; >> + __u32 capacity_estimate; /* version 2 */ >> + __u32 memory_limit; /* version 3 */ >> + __u32 memory_used; /* version 3 */ >> + struct tc_cake_traffic_stats ack_drops[TC_CAKE_MAX_TINS]; /* v5 */ >> +}; >> + > > Rather than passing one big structure (like xstats) through netlink, it is more typical > to break it into separate TLV items. This is an API in its 5th revision over four years. If ever there were a time to break it and do something saner, it would be now, of course. > Also, when I see multiple arrays of same size. It seems the API should > be: > struct tc_cake_tin_stats { > __u32 threshold_rate; > __u32 target_us; > struct tc_cake_traffic_stats sent; > ... > > What if you want to change number of TINS, the ABI shouldn't have to change. It is hard to imagine ever wanting more than 8 tins. Using up 3, sanely, has proven hard. > _______________________________________________ > Cake mailing list > Cake@lists.bufferbloat.net > https://lists.bufferbloat.net/listinfo/cake