Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp3948810ybc; Thu, 14 Nov 2019 18:00:00 -0800 (PST) X-Google-Smtp-Source: APXvYqz6dLg5krH/0fPWxKKwDoL6PIeIYgYotee4fIT+0OqRzw6/devbD/SVy9hAk3nZQTFGcIFP X-Received: by 2002:a17:906:6b0c:: with SMTP id q12mr10302711ejr.197.1573783200332; Thu, 14 Nov 2019 18:00:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1573783200; cv=none; d=google.com; s=arc-20160816; b=nBeDyLKS8VhW5c6GLCPw76TYeCWJfflXUj9PDmghh4htm+bJ1wvMekV/GqQA7q862B QL4GRYl8yR0TrDTi+otjJ+g9EQ/b58/xMdfznHnV20wBSUCe75oDhOq78PAotJyift3Y qgN8BqN9oovtBEN/094eKuBGTqgeUWK60wcQ6f5t3scU39ZAkUervyWlfqyrrP9kP0Fl RIe+ZERJc/pDdPEsgzx8ctMdXAbaAsZLYAbd++6HxloodphV4ykRMzO0nGWpWfrrGa0k 0Ntb+6l3q7Tyw/gG2nN3s/Gt4APo+Ic5a6G6UVI9UBOHtU/QrHTEcUExM8DYr16g6XVM 2vig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=VhwfCvUXZdHcPjd/8gnXz63IRCXwmj0cc9MwMWk9XXQ=; b=WyEQmLvQO5B2FVNOEY7OBrSAr+/axwe0Noh8L1OvK1YDmaY0n7IYBXXNGTEVh3OJUA 4mqHVaw6D5q22uuRbuaJEdeSmBbstNSY207RP/VxoGYLS/EteoClOPNHO4JkmnZYjqac FbrRBvfRom4dBSmqInuE6rUf+6qxe6gn2XpZGwCLCtZM/WNK7rZDwhOF6ChQy9SW+reu V+ZyfL/CGLcz3ITJ4ehxO6q45mq9R81PnJbRYY/CtNyMplBQt0Qo2nq7E0xjzqizNrWD JoAugajbsAmGOZY7O+w6v/dQscD0xaWa8vTAezwl2ycSlQlmyy0AWdeSStemVnY0CRCI zmoQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=e+QjIhLz; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o48si5709447edc.151.2019.11.14.17.59.34; Thu, 14 Nov 2019 18:00:00 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=e+QjIhLz; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727483AbfKOB51 (ORCPT + 99 others); Thu, 14 Nov 2019 20:57:27 -0500 Received: from mail-lf1-f65.google.com ([209.85.167.65]:44477 "EHLO mail-lf1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727189AbfKOB51 (ORCPT ); Thu, 14 Nov 2019 20:57:27 -0500 Received: by mail-lf1-f65.google.com with SMTP id z188so6671505lfa.11 for ; Thu, 14 Nov 2019 17:57:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=VhwfCvUXZdHcPjd/8gnXz63IRCXwmj0cc9MwMWk9XXQ=; b=e+QjIhLz/WsEJAN12AxLkTNiXTZIBr5lqC50IVP0v3sj3Dv4Vght57Kv79N+t2D0uf U+mTHNdA3WbMGdb9k6sJoOovSavYzNoubzdH8/k9oiMusB8TRlv5I8W07vZMh+xP4SNn 66YT/YbdoWng9ye34W9IfWIPnEeHVWKymthBeju9oAksBfbIcCppd3oKuMK5KzpzAWK9 gYOUlRqvPBWPnSEtGjNvz2c2Gvgsw/aSfn9s+yPjqNsGBMu6TDE2zdKdJk+awScoOZGn He2vsQHPpfNKqMPSrFqqwuUWbNuD/zy/vh7AhQmMdOECtXu/kiIeXELfwO+pIPVp/1Up peIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=VhwfCvUXZdHcPjd/8gnXz63IRCXwmj0cc9MwMWk9XXQ=; b=YAFml4s7B/WwiNrlpBiJu/4UL/hnsx2PKL2zkjddKgCaqIpjkcKkdLOzkONp9G+4OR QJxx2cJLe7dlfBQknh9sa7TLGvYRe7gtudPsv6i87siDeNJSO8lJk3evBs/mqdoLFqZ5 uBwMBVP38ZaI8mnQgHxhITC8gQY15e7q7c1OdN7pquYcPOXE26gxVsdXW7Rh5MPS3UCy 2iv+ofYmkj6qn8uUTjXTLtFALg0BlgwJEvTq+WGj54Cgp0ghY4W4VHK2h1puDS67wWyU H3rVjsHPYErGW4yRUftNH7u7WP1heTq2zmBwMpvO5FXKmzOdUvh2Cth5+E+qslHKTyKf o0rA== X-Gm-Message-State: APjAAAXzKVvuucecJ/VTzAjJ03kSMa/t0aJy2cvEorjyRF/Zcpc5Zgfv mFrRC0lrId5rFbbWORb50aOJlkWyNY4= X-Received: by 2002:a19:3f07:: with SMTP id m7mr9468163lfa.136.1573783043837; Thu, 14 Nov 2019 17:57:23 -0800 (PST) Received: from localhost.localdomain (57-201-94-178.pool.ukrtel.net. [178.94.201.57]) by smtp.gmail.com with ESMTPSA id v22sm4376394lfg.63.2019.11.14.17.57.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 14 Nov 2019 17:57:22 -0800 (PST) From: Ivan Khoronzhuk To: netdev@vger.kernel.org, davem@davemloft.net, vinicius.gomes@intel.com Cc: jhs@mojatatu.com, xiyou.wangcong@gmail.com, jiri@resnulli.us, linux-kernel@vger.kernel.org, Ivan Khoronzhuk Subject: [net-next PATCH] taprio: don't reject same mqprio settings Date: Fri, 15 Nov 2019 03:56:07 +0200 Message-Id: <20191115015607.11291-1-ivan.khoronzhuk@linaro.org> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The taprio qdisc allows to set mqprio setting but only once. In case if mqprio settings are provided next time the error is returned as it's not allowed to change traffic class mapping in-flignt and that is normal. But if configuration is absolutely the same - no need to return error. It allows to provide same command couple times, changing only base time for instance, or changing only scheds maps, but leaving mqprio setting w/o modification. It more corresponds the message: "Changing the traffic mapping of a running schedule is not supported", so reject mqprio if it's really changed. Signed-off-by: Ivan Khoronzhuk --- net/sched/sch_taprio.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/net/sched/sch_taprio.c b/net/sched/sch_taprio.c index 7cd68628c637..bd844f2cbf7a 100644 --- a/net/sched/sch_taprio.c +++ b/net/sched/sch_taprio.c @@ -1347,6 +1347,26 @@ static int taprio_parse_clockid(struct Qdisc *sch, struct nlattr **tb, return err; } +static int taprio_mqprio_cmp(struct net_device *dev, + struct tc_mqprio_qopt *mqprio) +{ + int i; + + if (mqprio->num_tc != dev->num_tc) + return -1; + + for (i = 0; i < mqprio->num_tc; i++) + if (dev->tc_to_txq[i].count != mqprio->count[i] || + dev->tc_to_txq[i].offset != mqprio->offset[i]) + return -1; + + for (i = 0; i < TC_BITMASK + 1; i++) + if (dev->prio_tc_map[i] != mqprio->prio_tc_map[i]) + return -1; + + return 0; +} + static int taprio_change(struct Qdisc *sch, struct nlattr *opt, struct netlink_ext_ack *extack) { @@ -1398,6 +1418,10 @@ static int taprio_change(struct Qdisc *sch, struct nlattr *opt, admin = rcu_dereference(q->admin_sched); rcu_read_unlock(); + /* no changes - no new mqprio settings */ + if (mqprio && !taprio_mqprio_cmp(dev, mqprio)) + mqprio = NULL; + if (mqprio && (oper || admin)) { NL_SET_ERR_MSG(extack, "Changing the traffic mapping of a running schedule is not supported"); err = -ENOTSUPP; -- 2.20.1