From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ot1-f44.google.com (mail-ot1-f44.google.com [209.85.210.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7808B3CFF6B for ; Wed, 5 Aug 2026 03:10:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.44 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785899417; cv=none; b=ExbilY3gi1VAW7jZFQLL+gr6QMsY3bMbXAWjQCkeEAUcLKmqVfZ6y0/mCFextBiWLcrCt7OTZkImKj7tb5cXTyPD8G18rquRgKC4AKN/wfUR0dECjwgaKI+ngaceg7atsuJFuIsBeDeRfuPTHn5b8LO8IkFXdvLHdM/eI/LaceM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785899417; c=relaxed/simple; bh=BVyEg/yYgPSwLV5IwdhaQQaJYuhZyIaj0diGnbsjN/E=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BXy7efxaIpYqBHZvASkjym2+0p2fMtCGYjHTN+av1A4joqNk+5ed1/A8u5ZOPFyY8mJbnrleDndzUeqqbEULTEu+hVHbbSqKX0cjICzaZ40UPR/b8yl63d8sZxBkSKSJiaEIsW2BvZ356xAtIRMPNJt2rmJQR6X+ZyZgcxeyrV8= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=BG1uqBpM; arc=none smtp.client-ip=209.85.210.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="BG1uqBpM" Received: by mail-ot1-f44.google.com with SMTP id 46e09a7af769-7ee37dc91f5so371846a34.3 for ; Tue, 04 Aug 2026 20:10:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785899414; x=1786504214; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=wP2lXcYocA4uRBulyzxXopr9bWkNcIAmOaQO5fndKNg=; b=BG1uqBpMFB6GxFqavNvHDRjYkU3K3+ij/6BoE+9kjINbb50QG9WuV7g1aUNOHvaH0L y78xHcwW9d38lPATELKAYlua53nLENkdynGyGb+EG8siIYBLrpMEQ7ojXTuEC7tSXrb+ gKjlHsgQl5sBBSlT7a9AKSwItzzpqs0BaLxKoloYKT/LwmJfStyOSFh5UU5JY3HuaE3h 6JKiFHDEF/9Tfri0gytvZ5MM17FVcOevNcXyME0pG0UeHrvxeQLteNVAb5KAfN+bRuus FQPr7pl5fUZaouVIiEVqcohPWd3oQhH8zo43LB5GNJkAcuyGOc6BX0lQj9ozuDM2mUHD Rk4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785899414; x=1786504214; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=wP2lXcYocA4uRBulyzxXopr9bWkNcIAmOaQO5fndKNg=; b=IgSAwnRyIRCc11C71ovUTJG5GSqCiCDHHEip/aNxc6hkmJZueAwzijm3uW0aHeUM2J qrwH0JE8MyyWjAIlFicKeRrOj6kyg5rJVyBuD3m6EKCRAJuJWtiyGgdtgEBoO+urHuxl oNJLOgzPjdmftVbMtpbpRkH+piUWs54D024fcHLXaJX5yy/xuW5qYrv5lPpCZKZoProi YHH7ZOpmLuOa4ljCEdL9U+LYEyTk6y4UQMsR3qLK3W6T7hgL4wW7406LE50oHGSZGWAP DCt0Ysw7Vam9GDO4hU9z48Dq1o8am27CeO+WgEXKOG7ZgEUl3OWFeCtYnIoS99hr8tHI WOOQ== X-Forwarded-Encrypted: i=1; AHgh+Rp0sQNzz3We1TZ0WDvmjo1881rgfshVQha/2qRTyGTYiOcSYa0RWocgfxiIketdeJBcqA442tnafkQuv+g=@vger.kernel.org X-Gm-Message-State: AOJu0YwtyoCPoUFyjyFLUkkhYp3lCSeq14dt/JQ2ZVzoig9bHs7eEjUX mcADh/MIJw8UmGrhRzplPnHu1ylf+pc/NVzFDY+NI+e4hX6M7IGLMl5p X-Gm-Gg: AR+sD10NwJnEBDmdf8tmQqj0BUwYLUd1swCr2s4BU16yhRAETCim/66Lwp0JF5KJ7Zz i+YGm9nJvrVT3WSc/MQ/F0dUS4tmCfva22j443qucmDwztYW81ztRamat6Vf+k2l6OxYOHJbm+G eSV1S3DdtN1cvjZcTqiA/4DrspjgBhX0NSd0IPO0RXXJ6IKDK0rFNg/0m8N32ZZPFsiHrEwOUip LqwGRQvlSTQYq9qV6Xu831j1lVImIDxrfL8RbZVHbInUyQqRb4NifRgLlOfKET/6wnzCkZ0Kald ZinVPqL+FbFPq5VXMxlHGcH4uHrzCnZbfEcGTXXBdx5NwiBuPF3VaM5CnxAlOUg2BVC00YaQ1Rb LqRGBPM3FQRDu4X3kAb/F0jkQ3FRKdbYMIazZB21FW6NL238vWmzOLrFB0sDe+daD5UdmmtXfQe Txqtz5NfzfrnRc9+6y9ARcj+2cuwdgtQzyVloTiiV56G2qcQMlQkvlZ7mxHol4WBl2+wE9 X-Received: by 2002:a05:6820:2083:b0:6aa:da04:b56f with SMTP id 006d021491bc7-6ae96c10163mr2164961eaf.3.1785899414376; Tue, 04 Aug 2026 20:10:14 -0700 (PDT) Received: from localhost ([2a03:2880:31ff:44::]) by smtp.gmail.com with ESMTPSA id 006d021491bc7-6ae94013615sm1584904eaf.10.2026.08.04.20.10.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Aug 2026 20:10:13 -0700 (PDT) From: Mohsin Bashir To: netdev@vger.kernel.org Cc: andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, pabeni@redhat.com, shuah@kernel.org, alexander.duyck@gmail.com Subject: [PATCH net-next 12/14] selftests: net: shaper: Reject invalid set requests Date: Tue, 4 Aug 2026 20:09:34 -0700 Message-ID: <20260805030936.1092907-13-mohsin.bashr@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260805030936.1092907-1-mohsin.bashr@gmail.com> References: <20260805030936.1092907-1-mohsin.bashr@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Mohsin Bashir Verify that invalid set requests fail without corrupting existing queue shaper state. The test covers invalid node creation through set and invalid queue identifiers, then confirms the original queue configuration remains unchanged. Signed-off-by: Jakub Kicinski Signed-off-by: Mohsin Bashir --- tools/testing/selftests/drivers/net/shaper.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/tools/testing/selftests/drivers/net/shaper.py b/tools/testing/selftests/drivers/net/shaper.py index 8dd4897e999e..02a11e6b9a05 100755 --- a/tools/testing/selftests/drivers/net/shaper.py +++ b/tools/testing/selftests/drivers/net/shaper.py @@ -235,6 +235,46 @@ def set_all_supported_attrs(cfg, nl_shaper) -> None: shapers = nl_shaper.get({'ifindex': cfg.ifindex}, dump=True) ksft_eq(len(shapers), 0) +def invalid_set_preserves_state(cfg, nl_shaper) -> None: + """ Verify a rejected .set leaves the existing shaper configuration unchanged. """ + nq = _require_queues(cfg, 1) + _require_caps(cfg, nl_shaper, 'queue', + ['support-bw-max', 'support-metric-bps'], + "device does not support queue scope bw_max with bps metric") + + initial = {'ifindex': cfg.ifindex, + 'parent': {'scope': 'netdev'}, + 'handle': {'scope': 'queue', 'id': 0}, + 'metric': 'bps', + 'bw-max': 10000} + nl_shaper.set({'ifindex': cfg.ifindex, + 'handle': {'scope': 'queue', 'id': 0}, + 'metric': 'bps', + 'bw-max': 10000}) + defer(_delete_shaper, cfg, nl_shaper, {'scope': 'queue', 'id': 0}) + + with ksft_raises(NlError): + nl_shaper.set({'ifindex': cfg.ifindex, + 'handle': {'scope': 'node', 'id': 0}, + 'metric': 'bps', + 'bw-max': 20000}) + shaper = nl_shaper.get({'ifindex': cfg.ifindex, + 'handle': {'scope': 'queue', 'id': 0}}) + ksft_eq(shaper, initial) + + with ksft_raises(NlError): + nl_shaper.set({'ifindex': cfg.ifindex, + 'handle': {'scope': 'queue', 'id': nq}, + 'metric': 'bps', + 'bw-max': 20000}) + shaper = nl_shaper.get({'ifindex': cfg.ifindex, + 'handle': {'scope': 'queue', 'id': 0}}) + ksft_eq(shaper, initial) + + _delete_shaper(cfg, nl_shaper, {'scope': 'queue', 'id': 0}) + shapers = nl_shaper.get({'ifindex': cfg.ifindex}, dump=True) + ksft_eq(len(shapers), 0) + def _group_under_netdev(cfg, nl_shaper, bw_max=None): r"""Group queues under a netdev-scope node; caller owns node teardown. @@ -1152,6 +1192,7 @@ def main() -> None: set_nshapers, del_nshapers, set_all_supported_attrs, + invalid_set_preserves_state, basic_groups, basic_groups_with_rate, qgroups, -- 2.53.0-Meta