From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg0-x241.google.com (mail-pg0-x241.google.com [IPv6:2607:f8b0:400e:c05::241]) (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 E51F13B2A4 for ; Tue, 21 Nov 2017 19:55:21 -0500 (EST) Received: by mail-pg0-x241.google.com with SMTP id 4so11607944pge.1 for ; Tue, 21 Nov 2017 16:55:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=96kV/MrQK3P4y3AQ5iTASR6OhW7N2ZsUlKd/ogE5IJM=; b=dFhZBpVT/Naa31JC7qwCMYoFBKzlCKRTE34EFA0ljao2wWUVnhU7rJdpRaaPk9TNSN vJSmFbEFARC+Dx6mKowzvj0L9JMxAKg09nZMNNGQqu+MJK4UXbqC3zEVzugvE9AyVm9T MPggzrhC1+nKjgu+B3Q6SiIK7y15U0N8jvaeki/Amfm2tJeK8vtfw06gZMx61eX2xaB8 Xx1ogZFshVTXkbGqvYX21At8/N/hM79DSbKJu+mIrK3r+KhdERzcVCDHGpoAlcXQfCyX GAFw8agIpS+XBmASDp/9ahgiPgvc4TMfVAnI30hqq4f4KcqDSN61/sopeRHiHSfDVYfp E2XQ== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=96kV/MrQK3P4y3AQ5iTASR6OhW7N2ZsUlKd/ogE5IJM=; b=LKJyTAQxxP9IZD17EHBjsEnumekAc1M287criLm2+xvIHWD6wlKofVMEyHLpI1DEnw +LeOUs6I6ZhCbX8rIDmAF0RrRVSaMvnrD1rlh1UxsaySe0K9/MWVZSmjVD0l3a5wZ5ZI ULG7o/dTaFrjC+r612X4zAA2ycvUKIFCz818j3jZIrxZOsjVexAZoqLVA4bP7PnL272A yiCuIuK9rMXkwkFoonPGmNF3HIV5nal0EQf2UR72dD4vElFfeOcfiQjMaKeDZnKC6+kQ R4jbD6e7d6tm+XJlhj6qiFaAC0bmDWGebVS1ZZ5SMd3jYOTciDE7LMYStRJFoHmysc4f CRXQ== X-Gm-Message-State: AJaThX7Pt+P94+pi/O2yzS65rlaq7WF1f0UDBFHygzlWgEGq+H/WvRN1 SwH4ti67vMvHxQoSxa+Cpcauvg== X-Google-Smtp-Source: AGs4zMYJmq5kIfLB3CUIclf104WJ+5lxNasNKKqVpFv5hbNJDdk/6X5sVOQnjcAyQxDzGjb/x73FeQ== X-Received: by 10.84.135.3 with SMTP id 3mr19311474pli.147.1511312121045; Tue, 21 Nov 2017 16:55:21 -0800 (PST) Received: from xeon-e3 (76-14-207-240.or.wavecable.com. [76.14.207.240]) by smtp.gmail.com with ESMTPSA id f15sm20751814pgv.45.2017.11.21.16.55.20 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 21 Nov 2017 16:55:20 -0800 (PST) Date: Tue, 21 Nov 2017 16:55:13 -0800 From: Stephen Hemminger To: Dave Taht Cc: cake@lists.bufferbloat.net Message-ID: <20171121165513.036b01da@xeon-e3> In-Reply-To: <1511309382-24060-2-git-send-email-dave.taht@gmail.com> References: <1511309382-24060-1-git-send-email-dave.taht@gmail.com> <1511309382-24060-2-git-send-email-dave.taht@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit 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:55:22 -0000 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. 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.