Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2215762/?format=api
{ "id": 2215762, "url": "http://patchwork.ozlabs.org/api/patches/2215762/?format=api", "web_url": "http://patchwork.ozlabs.org/project/openvswitch/patch/20260325101001.1642724-1-elibr@nvidia.com/", "project": { "id": 47, "url": "http://patchwork.ozlabs.org/api/projects/47/?format=api", "name": "Open vSwitch", "link_name": "openvswitch", "list_id": "ovs-dev.openvswitch.org", "list_email": "ovs-dev@openvswitch.org", "web_url": "http://openvswitch.org/", "scm_url": "git@github.com:openvswitch/ovs.git", "webscm_url": "https://github.com/openvswitch/ovs", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260325101001.1642724-1-elibr@nvidia.com>", "list_archive_url": null, "date": "2026-03-25T10:10:01", "name": "[ovs-dev,v1,1/1] dpif-netdev: Fix mega flow ufid collisions for different wild cards.", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "d783a044b7c4a6ac837b79e858ba7c0dc627321b", "submitter": { "id": 79848, "url": "http://patchwork.ozlabs.org/api/people/79848/?format=api", "name": "Eli Britstein", "email": "elibr@nvidia.com" }, "delegate": { "id": 57917, "url": "http://patchwork.ozlabs.org/api/users/57917/?format=api", "username": "apconole", "first_name": "aaron", "last_name": "conole", "email": "aconole@redhat.com" }, "mbox": "http://patchwork.ozlabs.org/project/openvswitch/patch/20260325101001.1642724-1-elibr@nvidia.com/mbox/", "series": [ { "id": 497408, "url": "http://patchwork.ozlabs.org/api/series/497408/?format=api", "web_url": "http://patchwork.ozlabs.org/project/openvswitch/list/?series=497408", "date": "2026-03-25T10:10:01", "name": "[ovs-dev,v1,1/1] dpif-netdev: Fix mega flow ufid collisions for different wild cards.", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/497408/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2215762/comments/", "check": "success", "checks": "http://patchwork.ozlabs.org/api/patches/2215762/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<ovs-dev-bounces@openvswitch.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "dev@openvswitch.org" ], "Delivered-To": [ "patchwork-incoming@legolas.ozlabs.org", "ovs-dev@lists.linuxfoundation.org" ], "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256\n header.s=selector2 header.b=DAFsZaXY;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org\n (client-ip=2605:bc80:3010::137; helo=smtp4.osuosl.org;\n envelope-from=ovs-dev-bounces@openvswitch.org; receiver=patchwork.ozlabs.org)", "smtp4.osuosl.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key,\n unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256\n header.s=selector2 header.b=DAFsZaXY", "smtp4.osuosl.org;\n dmarc=pass (p=reject dis=none) header.from=nvidia.com" ], "Received": [ "from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fgjNR5Yc3z1xy3\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 25 Mar 2026 21:11:03 +1100 (AEDT)", "from localhost (localhost [127.0.0.1])\n\tby smtp4.osuosl.org (Postfix) with ESMTP id AA4E641097;\n\tWed, 25 Mar 2026 10:11:01 +0000 (UTC)", "from smtp4.osuosl.org ([127.0.0.1])\n by localhost (smtp4.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id SK4mNSj38cCG; Wed, 25 Mar 2026 10:10:59 +0000 (UTC)", "from lists.linuxfoundation.org (lf-lists.osuosl.org\n [IPv6:2605:bc80:3010:104::8cd3:938])\n\tby smtp4.osuosl.org (Postfix) with ESMTPS id C05D4407E1;\n\tWed, 25 Mar 2026 10:10:59 +0000 (UTC)", "from lf-lists.osuosl.org (localhost [127.0.0.1])\n\tby lists.linuxfoundation.org (Postfix) with ESMTP id 99972C04E8;\n\tWed, 25 Mar 2026 10:10:59 +0000 (UTC)", "from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137])\n by lists.linuxfoundation.org (Postfix) with ESMTP id DDF03C04E7\n for <dev@openvswitch.org>; Wed, 25 Mar 2026 10:10:58 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n by smtp4.osuosl.org (Postfix) with ESMTP id BEA78407E1\n for <dev@openvswitch.org>; Wed, 25 Mar 2026 10:10:58 +0000 (UTC)", "from smtp4.osuosl.org ([127.0.0.1])\n by localhost (smtp4.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id hR9mZO9Md4Bj for <dev@openvswitch.org>;\n Wed, 25 Mar 2026 10:10:58 +0000 (UTC)", "from PH0PR06CU001.outbound.protection.outlook.com\n (mail-westus3azlp170110003.outbound.protection.outlook.com\n [IPv6:2a01:111:f403:c107::3])\n by smtp4.osuosl.org (Postfix) with ESMTPS id D165840478\n for <dev@openvswitch.org>; Wed, 25 Mar 2026 10:10:57 +0000 (UTC)", "from BL0PR0102CA0017.prod.exchangelabs.com (2603:10b6:207:18::30) by\n PH7PR12MB6761.namprd12.prod.outlook.com (2603:10b6:510:1ab::22) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.20; Wed, 25 Mar\n 2026 10:10:50 +0000", "from BL6PEPF0001AB72.namprd02.prod.outlook.com\n (2603:10b6:207:18:cafe::f9) by BL0PR0102CA0017.outlook.office365.com\n (2603:10b6:207:18::30) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9723.31 via Frontend Transport; Wed,\n 25 Mar 2026 10:10:50 +0000", "from mail.nvidia.com (216.228.117.160) by\n BL6PEPF0001AB72.mail.protection.outlook.com (10.167.242.165) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.9745.21 via Frontend Transport; Wed, 25 Mar 2026 10:10:47 +0000", "from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com\n (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 25 Mar\n 2026 03:10:31 -0700", "from nvidia.com (10.126.231.35) by rnnvmail201.nvidia.com\n (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 25 Mar\n 2026 03:10:29 -0700" ], "X-Virus-Scanned": [ "amavis at osuosl.org", "amavis at osuosl.org" ], "X-Comment": "SPF check N/A for local connections -\n client-ip=2605:bc80:3010:104::8cd3:938; helo=lists.linuxfoundation.org;\n envelope-from=ovs-dev-bounces@openvswitch.org; receiver=<UNKNOWN> ", "DKIM-Filter": [ "OpenDKIM Filter v2.11.0 smtp4.osuosl.org C05D4407E1", "OpenDKIM Filter v2.11.0 smtp4.osuosl.org D165840478" ], "Received-SPF": [ "Pass (mailfrom) identity=mailfrom;\n client-ip=2a01:111:f403:c107::3;\n helo=ph0pr06cu001.outbound.protection.outlook.com;\n envelope-from=elibr@nvidia.com; receiver=<UNKNOWN>", "Pass (protection.outlook.com: domain of nvidia.com designates\n 216.228.117.160 as permitted sender) receiver=protection.outlook.com;\n client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C" ], "DMARC-Filter": "OpenDMARC Filter v1.4.2 smtp4.osuosl.org D165840478", "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=iL0RUn5bicykYVwR7cdCIq14aB+sOgNLTMsbMONdgP5wgHPfYpJPori4JclvRro6njeeTu+o94+Bl2mBq9PrZqM/6xAwQSdOn0UkSxTi/ALV+GygchWWI5DpAr/0ST9ri3V9N6x7/SPvrXoNfrqCCvvqclPTPzE/ytJwZKpe34jlIbD72nu8sYumZO0GTLMTxzRRRBBKH+8jgT2Vnuy4PjrJcF+KNu8T3WCfLMc1ggVows9uhW29hriSnCHtr4340NEPmLUm0msSudeNCzsATb9rASruRcfddHvsHMW9AP/gTE6AmMbRh6BBr6TJkj6tuamX/gwlduzoEumkTDlRQg==", "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n 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;\n bh=BhR7hgk8VTfXqwEgaGx1AKQl+GnFGoLQbtGBG41vfmk=;\n b=TxtuFI4gp57XQCyvZDjC11W14wXagQMcr3LDZBwskcDlyLp1gO/VQityGODfwHuJOWU0Xadgd3VzrwGtzXbo+vWHxXGefAJKCwxsORK6u6Ln2zQ8lYanOL36itXTu3pHa4q0YRgeMnd4Sid8YekySCFy4TOcm8+lDIZuNNXHoRMHcIJzMQNklipsw7IfsEDw0Pwwdfgg1iUyHCxozsjSFGrV7OEuVA1l9O6Ny9ZSggDY6TutJRdFv4zXqgannvs7obbzCTdLHjk1mp1u+AU+FUFNNIybxp00IryDIPAjBTThaheIFk0zHw1EFgkYQnbzjgf1I1IULY9u+H+hXXH/wQ==", "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 216.228.117.160) smtp.rcpttodomain=openvswitch.org smtp.mailfrom=nvidia.com;\n dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com;\n dkim=none (message not signed); arc=none (0)", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;\n s=selector2;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=BhR7hgk8VTfXqwEgaGx1AKQl+GnFGoLQbtGBG41vfmk=;\n b=DAFsZaXYau6piRajs2VgVG1SLUcs0HERTtJKIqfHX/KYD0N01I2Vro8x0HaqusWQ0he1bp7f014X0dbSCmyHaeEHbxBI58Na2OPxIe81fgXHUSRetnFfZea1WlsKYjq6IASNVZC/s3PIYYCysoF0BOE9hNJorjYoCCe3z9C/aaV/TANAdj1B0/HqRIYhntlagJqkI8SawzQ0EqtxyydElxw9E01uZZz1NY3x6/au5gI4aFuGyb2Sv/HwBdnkVelbe4H6OOg93M3lop1ZdmBTN9Ksgoj8QatYsSL856piXEiZ2Fpy/7nzJVr8OhmvEOZsCDsME3LesRFME03z4KO+4g==", "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 216.228.117.160)\n smtp.mailfrom=nvidia.com;\n dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=nvidia.com;", "To": "<dev@openvswitch.org>", "Date": "Wed, 25 Mar 2026 12:10:01 +0200", "Message-ID": "<20260325101001.1642724-1-elibr@nvidia.com>", "X-Mailer": "git-send-email 2.34.1", "MIME-Version": "1.0", "X-Originating-IP": "[10.126.231.35]", "X-ClientProxiedBy": "rnnvmail201.nvidia.com (10.129.68.8) To\n rnnvmail201.nvidia.com (10.129.68.8)", "X-EOPAttributedMessage": "0", "X-MS-PublicTrafficType": "Email", "X-MS-TrafficTypeDiagnostic": "BL6PEPF0001AB72:EE_|PH7PR12MB6761:EE_", "X-MS-Office365-Filtering-Correlation-Id": "f79dd710-8fe6-43d2-9218-08de8a56c92a", "X-MS-Exchange-SenderADCheck": "1", "X-MS-Exchange-AntiSpam-Relay": "0", "X-Microsoft-Antispam": "BCL:0;\n ARA:13230040|1800799024|82310400026|376014|36860700016|56012099003|18002099003;", "X-Microsoft-Antispam-Message-Info": "\n WO5UwFGSD6rovODYUhorYuz/F5Jk4eUWynqy0WOZc+kr7jDhZKvuS/ja9wyrFl+g4ggG48fkug/2TzH6uzy18A61Hau5X/vAyu2ECHHFFyWnkUGM7LqVE2h4H7P6uRL/XZs1qWf36HNvnlBQH/z3AsWhDLkjH+7i1ofRi8porma0GSxEkc7QG1E1m+vrCKgt+Gi8zsjlpzmBAg9DFR4vTQ7DK8U3BRX4/ZaZoYcjH93S0AVthjOW7ZRH8mxm57bGQXEpf8GEGmlP0AFPbZ6qjqQZD4wpA3IlCRsgCUW3eakyu3q+2CjeqxzGBgu+HWQi0IMzADVdj7hQYC70PioCURaK2jiCYJYklN7W4TTcLknHRmsWegFtSm0LoOcukHVAmRl4HGFZXfgJOZCtsgrBkKnRG26nvKUn1orDf/YEgIm9zGrsz0kDpvZFxIi265ky4bG9Egfj/QbmiXdZay3PuJfFxHf09bWsCiJBdwODFaiHUsd3zE36fgvOM106w7bPdVyJ1LJ6eiMVSmk0nD8tHuV2SBDou7HHhrdhsSZ7F/gHi6iZsGzuq5X3wXYxaAWOzJTMzvNABIavHGWDyWiGdIsxLhMNK5lujjWXWtzA9o0nJPjCxdjzIv3tlVAqcE3HzU71VV/1MP6gzzQqSEWO8Jf++Dm98iblu1cK+uhI0OaAOumhVv8z1RZJxxLVO31ecWWoYqrhdFhbjMHTDQuT1HenzXu6IRip9hXL++ZROFmBeHG3zs+Yk4VtaoHmRsYNyH8mtPpB+HjIF9FL/vaAeQ==", "X-Forefront-Antispam-Report": "CIP:216.228.117.160; CTRY:US; LANG:en; SCL:1;\n SRV:;\n IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge1.nvidia.com; CAT:NONE;\n SFS:(13230040)(1800799024)(82310400026)(376014)(36860700016)(56012099003)(18002099003);\n DIR:OUT; SFP:1101;", "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1", "X-MS-Exchange-AntiSpam-MessageData-0": "\n UqgNqwADoRaKIEI0xyKg15S72xb5LT+pNxhaGTqjo+gJOFgjGV6UdH4sOWcmKvJWciwge+SONq2xzJfs62Ianbe4fTOr79LPVapERMeIAUnHGKlJJaDHeIQCacK6dMXuYwRdS/A9/aqyQuYN+auV2FIzanulL37NZs1Q3uj0uEsLDXPVDrVRsqi/C/AWeJfIGSRmbfyz1Hj87wc2XWur0uj9mg/LSZsU21ZJMN+zSYe0pxNODtK+d8mmrkFvGn8Q+dqHBtxfmbfxIkoIEC23H98wqfiISxGkzBtcWg0GyL6LCNrT4MgBsKbYi7e0XCdvBmpxVU/R3R3EdIoml7o9sUtlSCOU5ZExMrxnfTwasKzYS69S/NpUYPyuv/4gZuT1HmnINidSEud2t5MCyeMzC8sKwabokS23FkGNiGlV9rZtXUZM3L4ZEvyUh6CP6ikW", "X-OriginatorOrg": "Nvidia.com", "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "25 Mar 2026 10:10:47.8113 (UTC)", "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n f79dd710-8fe6-43d2-9218-08de8a56c92a", "X-MS-Exchange-CrossTenant-Id": "43083d15-7273-40c1-b7db-39efd9ccc17a", "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "\n TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.160];\n Helo=[mail.nvidia.com]", "X-MS-Exchange-CrossTenant-AuthSource": "\n BL6PEPF0001AB72.namprd02.prod.outlook.com", "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous", "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "PH7PR12MB6761", "Subject": "[ovs-dev] [PATCH v1 1/1] dpif-netdev: Fix mega flow ufid collisions\n for different wild cards.", "X-BeenThere": "ovs-dev@openvswitch.org", "X-Mailman-Version": "2.1.30", "Precedence": "list", "List-Id": "<ovs-dev.openvswitch.org>", "List-Unsubscribe": "<https://mail.openvswitch.org/mailman/options/ovs-dev>,\n <mailto:ovs-dev-request@openvswitch.org?subject=unsubscribe>", "List-Archive": "<http://mail.openvswitch.org/pipermail/ovs-dev/>", "List-Post": "<mailto:ovs-dev@openvswitch.org>", "List-Help": "<mailto:ovs-dev-request@openvswitch.org?subject=help>", "List-Subscribe": "<https://mail.openvswitch.org/mailman/listinfo/ovs-dev>,\n <mailto:ovs-dev-request@openvswitch.org?subject=subscribe>", "From": "Eli Britstein via dev <ovs-dev@openvswitch.org>", "Reply-To": "Eli Britstein <elibr@nvidia.com>", "Cc": "Emeel Hakim <ehakim@nvidia.com>, Maor Dickman <maord@nvidia.com>,\n Ilya Maximets <i.maximets@ovn.org>", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "base64", "Errors-To": "ovs-dev-bounces@openvswitch.org", "Sender": "\"dev\" <ovs-dev-bounces@openvswitch.org>" }, "content": "From: Emeel Hakim <ehakim@nvidia.com>\n\ndp_netdev_get_mega_ufid() computes a mega flow ufid by hashing the\nmasked flow (flow & wildcard mask). The mega ufid is used as a key\nto the offload objects. If they are not unique, instead of 2 different\noffload rules, they will override each other.\n\nFor example, consider two flows that share the same 5-tuple but\ndiffer only in TOS handling:\n- Flow A: tos=0x20, wildcard mask tos=0x00 -> masked tos=0x00\n- Flow B: tos=0x00, wildcard mask tos=0xff -> masked tos=0x00\nBoth produce identical masked flows, so they get the same mega ufid,\neven though they belong to different megaflows (different wildcard\nmasks).\n\nThis can be triggered by an OpenFlow rule change while traffic is active:\n1. Install a high-priority rule matching nw_tos=0 and a lower-priority\n catch-all ip, tcp rule.\n2. Start TOS=0 traffic — flows match the nw_tos=0 rule and get an\n exact TOS mask (0xff).\n3. Remove the nw_tos=0 rule — new flows now match the catch-all rule\n with TOS wild-carded (mask=0x00).\n4. Start TOS=0x20 traffic — the masked TOS is 0x00 in both cases,\n producing the same mega ufid despite different wildcard masks.\n\nFix this by taking into account not only the masked values but also the masks.\n\nFixes: 241bad15d99a (\"dpif-netdev: associate flow with a mark id\")\nSigned-off-by: Emeel Hakim <ehakim@nvidia.com>\n---\n lib/dpif-netdev.c | 14 ++++++++++----\n tests/dpif-netdev.at | 25 +++++++++++++++++++++++++\n 2 files changed, 35 insertions(+), 4 deletions(-)", "diff": "diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c\nindex 9df05c4c2..49f4fa2ac 100644\n--- a/lib/dpif-netdev.c\n+++ b/lib/dpif-netdev.c\n@@ -3288,14 +3288,20 @@ out:\n static void\n dp_netdev_get_mega_ufid(const struct match *match, ovs_u128 *mega_ufid)\n {\n- struct flow masked_flow;\n+ struct {\n+ struct flow masked_flow;\n+ struct flow wc;\n+ } key;\n size_t i;\n \n+ memset(&key, 0, sizeof key);\n for (i = 0; i < sizeof(struct flow); i++) {\n- ((uint8_t *)&masked_flow)[i] = ((uint8_t *)&match->flow)[i] &\n- ((uint8_t *)&match->wc)[i];\n+ ((uint8_t *)&key.masked_flow)[i] = ((uint8_t *)&match->flow)[i] &\n+ ((uint8_t *)&match->wc)[i];\n+ ((uint8_t *)&key.wc)[i] = ((uint8_t *)&match->wc)[i];\n }\n- odp_flow_key_hash(&masked_flow, sizeof masked_flow, mega_ufid);\n+\n+ odp_flow_key_hash(&key, sizeof key, mega_ufid);\n }\n \n uint64_t\ndiff --git a/tests/dpif-netdev.at b/tests/dpif-netdev.at\nindex 231197970..b0eb9ea63 100644\n--- a/tests/dpif-netdev.at\n+++ b/tests/dpif-netdev.at\n@@ -668,6 +668,31 @@ AT_CHECK([ovs-appctl revalidator/resume])\n OVS_VSWITCHD_STOP\n AT_CLEANUP\n \n+AT_SETUP([dpif-netdev - mega flow ufid uniqueness for different wildcards])\n+OVS_VSWITCHD_START(\n+ [add-port br0 p1 \\\n+ -- set interface p1 type=dummy options:pstream=punix:$OVS_RUNDIR/p0.sock \\\n+ -- set bridge br0 datapath-type=dummy])\n+AT_CHECK([ovs-appctl vlog/set dpif_netdev:dbg])\n+AT_CHECK([ovs-appctl vlog/disable-rate-limit dpif_netdev])\n+\n+AT_CHECK([ovs-appctl revalidator/pause])\n+# Two flows with different wildcard masks but identical masked flow.\n+# Flow A: tos=0x20 with mask 0 (wildcarded) -> masked tos = 0\n+# Flow B: tos=0x00 with exact match -> masked tos = 0\n+AT_CHECK([ovs-appctl dpctl/add-flow \"in_port(1),eth(),eth_type(0x0800),ipv4(src=10.0.0.1,dst=10.0.0.2,proto=6,tos=0x20/0,ttl=64,frag=no),tcp(src=80,dst=8080)\" \"3\"])\n+AT_CHECK([ovs-appctl dpctl/add-flow \"in_port(1),eth(),eth_type(0x0800),ipv4(src=10.0.0.1,dst=10.0.0.2,proto=6,tos=0,ttl=64,frag=no),tcp(src=80,dst=8080)\" \"3\"])\n+\n+AT_CHECK([ovs-appctl revalidator/resume])\n+\n+# Verify both flows have different mega_ufids by checking flow_add log.\n+AT_CHECK([grep 'flow_add.*tcp(src=80,dst=8080)' ovs-vswitchd.log | sed -n 's/.*mega_ufid:\\([[0-9a-f-]]*\\).*/\\1/p' | sort -u | wc -l | tr -d ' '], [0], [dnl\n+2\n+])\n+\n+OVS_VSWITCHD_STOP\n+AT_CLEANUP\n+\n AT_SETUP([dpif-netdev - check tx packet checksum offloading])\n OVS_VSWITCHD_START(\n [add-port br0 p1 \\\n", "prefixes": [ "ovs-dev", "v1", "1/1" ] }