From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qk0-x22b.google.com (mail-qk0-x22b.google.com [IPv6:2607:f8b0:400d:c09::22b]) (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 55CC53BA8E for ; Sun, 26 Nov 2017 14:42:20 -0500 (EST) Received: by mail-qk0-x22b.google.com with SMTP id j202so29985927qke.10 for ; Sun, 26 Nov 2017 11:42:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to :content-transfer-encoding; bh=oIVNIzsXiymnuWlwck/kTF0fL1G7c8+1J9Na1FRNW70=; b=BouutpR97eRu6OQIRysFhE6zsV5j7dAFIchnoYtbmP2LtD/DwUDUzSUmjb7pNZkzhb 7fHRGQkgFMheKtNW/BhHyOaa7+24CJHWfgVQBVveCMZcZAgrB4RKVoaUX7QFpBdcEjHz qc9i3ni3xootxAIiYFZ3wWQlw0bfrC/osZ5rLcQAquoPns6jwzE/lyo4l0lo3sVLl2d1 sD3JWLS9ZUn7zAlPka4i95xninMcA6e8a+FIBoqOpmgsnX5EaIqyXJsxGXaWW7+J7JXL tyciy/FNZ/9o9qpI488OoxXgOFhpxp9yDmzcaBBAFC4/F9B63tOtwKLSxCf/iZRkVB/Y 4Eeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to :content-transfer-encoding; bh=oIVNIzsXiymnuWlwck/kTF0fL1G7c8+1J9Na1FRNW70=; b=FfzWKDX5NVJGm7uuRvvoRYoALofXEN2WIz+Q6GTmHmAo+iNj4k+VjCas0qCgIoTwv+ dgoameo70ncPDLtICF2jNS8nonqi6AngEy3PHvzecGW+Nrwiuaa5rsoEW2o79XorXXeE 4zOMWG5bMCjkK+DFfRkOjGQ59JS1Zjgp8du5zoW71MmMHBEZJzqMmh0VmilNKGGLKH5K kvvvkc0tg2NtCMNNG8CV6xoZQGJCYnl++wg8v5DC0YlG58B1gVyKFxbzBG8Pb+BvvH8x GsGXa1Eam5lRmO2vYrYrmXskFdhe3OzoccnCOcdB/Ly6SJwMUAlaH0nrhpKOiVwPC6h4 +XeA== X-Gm-Message-State: AJaThX4iiZ6GeZ/DJTA+C1mbIpBoXLVa7ojoDWYx1vHT/Aa0iXFc7tAr ivhllI500GkkRD/myWoP+KHmD0374VRr2rulpU/H2A== X-Google-Smtp-Source: AGs4zMaZWOR1WwWsK4PgKLCqhG5jMi7WYoiBXB/zm98LG4Ug0yzbG5VF58EorpzTwTSMzCtc3A6ruNvesIyP9k6Y9UM= X-Received: by 10.55.201.155 with SMTP id m27mr31871883qkl.299.1511725339551; Sun, 26 Nov 2017 11:42:19 -0800 (PST) MIME-Version: 1.0 Received: by 10.12.193.93 with HTTP; Sun, 26 Nov 2017 11:42:19 -0800 (PST) From: Dave Taht Date: Sun, 26 Nov 2017 11:42:19 -0800 Message-ID: To: Cake List Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Subject: [Cake] dealing with multibit DUAL whatevers 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: Sun, 26 Nov 2017 19:42:20 -0000 I just committed this diff --git a/sch_cake.c b/sch_cake.c index 14b32e0..606ec29 100644 --- a/sch_cake.c +++ b/sch_cake.c @@ -654,6 +654,20 @@ static inline void cake_update_flowkeys(struct flow_keys *keys, } #endif +/* Cake has several subtle multiple bit settings. In these cases you + * would be matching triple isolate mode as well. + */ + +static inline bool cake_dsrc(int flow_mode) +{ + return (flow_mode & CAKE_FLOW_DUAL_SRC) =3D=3D CAKE_FLOW_DUAL_SRC; +} + +static inline bool cake_ddst(int flow_mode) +{ + return (flow_mode & CAKE_FLOW_DUAL_DST) =3D=3D CAKE_FLOW_DUAL_DST; +} + static inline u32 cake_hash(struct cake_tin_data *q, const struct sk_buff *skb, int flow_mod= e) { @@ -772,8 +786,8 @@ cake_hash(struct cake_tin_data *q, const struct sk_buff *skb, int flow_mode) if (!q->flows[outer_hash + k].set) { /* need to increment host refcnts */ - allocate_src =3D ((flow_mode & CAKE_FLOW_DUAL_SRC) =3D=3D CAKE_FLOW_DUAL_SRC); - allocate_dst =3D ((flow_mode & CAKE_FLOW_DUAL_DST) =3D=3D CAKE_FLOW_DUAL_DST); + allocate_src =3D cake_dsrc(flow_mode); + allocate_dst =3D cake_ddst(flow_mode); } goto found; @@ -787,8 +801,8 @@ cake_hash(struct cake_tin_data *q, const struct sk_buff *skb, int flow_mode) i++, k =3D (k + 1) % CAKE_SET_WAYS) { if (!q->flows[outer_hash + k].set) { q->way_misses++; - allocate_src =3D ((flow_mode & CAKE_FLOW_DUAL_SRC) =3D=3D CAKE_FLOW_DUAL_SRC); - allocate_dst =3D ((flow_mode & CAKE_FLOW_DUAL_DST) =3D=3D CAKE_FLOW_DUAL_DST); + allocate_src =3D cake_dsrc(flow_mode); + allocate_dst =3D cake_ddst(flow_mode); goto found; } } @@ -799,9 +813,8 @@ cake_hash(struct cake_tin_data *q, const struct sk_buff *skb, int flow_mode) q->way_collisions++; q->hosts[q->flows[reduced_hash].srchost].srchost_refcnt--; q->hosts[q->flows[reduced_hash].dsthost].dsthost_refcnt--; - allocate_src =3D ((flow_mode & CAKE_FLOW_DUAL_SRC) =3D=3D CAKE_FLOW_DUAL_SRC); - allocate_dst =3D ((flow_mode & CAKE_FLOW_DUAL_DST) =3D=3D CAKE_FLOW_DUAL_DST); - + allocate_src =3D cake_dsrc(flow_mode); + allocate_dst =3D cake_ddst(flow_mode); found: /* reserve queue for future packets in same flow */ reduced_hash =3D outer_hash + k; @@ -1595,10 +1608,10 @@ static s32 cake_enqueue(struct sk_buff *skb, struct Qdisc *sch, flow->set =3D CAKE_SET_SPARSE; b->sparse_flow_count++; - if ((q->flow_mode & CAKE_FLOW_DUAL_SRC) =3D=3D CAKE_FLOW_DUAL_SRC) + if (cake_dsrc(q->flow_mode)) host_load =3D max(host_load, srchost->srchost_refcnt); - if ((q->flow_mode & CAKE_FLOW_DUAL_DST) =3D=3D CAKE_FLOW_DUAL_DST) + if (cake_ddst(q->flow_mode)) host_load =3D max(host_load, dsthost->dsthost_refcnt); flow->deficit =3D (b->flow_quantum * quantum_div[host_load]) >> 16= ; @@ -1762,10 +1775,10 @@ retry: dsthost =3D &b->hosts[flow->dsthost]; host_load =3D 1; - if ((q->flow_mode & CAKE_FLOW_DUAL_SRC) =3D=3D CAKE_FLOW_DUAL_SRC) + if (cake_dsrc(q->flow_mode)) host_load =3D max(host_load, srchost->srchost_refcnt); - if ((q->flow_mode & CAKE_FLOW_DUAL_DST) =3D=3D CAKE_FLOW_DUAL_DST) + if (cake_ddst(q->flow_mode)) host_load =3D max(host_load, dsthost->dsthost_refcnt); WARN_ON(host_load > CAKE_QUEUES); --=20 Dave T=C3=A4ht CEO, TekLibre, LLC http://www.teklibre.com Tel: 1-669-226-2619