Received: by 2002:ab2:7041:0:b0:1f4:bcc8:f211 with SMTP id x1csp18004lql; Fri, 12 Apr 2024 02:07:21 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCVSsV2GszeCtPBwoqA3Sgsr9pyTw1lhfn7Enee4S7jugzURk1ziJISyqFh/9Dp6ynnJvzinekhfyoeZ1qKqVEmzTwTPxoQhX42xtnKXaA== X-Google-Smtp-Source: AGHT+IE8UEXDokonbtaUsd7zaFS+O7KjwvkbsZSUzwy96jDbVqzepxE/hvO7Sx9LhEjP527Ajyjb X-Received: by 2002:a05:622a:1648:b0:434:6fa8:e9f6 with SMTP id y8-20020a05622a164800b004346fa8e9f6mr2041633qtj.35.1712912840956; Fri, 12 Apr 2024 02:07:20 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1712912840; cv=pass; d=google.com; s=arc-20160816; b=0lbFLPiBGEb/Hvr1PUZ3Ol3w5rH45RW8YgYS1F9WTUtUKcfhPilRu7lGJkoWHCVP05 cOYpZ697ZJcfRe3HmGIIFw0kJN8r5UD+Kb/OYxLAlN8I78hVBxRO7BAb4YZH2JnnjVwI v4veNvmgeK43eQl/q68lBtZKaf8qWvri+xt6+t7/q9hfpYE/ft+kUoK8hWPD4T+STSRF poCKvg21Yiaa9pcvySXfLr4vC1xLJbqanPZ4E2/8PSglTgROK+qYeHA9Z1eFszUhyW6g VNqD9Y6QnExUHwrqrMJYDE7bwQ6W0t0L6B4ynWQCWensc0fxGbvW4wgQPmKy3678Wnbr Hj8w== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:date:message-id:dkim-signature; bh=tLI43S08NDAYX1dlKNSBLZt2Qbh91XQG46mhgpwuO98=; fh=fXw0fVD0/qKG2nGI2FJ0e5mJAa0URy/bzBZnFPHR1mo=; b=oSM46+8ji7TnXvhYTy3kt+1eNhth/hGE825qz07A7UO6utMBQR1aFpC39R4FHj9G9w OmnWMQJSbVFkxaw5PeVxh6t83Aec5Edqs1Q3VRERFuDPkAELy71c7lTY6CxgQnhUlqmc EZ8Qy9NrZ7R/uO978A3K76LOghj7L37KId3/6kagRoI/J4SSdAPNNSR8pRIx1T+mKGhi rveyJ5nLK4wJeF+X+t7p2BtqEuSvO/C59OrnOMPA/GfgcU6+auD9JCmwKqFqHSXKEi7d qYGi43I1XgQnz+NaKXczqatKxDlpA4Fi1oHSUY+a9Rp0T5u0uU4tPwWy/6KZU62qj8Ks SPrA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@fiberby.net header.s=202008 header.b=F+glp38T; arc=pass (i=1 spf=pass spfdomain=fiberby.net dkim=pass dkdomain=fiberby.net dmarc=pass fromdomain=fiberby.net); spf=pass (google.com: domain of linux-kernel+bounces-142335-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-142335-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=fiberby.net Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id x20-20020ac85f14000000b00432cf1c9dcfsi3213585qta.632.2024.04.12.02.07.20 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Apr 2024 02:07:20 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-142335-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@fiberby.net header.s=202008 header.b=F+glp38T; arc=pass (i=1 spf=pass spfdomain=fiberby.net dkim=pass dkdomain=fiberby.net dmarc=pass fromdomain=fiberby.net); spf=pass (google.com: domain of linux-kernel+bounces-142335-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-142335-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=fiberby.net Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 95CE21C212C6 for ; Fri, 12 Apr 2024 09:07:20 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 68BF1651AE; Fri, 12 Apr 2024 09:01:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=fiberby.net header.i=@fiberby.net header.b="F+glp38T" Received: from mail1.fiberby.net (mail1.fiberby.net [193.104.135.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6D70D4BAA6; Fri, 12 Apr 2024 09:01:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.104.135.124 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712912488; cv=none; b=LpDfKOW5dVyhRVpwTOJdD7IijQZ4l854UXkwsNQPK8Q6U5c+34NneH5wVZRncYo3sZecyUtPmqdm5LSz+VWRs3sqeBJkOO2lPXjf3BCHr/yWfhBmVzcTN+fBENtmp3f+RPgMVv6+7IiF3zauoL45cuDPwm1EMCmo/lL+I9RzUUQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712912488; c=relaxed/simple; bh=oSQzEuk4s9AcL1UwAAfxZUSg769yULNpTsVoPBjtjoE=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=D5yTel4B5ElHD4prO4KBG+BAgXhuU4jbFjZ+qw2x1Sb64qFas/Q9ySco5afAPboR3kr6Ry4AHbCANrr7rCVRG6sHBPlJeG5b/E3huaPQbcD+iHmf4C9iv2tlqETeRdtsU71EN3DtT/4lJAIVEflaSqJSLdvekMB15eXAWn7x2jw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fiberby.net; spf=pass smtp.mailfrom=fiberby.net; dkim=pass (2048-bit key) header.d=fiberby.net header.i=@fiberby.net header.b=F+glp38T; arc=none smtp.client-ip=193.104.135.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fiberby.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fiberby.net Received: from x201s (193-104-135-243.ip4.fiberby.net [193.104.135.243]) by mail1.fiberby.net (Postfix) with ESMTPSA id 21D74600A2; Fri, 12 Apr 2024 09:01:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=fiberby.net; s=202008; t=1712912481; bh=oSQzEuk4s9AcL1UwAAfxZUSg769yULNpTsVoPBjtjoE=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=F+glp38Ty9t0DUIWXuiuaz6SGhlmthGyyeaQYCDgtMa8MYCNAWUDOiWp5p+oXP7Ne a80/By8NgXRiOsDo5jwa9xC5HNKR3kKG6DCm0f0voMGjRW2t1a1gZdsbloSmf5y0Rn By7DaBomBGd3A59qrajodySq9zuwSf+zEig1qJCMu1MWm+3vZ+dy/Ux+hoQ9+zK68a jx61gVEw4uhMn2A0VnGhivurPJMG3SmS0kOWUFgPw+2x33i5n483BAwxE0+l+xyYBH GH9ug9V2sp6FDosEkNIwPDkrmnUVWReLQA/do2oyFUPCEjYBWlCftIntH0Vs9XGoUU BnpGx5I9jF0sA== Received: from [127.0.0.1] (localhost [127.0.0.1]) by x201s (Postfix) with ESMTP id E146C200B1B; Fri, 12 Apr 2024 09:01:15 +0000 (UTC) Message-ID: <27ac48c0-b19c-4104-8ec9-08232e3f42f6@fiberby.net> Date: Fri, 12 Apr 2024 09:01:15 +0000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH net] octeontx2-pf: fix FLOW_DIS_IS_FRAGMENT implementation To: Suman Ghosh , "netdev@vger.kernel.org" Cc: "linux-kernel@vger.kernel.org" , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Sunil Kovvuri Goutham , Geethasowjanya Akula , Subbaraya Sundeep Bhatta , Hariprasad Kelam References: <20240410134303.21560-1-ast@fiberby.net> Content-Language: en-US From: =?UTF-8?Q?Asbj=C3=B8rn_Sloth_T=C3=B8nnesen?= In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi Suman, On 4/12/24 5:34 AM, Suman Ghosh wrote: >> if (match.mask->flags & FLOW_DIS_IS_FRAGMENT) { >> + val = match.key->flags & FLOW_DIS_IS_FRAGMENT; >> if (ntohs(flow_spec->etype) == ETH_P_IP) { >> - flow_spec->ip_flag = IPV4_FLAG_MORE; >> + flow_spec->ip_flag = val ? IPV4_FLAG_MORE : 0; > [Suman] Do we need this? If user provide the command "tc filter add .... ip_flags nofrags" then the above if check should not be hit right? If we are inside the check then we always want to set IPV4_FLAG_MORE right? In iproute2, the "frag"/"nofrag" is parsed in flower_parse_matching_flags(), it sets TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT in TCA_FLOWER_KEY_FLAGS and TCA_FLOWER_KEY_FLAGS_MASK. Back in the kernel, in fl_set_key_flags() (net/sched/cls_flower.c) then, directly translates TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT into FLOW_DIS_IS_FRAGMENT, while only setting the key bit, if the mask bit is being set. There are therefore 3 possible cases: - `tc flower ...` (no ip_flags frag or nofrag) (match.key->flags & FLOW_DIS_FIRST_FRAG) is false (match.mask->flags & FLOW_DIS_FIRST_FRAG) is false - `tc flower ... ip_flags nofrag` (match.key->flags & FLOW_DIS_FIRST_FRAG) is false (match.mask->flags & FLOW_DIS_FIRST_FRAG) is true - `tc flower ... ip_flags frag` (match.key->flags & FLOW_DIS_FIRST_FRAG) is true (match.mask->flags & FLOW_DIS_FIRST_FRAG) is true The `nofrag` case will still have the mask bit set, and hence pass the entry condition. >> flow_mask->ip_flag = IPV4_FLAG_MORE; Yes, you should always set IPV4_FLAG_MORE in flow_mask, but not always in flow_spec. -- Best regards Asbjørn Sloth Tønnesen Network Engineer Fiberby - AS42541