From nobody Thu Dec 18 09:43:01 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6E75CC001B0 for ; Mon, 14 Aug 2023 02:34:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232483AbjHNCeH (ORCPT ); Sun, 13 Aug 2023 22:34:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46214 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232194AbjHNCdo (ORCPT ); Sun, 13 Aug 2023 22:33:44 -0400 Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02on2137.outbound.protection.outlook.com [40.107.249.137]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3C21BE6A; Sun, 13 Aug 2023 19:33:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=E0h07CZDOC5dnyziFmlQnfBl7KXl8FNDTF9fDtHNHzKDTMWV34CLIfYOGH7dpAwUc97OUW051okCRXqF4NxHtNCDy6epoGDnbFpIX3IXHNn4PVDW20joPBujz87cONN1kMkvYXPNdS6uar//1EsK4pibw8uIvJY7Ojqm8fOyFwzeuI6C4qWphWG0GzZovmHoImyH8JRszRAYew0qyU/X7DRmoFP5qkCvdetKqkZ18m8AKjukBYOgcX3dDjAHHTEmI/Tugwb997n1cHr1C8pNei6JVHMaW+w2Xj3lUQbo8wxD73azfSQdOY5jg/eGG2mO9SxaUBUbU06jV58RV/pQ9A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=qKCR9gdCWst7aI3v/UET4xE5J1kbpBE7+t3UOunXH9A=; b=UUlkIqxWQn7JOu5rLlFnwFDxOhGOKLmTRFek+Qp0Sm3NHcouwiRvvYT5cHTUVS6+HibsBjJA0iiQzNrHZfjNqH0tlHJyhWTcuTd8vDyLnCBdZm+ywfxKAZlLw3CD/hjhvL9SixCuNj85MZIP1w8XiXRUJpeC6tTzabz4pCwrURn3YVAskf3mb+5jVHu50Si7uxn7ZLZ8+ByjrFO+GIpyC83dClUcG/jFKA26Ive884TkZx/FRkbMBCYcbizjGFE64fyF9bz4R9aBrIVtdhKB90o11zXsQzPUf2gqjPQs/BIL8bx2PhQ4y9rYjW+Ze2hkBAV3hrsaEJWa3ptmgzL/Tg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=uclouvain.be; dmarc=pass action=none header.from=uclouvain.be; dkim=pass header.d=uclouvain.be; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=uclouvain.be; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qKCR9gdCWst7aI3v/UET4xE5J1kbpBE7+t3UOunXH9A=; b=MFAwd+hQi+hko3yFmDTw7VkMaaxomucgPUZjMEKjIq3KctM7f9qaA/Eyx7/ljtRvAahaGvDdgLUPHXINpWAk7FMrUpFI1kWeBQ599jJkP5HINjP5c1EEfONELJEzh4GjQ1h2jilmILwbMZYNS8yy/ERkjNXNdX+olyVpPlL3IeXigcCF3J30dGMDWs68hZ35hq/+I4Fnu+gQlC/1WGWzYRYB3qisyZ5JpRjvRzpTqjymzKbB/uIPSbeeNGp2h85U6Wcai+4xMMqc55US0Rv8ZX2UHRZo+iH+mBkcp0W2qbZ81DZ3BtEzyDv8tIGwNKFgl66puNz5cDPjyRflA2rV6A== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=uclouvain.be; Received: from DB9PR03MB7689.eurprd03.prod.outlook.com (2603:10a6:10:2c2::11) by AM7PR03MB6401.eurprd03.prod.outlook.com (2603:10a6:20b:1c3::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6678.24; Mon, 14 Aug 2023 02:33:39 +0000 Received: from DB9PR03MB7689.eurprd03.prod.outlook.com ([fe80::8303:13bd:7736:34cf]) by DB9PR03MB7689.eurprd03.prod.outlook.com ([fe80::8303:13bd:7736:34cf%4]) with mapi id 15.20.6678.022; Mon, 14 Aug 2023 02:33:39 +0000 From: Francois Michel Cc: Francois Michel , Jamal Hadi Salim , Cong Wang , Jiri Pirko , Stephen Hemminger , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 1/3] [PATCH 1/3] netem: add prng attribute to netem_sched_data Date: Mon, 14 Aug 2023 04:31:38 +0200 Message-ID: <20230814023147.1389074-2-francois.michel@uclouvain.be> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230814023147.1389074-1-francois.michel@uclouvain.be> References: <20230814023147.1389074-1-francois.michel@uclouvain.be> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MR1P264CA0034.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:2f::21) To DB9PR03MB7689.eurprd03.prod.outlook.com (2603:10a6:10:2c2::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DB9PR03MB7689:EE_|AM7PR03MB6401:EE_ X-MS-Office365-Filtering-Correlation-Id: 90b4c1ac-3153-41ff-5397-08db9c6ede41 X-MS-Exchange-AtpMessageProperties: SA X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: G1u3fEQj9JEDYClECiyX3FGqpiG+cFYJUtcfDjjSXaPko19a64KaZOhtIfgppC+kaIUlrfh6iLzesS0KVTTF479L/99r5WJt6CQAewa3J0pY0kLkCERL7ty3z4BAW+WgKsrhhlWH9ObrA1mrhELj67VFLjtu8+Sner9swJERkfoTU3v8xbc2GeqK9rhJIPy412g7KBSSQRk4GSfA9do9lM4TQ0wVT/8QVufKqyo/JAC/OtYMKk6OsoNwhSVH0faO810vrYzKs7bZNl56xRWP6cMOBzOmCAwxQRZklYREnf7GKR7+GCotrqauyrRjbGN60BNyuMweOo0FAOySXVJVVvwbK76xLzVWQyYvmITOVNc1wzYwxYwFhBEhS+tGVvLFnQt8nybXi1d/jrb7/fTAhTrfpT4FTA7hpmAP0ew1loNpygX3yCiGGs28xEpji3Vyv9pQLqD7yaMoVOLlR0qfeFXp6wTPNmRsqM3W2f1uFK63LX2b8UpAwJGgp8rWy1+ltsJgx1HypEHnIjfFTbE7XMEek2ptuhOdJFSeO5SNQfU84nmmJEqTLWZ+qbL87OhLNawGrXDiT52VMHjBe6BvEOBH+g1HrrpETGyOF1dm8NA= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB9PR03MB7689.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(136003)(346002)(39850400004)(396003)(366004)(376002)(109986019)(451199021)(186006)(1800799006)(38100700002)(52116002)(54906003)(6486002)(478600001)(7416002)(5660300002)(2906002)(36756003)(86362001)(44832011)(4326008)(66476007)(66556008)(66946007)(41300700001)(8936002)(316002)(786003)(8676002)(83380400001)(66574015)(2616005)(6506007)(1076003)(6512007)(266003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?a0tRdjZnamNBTXY0WjZKUTFDeWVlenJtSDdCdWZ5d1ZuVjhyek1PeHNtZllJ?= =?utf-8?B?K0p3M1NnZkpqZDh6Tm9MRW9nKzVrNThMd2tlZWlnZXpTaHBaaXQ1Zkp5UVlV?= =?utf-8?B?QnNpOFZ4ejdSbHFRRlF6ZXpRVXFkSTc4SXBvbjZMVVVRUUZsRWlaOTFpSjVM?= =?utf-8?B?UGp4bDl6NUVNdE5NakVTNmtEeW1RQ09uNjFFcXBNU1FQWkNEaEZNSUNxT29z?= =?utf-8?B?Vm0wNm80a0dRWWFyN3BLTFkvM0pST1BRdkI3TlJDYmhIREtvWnpaWmx0NklS?= =?utf-8?B?U2plQlV5cXlwQmthUURqMVliQzEyb0lsempMWnE3bmFkSU5aRFRvK1VxMjR3?= =?utf-8?B?M2VTYWwwN24yNmJRTnR6bE9rd1pIOVNvbkpuU1N0NnpGQlp0cXJxWE1FbUFm?= =?utf-8?B?aFRPWDFDQVo5MVErM2p6L0xDNkt5NGp6VU9NNGRGV3VIK0JpT3F4ODl0WGI2?= =?utf-8?B?N3dOVU1QM0dxUUVkRk1Za0hMaDBScHRibXZpaW54VlN0THhCWGNxOWkzeXpp?= =?utf-8?B?Vnl3dnFZdmt3bVl0em5ObjI5RVozTlRGTW8veEJDekFXZkFWeHFoTHVtQ2Nk?= =?utf-8?B?aU9wYU4rZFlvZm5Tdm8vRHlZUE1IZGlGbXo2bVQ0eWk3alFybE1zZTUxZEpm?= =?utf-8?B?emYwUm9uRVRJeTZrMHFlNnA5N0w2TGRsUXZCdXBYbHBOTHhMbXpPeTU1azhF?= =?utf-8?B?aUJwM2NQM2p3LzFhZkYzc1B6dkpqZmFDNkwrMTMyWHppZjc2dEIydVNmcHJj?= =?utf-8?B?L29CR2VKbGZxdXJkU3BJaXVTYnR1SzdCdUpJZzVxU2RFK0c3Y2tlQzZMdmNB?= =?utf-8?B?eTNnZmNqQjF5Wkpqa0sxeEdieDNlWVlmMExsL3hJQnBidG5KQnM5MFAvT0li?= =?utf-8?B?amd5OFdPVCtjakdmYkF6cHp4OWRGS1JIUm9qcGpuR0xjMEpxaTlJK2lNQkRv?= =?utf-8?B?U3hjRW5zZW1pQllZQTFCeElmRUdOcGxRZXlSNVBDdUs5Q2dKMW1mMDlhRHJT?= =?utf-8?B?MCt3Rzg1OVNQVU04OEZSU3k2emltVnpkdVBEakt2cmJjenN6cnRDZmtXeTR6?= =?utf-8?B?NllCWllON3ZFL0U5cjU2TjdLMEVhQWFKYnRQWUl6YVJidit1ODVJejZ2NEd0?= =?utf-8?B?ZEJCeGIxcEEzZENEZFpVZUpKa01UMEJRSUJxMkpQMVhuWC95UHJDL2M4SWk1?= =?utf-8?B?OHhidC9uVkYwYllpeWNJUnN4NGFGU09xdHVOd0taeEN3aUZFSjg2ZmU5NjZU?= =?utf-8?B?dVBQcjBucG5lL3dtaGR5bXJvUk5kcXlrQ2w2M3Q0UTExMzJLcTRSUkNJSU5a?= =?utf-8?B?R0xlaTRsSDhyZ20wMXpqY0s3TnF2L1lFWGFHSWhwQUwwcTJ5QVVsMjl0dzB5?= =?utf-8?B?cnNQSTNMenlJMmhvbXZ3ZUZNL29TQlVqUzJrU0ovb1FUNllHd1ZJTHNEUU16?= =?utf-8?B?eEZRbStiU1hMYVB6c0grZnRZcS9VU0NrZVNHTHREdEU0RGVPRERnYlFZa0RI?= =?utf-8?B?YmpYYmlYVEJQTTgyUTduMDV5NjM2b2xyTkxob08xZ3BINEJhcW41b2NtMWlX?= =?utf-8?B?NVdneFlIYmUrWU0xQmp0S013dExLRDkrVXE3Rkk5bHA1cnVxaE0xMXJrWCsr?= =?utf-8?B?K01FaStrclhEUzhiZGhLSWhJRGdTODd6c2lVSTBJeVV0K0JJMEV0cmxDbkZK?= =?utf-8?B?VGJGOGF6ME5selhYVS9ydDJrdzZaZnJqNktnZXV2UHA4WGp5b1B0QlRCbkkv?= =?utf-8?B?NzRXRFIzN3gycEhwVXpZeVkzZzVZTzRPUTh3VSs2MzFXSXI2eUV2bXVOVU1G?= =?utf-8?B?LzJGdFl1ZHRzUFlxQVB3WXE3SVpJSlRKSkxkN1JaOUkwWUp0OVRpZDBkUmxy?= =?utf-8?B?dHlxT1lZV215UFEzYkxLV0NXbTFqZGE1RExEZjNTYll6cHl0ZGFRMnVLbWVm?= =?utf-8?B?TkpqNllmU1kxSVVEc1JVcGdweDMrbUtUbDJKOTdNVkJaVzVxSDhJYnNhVng5?= =?utf-8?B?OFNmZHlYdG1Ja1lwOTVtaWJ3N2tZSE1YOElsNFBvd00wSXFhSWhMOHN4eWlR?= =?utf-8?B?eDhSbWlEa3NwZFBzVENaZkNqSjYzU1E1LzhFNGhMQXVtV1YzQnkyV1FqR3FS?= =?utf-8?B?QUwyVENKMFFFcUtHYjJ6ZnBZdm15WEdOVHM5cVE1MXRuL3ZmZ1JjV0lKN1gz?= =?utf-8?Q?1HYt+0MFcKDWbYmNcMaRDks+yjQW7EDDFoAteyV8Dilp?= X-OriginatorOrg: uclouvain.be X-MS-Exchange-CrossTenant-Network-Message-Id: 90b4c1ac-3153-41ff-5397-08db9c6ede41 X-MS-Exchange-CrossTenant-AuthSource: DB9PR03MB7689.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Aug 2023 02:33:39.3620 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7ab090d4-fa2e-4ecf-bc7c-4127b4d582ec X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: qlxL3fJ25qk3EMXJKepUBkr9KayyRqlp5u2Pe0OOb4Qz7st1RzzTKZd24Hny515FLkI6LnlS49LpCcpd0g0gORnqFw++Qsv2h2Lif3HBPfE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR03MB6401 To: unlisted-recipients:; (no To-header on input) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Fran=C3=A7ois Michel Add prng attribute to struct netem_sched_data and allows setting the seed of the PRNG through netlink using the new TCA_NETEM_PRNG_SEED attribute. The PRNG attribute is not actually used yet. Signed-off-by: Fran=C3=A7ois Michel --- include/uapi/linux/pkt_sched.h | 1 + net/sched/sch_netem.c | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/include/uapi/linux/pkt_sched.h b/include/uapi/linux/pkt_sched.h index 00f6ff0aff1f..3f85ae578056 100644 --- a/include/uapi/linux/pkt_sched.h +++ b/include/uapi/linux/pkt_sched.h @@ -603,6 +603,7 @@ enum { TCA_NETEM_JITTER64, TCA_NETEM_SLOT, TCA_NETEM_SLOT_DIST, + TCA_NETEM_PRNG_SEED, __TCA_NETEM_MAX, }; =20 diff --git a/net/sched/sch_netem.c b/net/sched/sch_netem.c index 38d9aa0cd30e..d73596d0e912 100644 --- a/net/sched/sch_netem.c +++ b/net/sched/sch_netem.c @@ -105,6 +105,12 @@ struct netem_sched_data { u32 rho; } delay_cor, loss_cor, dup_cor, reorder_cor, corrupt_cor; =20 + struct prng { + bool deterministic_rng; + u64 original_seed; + struct rnd_state prng_state; + } prng; + struct disttable *delay_dist; =20 enum { @@ -922,6 +928,7 @@ static const struct nla_policy netem_policy[TCA_NETEM_M= AX + 1] =3D { [TCA_NETEM_LATENCY64] =3D { .type =3D NLA_S64 }, [TCA_NETEM_JITTER64] =3D { .type =3D NLA_S64 }, [TCA_NETEM_SLOT] =3D { .len =3D sizeof(struct tc_netem_slot) }, + [TCA_NETEM_PRNG_SEED] =3D { .type =3D NLA_U64 }, }; =20 static int parse_attr(struct nlattr *tb[], int maxtype, struct nlattr *nla, @@ -1040,6 +1047,12 @@ static int netem_change(struct Qdisc *sch, struct nl= attr *opt, /* capping jitter to the range acceptable by tabledist() */ q->jitter =3D min_t(s64, abs(q->jitter), INT_MAX); =20 + if (tb[TCA_NETEM_PRNG_SEED]) { + q->prng.deterministic_rng =3D true; + q->prng.original_seed =3D nla_get_u64(tb[TCA_NETEM_PRNG_SEED]); + prandom_seed_state(&q->prng.prng_state, q->prng.original_seed); + } + unlock: sch_tree_unlock(sch); =20 @@ -1203,6 +1216,10 @@ static int netem_dump(struct Qdisc *sch, struct sk_b= uff *skb) goto nla_put_failure; } =20 + if (nla_put_u64_64bit(skb, TCA_NETEM_PRNG_SEED, q->prng.original_seed, + TCA_NETEM_PAD)) + goto nla_put_failure; + return nla_nest_end(skb, nla); =20 nla_put_failure: --=20 2.41.0 From nobody Thu Dec 18 09:43:01 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A0D22C001DE for ; Mon, 14 Aug 2023 02:34:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232513AbjHNCeJ (ORCPT ); Sun, 13 Aug 2023 22:34:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46218 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232330AbjHNCdp (ORCPT ); Sun, 13 Aug 2023 22:33:45 -0400 Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02on2137.outbound.protection.outlook.com [40.107.249.137]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 38842E65; Sun, 13 Aug 2023 19:33:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nTi1dYas0QXAP0qbOvkO1v3fWH+OAJozqH3YyVa6+L5xtELs3v4Byxr1Y5HdBdrQe4jJAMSFnUFpzIoUXoFawYTqvB0cF05sxgNF0Jw29tfZbI4ZGf2SbH5pO7qQSGPMh4b9JpOicW7HWAYiZfk4dlX6sEeHDWEhWZFqS2GR5rfopoD5az1Bh+OOzaGD5QEb692xh0bsUczupb51v/ATSLXWKeYpztigYpYaeYpNghgS8I5l8nmi5eeLvqgR/MR88fvQXMujqaOrPFovMwnD2+w6OmtaOrEc0rm5oZRJqzQ44diUyBEjFxN3VJ9NcCe9pc25rjzrQBlg1UQkgKtbzQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=8h3RCDDjOcd80OhiXQOF9okLjuhqzoFntP3tIs8+as8=; b=gecuXKr/SKjqAec4dJIG1YOgPkv/3B1w8lW1jk9ahNKV07yPJ8By2Ifs0TAuswxpg5XMpuhGOjfkNf/kV+DIU9I4Kx6XuxsKplYGc4sHlS3TKjnRHyq0YzcQWT7hH9Ld62X29oImdUODUrcWvwgCfkPAuLLdK4G/SQfkBMpvZOndVSzsDY8uu6drl88V6FfnJGCBEZIYZj3rvAupDkOQ+rImtUu6CWsbVW2xMXK4o8r/q2+rFPNu6a5dxz5SzI8xIMvWGGB57qYkWZi4BOlqG4AS452sMJ1ECY1v3K5sISyqfagSJNdSHA8NepMquxPine4spwTKc92bhOnAWzIvQg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=uclouvain.be; dmarc=pass action=none header.from=uclouvain.be; dkim=pass header.d=uclouvain.be; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=uclouvain.be; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8h3RCDDjOcd80OhiXQOF9okLjuhqzoFntP3tIs8+as8=; b=Q2NLtFutjK2hGnibYkW5mPIap5Ug2YTbM4gd5M6K/kNoetZ+uXlbR3UzdxSYAbYZ6Vq7ufFeDkU6z0s4hZp1xir9k5/mu0aJ9OTh1naJf01AKMeUvrtKGjqOzOwFM9lFNzo7i+LDjcaEbdf6FmYNnS1tnYjALdtmE/GElhDwwiNLw0vJa2GK89TD2dml6KAAau7aiKrKi/X5sXly+YOdQcAlg7qvTPABQ1v6i7HP77+eNQzeZgbM/ctz+q7DE0xxyuHlpB6W+UQ5csO9rjKe/APOh1D55R56UXENDVAGLU+mYVJQ4CmaRFPlitwHyR0UCM+dxwmgWzJ2TSbOCpvTJg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=uclouvain.be; Received: from DB9PR03MB7689.eurprd03.prod.outlook.com (2603:10a6:10:2c2::11) by AM7PR03MB6401.eurprd03.prod.outlook.com (2603:10a6:20b:1c3::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6678.24; Mon, 14 Aug 2023 02:33:40 +0000 Received: from DB9PR03MB7689.eurprd03.prod.outlook.com ([fe80::8303:13bd:7736:34cf]) by DB9PR03MB7689.eurprd03.prod.outlook.com ([fe80::8303:13bd:7736:34cf%4]) with mapi id 15.20.6678.022; Mon, 14 Aug 2023 02:33:40 +0000 From: Francois Michel Cc: Francois Michel , Jamal Hadi Salim , Cong Wang , Jiri Pirko , Stephen Hemminger , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 2/3] [PATCH 2/3] netem: allow using a seeded PRNG for generating random losses Date: Mon, 14 Aug 2023 04:31:39 +0200 Message-ID: <20230814023147.1389074-3-francois.michel@uclouvain.be> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230814023147.1389074-1-francois.michel@uclouvain.be> References: <20230814023147.1389074-1-francois.michel@uclouvain.be> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MR1P264CA0034.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:2f::21) To DB9PR03MB7689.eurprd03.prod.outlook.com (2603:10a6:10:2c2::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DB9PR03MB7689:EE_|AM7PR03MB6401:EE_ X-MS-Office365-Filtering-Correlation-Id: 758c8409-bcfd-4d6a-db73-08db9c6edf17 X-MS-Exchange-AtpMessageProperties: SA X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: nrFTjdc65uCr+hWCtGHKoaylpt6VTXWkIXe7L8kMV4bFC5IVfYGjUQMm3JpW+4MoQEUF0vF3zc4Mh2hKAJeymWgULd9r/F7GHdy+4SWD+arL1VylSC8a32EbLS9H/PK6kovE4GQikAS0q2Utq/RjjjPkJHzAfkNEzG/PWseJR+J7klAUsPLKJXFD3asuCgjHJsP2xeBDjEXDHpyq65cuhAbNigIres2bOBk+wwlB9Wh74PzeW9LX7BWq9VMCXGOZ3GH0ZyPKfLbcRv9Pn7bLkk0K7reOETNBmoyhmv1T2fT/5hr9HOxaUl5EQMFy+dc8WBvlOScsyFsvU0tQ66Niyf28sVElVkNCUqXYJZNQEWFcNLSTML5FET50gqHVysYoFZJGrTke8SqFHPc6li0k8vEJ1Lyr0h9cme6BsrOfu8F7igE+fON7IzwtA52svuVEDYE6+udpaCNS64FQpbhEEbPNZVWVDLhgJsexXuvbs023HrR6dS/nTiPiJVs/QldMxi0PtATDFR3IkVktuokUJN+7r/mP5DlBmitbNeBo4ncfyTSbsxz+VuulrsUCJtKImnlUwmsFAJnaYCWph9T59TqEByST3pALv+PEMAjxM1Q= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB9PR03MB7689.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(136003)(346002)(39850400004)(396003)(366004)(376002)(109986019)(451199021)(186006)(1800799006)(38100700002)(52116002)(54906003)(6486002)(478600001)(7416002)(5660300002)(2906002)(36756003)(86362001)(44832011)(4326008)(66476007)(66556008)(66946007)(41300700001)(8936002)(316002)(786003)(8676002)(83380400001)(2616005)(6506007)(1076003)(6512007)(266003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?TUJpNXdjNTBTQ3BFRFB2c2NaYVE3eFA3VkY1V2RZMkhUc0VEcjJkVUlqdldV?= =?utf-8?B?VEhFVDRVNklrV2xER0hCcTF5azFaTENEZXZ0ODR0UnNIUU9jMlJBZG0yTkdD?= =?utf-8?B?eW9FNWkzQkc3NG5MZU9CQ3RvQXBIajJ5MkU1Rjg1cWl1bE5qb0VTK25UNGhR?= =?utf-8?B?dXJOWDQrQ3ZNQ3FXQVluYkFKR09aT1J6NGxIb1g5ZWtJeVQzNmtEd25mUEFo?= =?utf-8?B?TG4ydWYrRUgrZStIbnBxS2hCRUZ0dXQ2WkMySWYrUHBRa1d0VGE1UzlYQXNU?= =?utf-8?B?SFJRMXZTUFZtQjZWNGI4dWNXTktIZGE2dHlaODJra2h2NzVkZEluMXpnOUlW?= =?utf-8?B?aGowVElzS21kRE1NbEVJYTFXcEJ2SGxvb3V3RTRDYjIzVkU4Y0RHOFJqOWNs?= =?utf-8?B?SloyRnBZNDVTRzhidnIwL05rV3l5WXFGN1pFTEFWelA2WmsyRHBYOTVTOHNI?= =?utf-8?B?WjlOR3N4Z2hJcW4yZW5UM0FpTGZObjNyQWtCNjByMUMvYkJxaDM2dXQzNFJz?= =?utf-8?B?ZWh3M1hzanpESTVROHRPN1ZOWEo5dkxjbEdCMXlGRkFvYVJxLy85ckE0TDhW?= =?utf-8?B?YnVvaHlPWlE0RnpMaDA2ZkRNTnBlMlFFamJJak9Zb2F0bCszeHo0Z2pQb01l?= =?utf-8?B?bDVmSnJSWGZjNk54NXd1dS85R081US9yUUpCbm55ZWN4WkNobDRCU2sxKzZ6?= =?utf-8?B?aFNYQVlsRUZVVDUvWmNaeXBTNnk5bXNUL2ZKV0hLUE1GYjlSbEFwdDF4Q0k3?= =?utf-8?B?RFhXblBmendQaVNrbm5yQmdnZHNORVhETEFGSUY3NWJvTUljUVYxakZDcUFH?= =?utf-8?B?aXVPVy9Lcyt6YTExWGFQV3MwQWtiNTZ1VlU1Z0dJY0hCUCtpRDB4NWx0YVc4?= =?utf-8?B?R0pkRmgwdFJkNG9CM1JDLzF5V2F4YVZTOUtDdW5GekMzOEFYUGN6OU1UcmI2?= =?utf-8?B?eVdYY01JSmY3Q2dnN0hJaUYvMGcvWmo3K1pyeUdoUHprNmlITGdWejN1UnFS?= =?utf-8?B?MjN5WDkxREUvNUVJdk1veThld0pDVUR6WVBLQW50RDVYS0VIUDgrYWtRS1Bk?= =?utf-8?B?MHN2YWtvdFpwL2lwSGRHTHN4bmlwYkJiSitrS1YrUGs3MFBGdU4rYjFiSXZq?= =?utf-8?B?ejNCbDlFYlN2dmZ0dk16L3dLTXVBMEpVU0ZQbEtCSTFYMGxtcUQ3TlVKNWMv?= =?utf-8?B?dUVNMFkrRWUzemFOS1hnQllJbkhCeXdONDY5S1lXUFVnS1NpUjhiYTJqaGlL?= =?utf-8?B?aUI0L3cyaWVNWFRHcUFXTlpWT2I4WElUOTZEMVYyUjVYbmZPUndWaFV5VWo3?= =?utf-8?B?MVZhcFJJcVdSazVnV3IzTjRtZ2Mxd045K3NZSUQ4eFE5cFFKZHNSTzIrckh6?= =?utf-8?B?ZSs5dDM5OTdkUEpuaGcveUF6KzVUWlFMeVZQMCtrRTJhTGJpQXBxb0JVTE9h?= =?utf-8?B?QmRFRkh3ODY1KzBvVDBmU0RSVUdpclBLWWcvTVFzM3ZEWjcvMDBOWWcvTnQr?= =?utf-8?B?QXhMSmR4OXhha1ZsM3o1UW9Xbm9TMGlWZ3BzVURhaUtrSGt4QUtVcnpSN1ZG?= =?utf-8?B?TGV1dHQvL0x0dEE4dlhOd1N1MUxWUTQ2MXUybTUyRVl5WDgyWlI4R0crU2lN?= =?utf-8?B?Mkk5OFV6N2dFMG5wam5uNWNHdjZIQmFObXJaNERHaVIrTUhkMjlybUxWTzRM?= =?utf-8?B?c3F4Z3lpeS9ZWGpNVFZzUWh4SXRRdU9QRDErMkVLUEZNYkJ4YXgvcFVTeFd1?= =?utf-8?B?VVc5bW00SWQ5R0IrbiszU2JXbjlpS1Uyb2FKVVYreHBhRWxXeldmZ2JJNlRT?= =?utf-8?B?OUVrVy8vbGxGcHFyMlRLVDUwOUp1aExlSHRQTWdRR0RaQjAvTHE5YlducFNm?= =?utf-8?B?clFmOUhmcGphQU4ySFVJS3FOdXQ1SUNMR0pUSElmNXB4V3NHRE05cUFGSSt4?= =?utf-8?B?dW9pYkt4dSsreGZaZ0lGVEJoWnprRVdEbC9vVk5zYWJCcE9yRnVkak5ZQUxz?= =?utf-8?B?MytVVFc0MDRoSStRVG5vdlJJWmx5VnRxL3RoWnk1Y1R4cDZ2U0tKL0hjUFJ0?= =?utf-8?B?T1hBM2ZESjlIQ2FZZUM1OUlxODU1ZTQ0S0ZaUjJTUnNOQkY2eEF3UVJpNlNE?= =?utf-8?B?ZnFpanAvZUtzcW13OWZiMDc4WlFxYUE5Mk9ubm1LelRnZ2c0cEZjVE9tT1B6?= =?utf-8?Q?YVl1Gxqv5U8lo9rqeSWdmvaJssQqNrAcfCIDyfUJw3Co?= X-OriginatorOrg: uclouvain.be X-MS-Exchange-CrossTenant-Network-Message-Id: 758c8409-bcfd-4d6a-db73-08db9c6edf17 X-MS-Exchange-CrossTenant-AuthSource: DB9PR03MB7689.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Aug 2023 02:33:40.7688 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7ab090d4-fa2e-4ecf-bc7c-4127b4d582ec X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: RjA/3vBAT1Ry1PKTBllTH0adz/AK4oh1/I/JjM66gEhQCYpPWezcZjQndUzo0WRbO7sruaxXTSxMpv0usdeZSC7bfkV/1EtmA3iTqp8jJko= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR03MB6401 To: unlisted-recipients:; (no To-header on input) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Fran=C3=A7ois Michel Add the netem_get_random_u32 function to sch_netem.c and use it to generate the random loss events of netem. If no seed was specified by the application through setting TCA_NETEM_PRNG_SEED, the default behaviour is the same as before, i.e. it relies on the unseeded get_random_u32() function. If a seed was provided, it relies on the seeded prng attribute of struct netem_sched_data. Signed-off-by: Fran=C3=A7ois Michel --- net/sched/sch_netem.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/net/sched/sch_netem.c b/net/sched/sch_netem.c index d73596d0e912..1190782ef79d 100644 --- a/net/sched/sch_netem.c +++ b/net/sched/sch_netem.c @@ -154,6 +154,19 @@ struct netem_sched_data { struct disttable *slot_dist; }; =20 +/* netem_get_random_u32 - polls a new random 32-bits integer from + * the prng. + * Uses a deterministic seeded prng if p->deterministic_rng is true. + * Uses get_random_u32() underneath if p is NULL or if p->deterministic_rng + * is false. + */ +static u32 netem_get_random_u32(struct prng *p) +{ + if (p && p->deterministic_rng) + return prandom_u32_state(&p->prng_state); + return get_random_u32(); +} + /* Time stamp put into socket buffer control block * Only valid when skbs are in our internal t(ime)fifo queue. * @@ -207,7 +220,7 @@ static u32 get_crandom(struct crndstate *state) static bool loss_4state(struct netem_sched_data *q) { struct clgstate *clg =3D &q->clg; - u32 rnd =3D get_random_u32(); + u32 rnd =3D netem_get_random_u32(&q->prng); =20 /* * Makes a comparison between rnd and the transition @@ -272,18 +285,19 @@ static bool loss_4state(struct netem_sched_data *q) static bool loss_gilb_ell(struct netem_sched_data *q) { struct clgstate *clg =3D &q->clg; + struct prng *p =3D &q->prng; =20 switch (clg->state) { case GOOD_STATE: - if (get_random_u32() < clg->a1) + if (netem_get_random_u32(p) < clg->a1) clg->state =3D BAD_STATE; - if (get_random_u32() < clg->a4) + if (netem_get_random_u32(p) < clg->a4) return true; break; case BAD_STATE: - if (get_random_u32() < clg->a2) + if (netem_get_random_u32(p) < clg->a2) clg->state =3D GOOD_STATE; - if (get_random_u32() > clg->a3) + if (netem_get_random_u32(p) > clg->a3) return true; } =20 --=20 2.41.0 From nobody Thu Dec 18 09:43:01 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8E255C41513 for ; Mon, 14 Aug 2023 02:34:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232537AbjHNCeK (ORCPT ); Sun, 13 Aug 2023 22:34:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46232 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232471AbjHNCdq (ORCPT ); Sun, 13 Aug 2023 22:33:46 -0400 Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02on2137.outbound.protection.outlook.com [40.107.249.137]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 88205E6A; Sun, 13 Aug 2023 19:33:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Q3bUURx3Q7oMX8U4OA7Rq9C0MjRyNDpEWHQp1Eo9QwcgjD4oonEpUn41SiC4GEPY3yBTJ66IwpEp24CH92flEJsLe5JyvNmEZPNzM+xyNFqPitcmnLzY5tr+31vm2YtwxoNAOALz3h1jzSrkWAiSeTc7K1puUkzn/DYsbmICTp4lHjS05MO1O3xmIqiPKsmH6XlsgPSkS9FOAa808QmJw/T8HGMMrdSEE5Vz+IqQCMJXohnoLJ1n6d1ARDfgNpwrafGxVVJB9bbvEGVxLrOO+cDS43xf30b3+KVrjtla3nsgLaLOFQlk2Wsc+uhm8lifH2f1yvc2xUKk7Zq8UVBf7Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=dXQ7z+YagN8Wp8psyy50/HCrblIP3jfo1TlJ7CbWP0w=; b=PnSl5065lzEYdrhpS7WEiIrQuS3zGnVt2YW7cgIg9IRfS7XyICUnJmMsYUdL4BLcDHRbw/si4BKqfGTTkNTMBVyJfulJMrOSDzyROIl4u65+57d3ZaGTi2B2+PANYvy/8p+LHMq2VTxLvC1M/auk/fsIg0dN+jHtNFvi5PDndcyXT5XNtDB9p0Ri846WEslUZ1/GsF1pul5IMPY0qP0H3qqp3gIOCwUpq1xuSMZixoWs2SIyTKod4tNTgR48GVoZJdBPAJRl3moHXRA9/jDK7Gwrt1fyNRERsgU52lvlI8pSxQPGOuf2B3CX/HCbG+JgEe6neWU1A3dnDM+SUvViDw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=uclouvain.be; dmarc=pass action=none header.from=uclouvain.be; dkim=pass header.d=uclouvain.be; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=uclouvain.be; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dXQ7z+YagN8Wp8psyy50/HCrblIP3jfo1TlJ7CbWP0w=; b=kgCcvIRDx1swvz0BkFOw2jitb14T4PnxUi8XvxVG/uHvE+YBJcLTyuPaVigUm2LV0gVYoDea5rgWIQwnOoI8iG0qA8QJlmuiudYhiijzVhWAluv4TawuEOXOrxYOEvNFNO9q15TYfDcJHsSbtDVzXMtTLuqujtJ7D96aZr+aj1O1TumBKCDlmy8S/8rdcYl8NktQV4rgUw+HwAcCXaZ8knhOAzzfAzKq8C5jwVOHq+ZHe2FRGpaxQ84l21B/znwn9cFQ6Omekg+dZVVg14GPOEgXql9XlK1tgi9Wgj9UEjg2ut3Q2+Uiivl/yHHtNMNueSs81hdMV6OxaZbWI/+mvQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=uclouvain.be; Received: from DB9PR03MB7689.eurprd03.prod.outlook.com (2603:10a6:10:2c2::11) by AM7PR03MB6401.eurprd03.prod.outlook.com (2603:10a6:20b:1c3::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6678.24; Mon, 14 Aug 2023 02:33:42 +0000 Received: from DB9PR03MB7689.eurprd03.prod.outlook.com ([fe80::8303:13bd:7736:34cf]) by DB9PR03MB7689.eurprd03.prod.outlook.com ([fe80::8303:13bd:7736:34cf%4]) with mapi id 15.20.6678.022; Mon, 14 Aug 2023 02:33:42 +0000 From: Francois Michel Cc: Francois Michel , Jamal Hadi Salim , Cong Wang , Jiri Pirko , Stephen Hemminger , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 3/3] [PATCH 3/3] netem: allow using seeded PRNG for correlated loss events Date: Mon, 14 Aug 2023 04:31:40 +0200 Message-ID: <20230814023147.1389074-4-francois.michel@uclouvain.be> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230814023147.1389074-1-francois.michel@uclouvain.be> References: <20230814023147.1389074-1-francois.michel@uclouvain.be> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MR1P264CA0034.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:2f::21) To DB9PR03MB7689.eurprd03.prod.outlook.com (2603:10a6:10:2c2::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DB9PR03MB7689:EE_|AM7PR03MB6401:EE_ X-MS-Office365-Filtering-Correlation-Id: de3925cf-077f-4b37-3e76-08db9c6edfe7 X-MS-Exchange-AtpMessageProperties: SA X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4wwy74dh7FerVwqWqXAYQFX8HQlXEP+yB2bfHkNFJWaYo7QTyMGXCcUUSY8YsQ1ZCISBVHD4lfhMZ1XqnoNAGya74KLmxfePwOvtSoubrY9xJgb9M48ObOwYR3gLEDTXSkXLGjLkIxgNB0cbkF8dcaWyP1O+S9Y3Nh91lJ1A0dSl7XfnT0PfDM28EN6GHMT421+NYWbzzm5wNJGnHP0Ae68f3/BfU5WAaDWNgVfO3kWwQVT5BEYNbvUdsP3y6gleZ2wL1WgJwrqbyjK4mhCC9GCplSOgQ5PpQ+6qIadjMhK0fOrlgNCHZoutlLxNnAAeGaYgTvUhw7YRqxuF65kRndBt3tHwGQjoTn05o5RlmkdrBgkgerajDGjGSimAMdxQNXEogT+Yz1GuKWwPBVOphVmgbIqoF8HfNHnGuTUqoJclBXwBcpKRl39yCB117pXiPd6xaF80wg7vNyr/aidDK3FwMAOVZzl3ALtgDDh2r0+Xpb3y9vrL2rDTSlq62d/cnFSacqR49gbExxet/JcDPvQIQ+N1oDITyQh4vq/PLi6i9q2v+LvRIyXGoFiLyxWUZaMKM8iBTPiqZ9FrzL9BFFeZTxd6tiX1wGMZiXACRDE= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB9PR03MB7689.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(136003)(346002)(39850400004)(396003)(366004)(376002)(109986019)(451199021)(186006)(1800799006)(38100700002)(52116002)(54906003)(6486002)(478600001)(7416002)(5660300002)(2906002)(36756003)(86362001)(44832011)(4326008)(66476007)(66556008)(66946007)(41300700001)(8936002)(316002)(786003)(8676002)(83380400001)(2616005)(6506007)(1076003)(6512007)(266003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SGhWeFV2UXBqU0xYcktZL21NUkVydFpiYkFYejVyalFrblJWc2lVSGVMM0h4?= =?utf-8?B?eHgyNzdkRTlHZ0NPak92ZUJQMll6RmYwdytrUzNIWHBkYklDME5xVm9VYzQ3?= =?utf-8?B?ckxLVEJsSlJFWGlnU2dDMlplL2J5ZkFia3IvaStIbVVWUTR3enk2eGNwM1ZM?= =?utf-8?B?dHpCYnAxWStPV0FCUTN5NG45Ylc2YzdGQUxtS1NkTS9UcVVzNktIMGhUVXlC?= =?utf-8?B?NzNqVnVHWDdYbm1vTE1tbWo3YjRMOGpPSEVEOVNiZ25WV3NnOWt3T2NOTnBX?= =?utf-8?B?cTM5K0JQaXNBWHBWUmJ0OHJZa1cwTXdwSlNINTc5WVhhejcyRHBpd2pyRDZw?= =?utf-8?B?cjkxR3lDcUNKL2t1NnVsMFdRazc3K0FJUkgraERzRmtUTlNHWllFSG1JdVpx?= =?utf-8?B?Z0xHL0hIbmRCM2hvcG45YS9SY1BvYnU0N2ZQWVRreldWTmZ3VkVaV2ZIbmR4?= =?utf-8?B?eURDUmJvcnp2Vk9EMkxweWI3WlRZN1dTOE9xaE9rbjFyb2NyRjFCRnQxa3Vp?= =?utf-8?B?YWwvaXhGYUp5LzVWSUVOa0ZyWUl0bjNkRFp1VkFEa3daTTVuZnJWT2FzWW9j?= =?utf-8?B?ekFubWdNN2NHUW5FU1hkK1pkS3pkL0ZValMzWDR3a1grdVBxcHI1YjRBcWlx?= =?utf-8?B?bWE3UkY5Q2dGcFVDTThKdmtrM0w1c0ptN01BYVEvUGdLTjN0YUJhOWVOYWNK?= =?utf-8?B?Sk1hYTBnK2ZveXdaWkl1ZFZRN0hFbjB2V1lDWDhUaWQ4N2ZWNVJZQVRSOCt0?= =?utf-8?B?RlhGdWZHT1hTSmNONllNYm1ucjZ6VWpDVjJFK3NQdE92aUlTQjhVMHFqeEcx?= =?utf-8?B?Nk5CTVkrQ0c5bFQ5K2FKMlFxYnJLQzB5RDdKbk1JRTRidGkwVitQZmxHcS9y?= =?utf-8?B?aDFLa2FSOFJUZlR2NlhQdDU4ejNtYllPR29scVQ5OTdpS2MvcVF4YWgxejQz?= =?utf-8?B?WUQzWWdJTXhBRFJKZDB4Nzg0NGN1N1p4dkU3SU5ROTVJOHJ0YWhVUEJQTm1m?= =?utf-8?B?UUdoc2VKaGF3K3BVMUJCUjQvcVRlYjFzaVNSR1pUTEdmL2dLSU54aCs4VWFi?= =?utf-8?B?Z0J0Q1N4c2pEdDgxbHBvZ05QZkJlcmsvYzd6b2JOM2tKd3YwMGJBbXpVaXdr?= =?utf-8?B?MDZacko0b08rcTNPcE1xTkh3eUdGRTNCem50U3pwY2JUaXZCR2lwaU1Ua3hH?= =?utf-8?B?WkZvbGRQOVB1bXV3NnZFdEhyZTVmTW9rVGIwUXBpVi9GRnZSOStEL0dsR3VK?= =?utf-8?B?ME1tL1VtTSttb3drcERSRC9PdzAreEJUZzFTdVJVRG9EMWxnYm11ZnVLdHFn?= =?utf-8?B?R2htbmxsQ0V6M1JOWFFwVzhZQXBIamFIMXBVa3M1VnVlaUZvRCtGdWU5dTkr?= =?utf-8?B?WWd6bklmWm5uMlBKN1NKOVplRFI2OWZaUFhuNCszQ3MwR2VUMjNSWEQ1VW4x?= =?utf-8?B?Njc1Zzh5NjVwVWVEUWdMeXRoWmdTYVZoWFlsRmtoem5LdHpMU3A5YkN4UmEw?= =?utf-8?B?L1RnYnJDTWl4QXB1bzlSaXcycEVyOHFxZ3R4WXN4QzZKRStUNmZ6dkNiUUQ5?= =?utf-8?B?SmszbjlmNlljcFFZSWlYZEpvdEhOa3VybE9aRWhIUFJlWThiZnpzaVY4MXFl?= =?utf-8?B?MVprZlpDQkNDLzZNVldCYXRSdFJmODVGTDdqTkRWT0Vvb2s0MXNMMWFaazRM?= =?utf-8?B?T2ttL3ZJT1RTZU9kU1kxQmFOS1NqSkJidDR0QXhEcUxDdjVuemxHb0JoNDlx?= =?utf-8?B?eWhNVjhoUFNYWnQ1Wk84ckc0bXcyRlRNQUF4cUgrbjNKMk5NK1VoZWlzVldw?= =?utf-8?B?SnphcktuVjFvSUFXZjRiWllDS0ZKUTRkcW8xaDFETFpVeFpRV1RlRUFTUXFi?= =?utf-8?B?emhVNzRERmwvQU5lOUZxVjNSQWx0QnVyNVBqeGJmcFRLcG5VWCtTV3J0b21z?= =?utf-8?B?dm9uY1dIaS85OVhuUVJMN2VpVlhNZ2t0S25LTkd3S1NSTEpLRFhXNnVZWGMw?= =?utf-8?B?cUxncjBFUkp1bDlNL0FpRjNweTlRWERPNENIVGN2YXp2QTRlK28rdWlUSG0r?= =?utf-8?B?NTZYcjFTWlVyOGVZMVU0NitobEJ2Q0pabDdsWkJESUh5S3Y4cVE4emJyTWY4?= =?utf-8?B?eGUwTWVDaGh1ZkwyeEduVnMyZ3puaWp5d1k2VnYya0JMZmVhTHh2TmhDK2pa?= =?utf-8?Q?IgPxXIrxNTsjw4hZ/YTxUogM/MXgu7VxhoPi1Q454uWX?= X-OriginatorOrg: uclouvain.be X-MS-Exchange-CrossTenant-Network-Message-Id: de3925cf-077f-4b37-3e76-08db9c6edfe7 X-MS-Exchange-CrossTenant-AuthSource: DB9PR03MB7689.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Aug 2023 02:33:42.1508 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7ab090d4-fa2e-4ecf-bc7c-4127b4d582ec X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: VorOM1jOtVKTowHUv0YtjE5vDi5yFDxs4VZbqbkZJDwPAOxIh8H8/2cIFRyJ563FhoT2R2q9/5GrbxbKTiFi8qr3KZcqGGlYUH579fUbk/E= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR03MB6401 To: unlisted-recipients:; (no To-header on input) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Fran=C3=A7ois Michel Use the netem_get_random_u32() function to generate correlated loss events of netem. Signed-off-by: Fran=C3=A7ois Michel --- net/sched/sch_netem.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/net/sched/sch_netem.c b/net/sched/sch_netem.c index 1190782ef79d..da333c3d24ac 100644 --- a/net/sched/sch_netem.c +++ b/net/sched/sch_netem.c @@ -198,15 +198,15 @@ static void init_crandom(struct crndstate *state, uns= igned long rho) * Next number depends on last value. * rho is scaled to avoid floating point. */ -static u32 get_crandom(struct crndstate *state) +static u32 get_crandom(struct crndstate *state, struct prng *p) { u64 value, rho; unsigned long answer; =20 if (!state || state->rho =3D=3D 0) /* no correlation */ - return get_random_u32(); + return netem_get_random_u32(p); =20 - value =3D get_random_u32(); + value =3D netem_get_random_u32(p); rho =3D (u64)state->rho + 1; answer =3D (value * ((1ull<<32) - rho) + state->last * rho) >> 32; state->last =3D answer; @@ -309,7 +309,7 @@ static bool loss_event(struct netem_sched_data *q) switch (q->loss_model) { case CLG_RANDOM: /* Random packet drop 0 =3D> none, ~0 =3D> all */ - return q->loss && q->loss >=3D get_crandom(&q->loss_cor); + return q->loss && q->loss >=3D get_crandom(&q->loss_cor, &q->prng); =20 case CLG_4_STATES: /* 4state loss model algorithm (used also for GI model) @@ -338,6 +338,7 @@ static bool loss_event(struct netem_sched_data *q) */ static s64 tabledist(s64 mu, s32 sigma, struct crndstate *state, + struct prng *prng, const struct disttable *dist) { s64 x; @@ -347,7 +348,7 @@ static s64 tabledist(s64 mu, s32 sigma, if (sigma =3D=3D 0) return mu; =20 - rnd =3D get_crandom(state); + rnd =3D get_crandom(state, prng); =20 /* default uniform distribution */ if (dist =3D=3D NULL) @@ -469,7 +470,7 @@ static int netem_enqueue(struct sk_buff *skb, struct Qd= isc *sch, skb->prev =3D NULL; =20 /* Random duplication */ - if (q->duplicate && q->duplicate >=3D get_crandom(&q->dup_cor)) + if (q->duplicate && q->duplicate >=3D get_crandom(&q->dup_cor, &q->prng)) ++count; =20 /* Drop packet? */ @@ -512,7 +513,7 @@ static int netem_enqueue(struct sk_buff *skb, struct Qd= isc *sch, * If packet is going to be hardware checksummed, then * do it now in software before we mangle it. */ - if (q->corrupt && q->corrupt >=3D get_crandom(&q->corrupt_cor)) { + if (q->corrupt && q->corrupt >=3D get_crandom(&q->corrupt_cor, &q->prng))= { if (skb_is_gso(skb)) { skb =3D netem_segment(skb, sch, to_free); if (!skb) @@ -550,12 +551,12 @@ static int netem_enqueue(struct sk_buff *skb, struct = Qdisc *sch, cb =3D netem_skb_cb(skb); if (q->gap =3D=3D 0 || /* not doing reordering */ q->counter < q->gap - 1 || /* inside last reordering gap */ - q->reorder < get_crandom(&q->reorder_cor)) { + q->reorder < get_crandom(&q->reorder_cor, &q->prng)) { u64 now; s64 delay; =20 delay =3D tabledist(q->latency, q->jitter, - &q->delay_cor, q->delay_dist); + &q->delay_cor, &q->prng, q->delay_dist); =20 now =3D ktime_get_ns(); =20 @@ -659,7 +660,7 @@ static void get_slot_next(struct netem_sched_data *q, u= 64 now) else next_delay =3D tabledist(q->slot_config.dist_delay, (s32)(q->slot_config.dist_jitter), - NULL, q->slot_dist); + NULL, &q->prng, q->slot_dist); =20 q->slot.slot_next =3D now + next_delay; q->slot.packets_left =3D q->slot_config.max_packets; --=20 2.41.0