Received: by 2002:ab2:4a89:0:b0:1f4:a8b6:6e69 with SMTP id w9csp79320lqj; Wed, 10 Apr 2024 04:49:40 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCWRHlKmzmN43OW9HYCYkr62WZ/16xS2duWTPNbsf+XD6PO/NPOj+yS0jQmAjyORV+0/LqcX0ywHrLvRD1aILqQ5r831hdaXozbPT8Y4Pw== X-Google-Smtp-Source: AGHT+IHxMS8MZHJENAY6G55+/g9giOfbMItBbH03LTm6krUS5KHduuP9X6/uG06BczikGRUAdudK X-Received: by 2002:a05:6a21:8885:b0:1a7:9e85:c28f with SMTP id tb5-20020a056a21888500b001a79e85c28fmr3007148pzc.48.1712749779978; Wed, 10 Apr 2024 04:49:39 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1712749779; cv=pass; d=google.com; s=arc-20160816; b=0r9NY9mffOVYAptgfzOn2alpl3g/bzfpP1UC8iS3ZppxPVPVdmjAVwlfIbS2onGfvi evORPnMa1e4gOTd901bGuO5uCID6wzrzwtPpUPmbVWCFtSyRH+Uvq+FBxDWqbeKGoMwo h/CGz+IQMmdtleRjVWLUjJ5lnE67ke+fkvfZGq1cj+Bn/k1M6seV2fVFANQnkq+GSDoG 0jeWAEPtkoc/jHm9ImEMTl+ZCmwB/76fLFAd4rse1V0dx2+fSZP0EFChZjrDZ8ws4MkJ nubIAA773RzabGHFh3YOEiV+2HkWRyu6zOFwzhzX7QukotDIk/bzabUsdqtI6NF9q3PT k2/Q== 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=YXmo/6Jj8T1uSJHkWJxxPdZMr2TI4AhwxypNb3V5eng=; fh=YrUeDA11Au+M8NeUNYvQjhFjmjOul7BiPdxG1eNuL1E=; b=hjD0aqENRCfdJjR46FPltwn+9W1xph6hS/pyAqH3qU75Lg9/DOyWvMclig8kzA/KUr Sx6jL7cnFBrc9Ap+GtBUa3hzIMa+A4humDZ4Yo18P4yNHI7fbwHjeRgw4l6bxU0vuaWX ogZiGzSLoLUtJTDUl0Kd7k1yEim4A8zMk2gx6EneoCpMk3cfFDG1Kb5KKFyC8ja9WOGv EWpiU3mW0byQ38D6V5Q55LKYJlLf7EJLQ3LR39Z//gZ2mx1Qrit4fpFEPzBO1YbwBJ4r A28M2OCv2er+b5qUg4NZpKYyZo00GzoGexB+/ev1LimNVh8c2q4kb0i13kkXUs44bBLW +0Ig==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@fiberby.net header.s=202008 header.b=o1fFTQYC; 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-138411-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-138411-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=fiberby.net Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id fb17-20020a056a002d9100b006edca917a8esi1025902pfb.205.2024.04.10.04.49.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Apr 2024 04:49:39 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-138411-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@fiberby.net header.s=202008 header.b=o1fFTQYC; 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-138411-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-138411-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 sv.mirrors.kernel.org (Postfix) with ESMTPS id D237A28BBA7 for ; Wed, 10 Apr 2024 11:30:39 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id F040F15D5C3; Wed, 10 Apr 2024 11:28:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=fiberby.net header.i=@fiberby.net header.b="o1fFTQYC" 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 076A215CD53; Wed, 10 Apr 2024 11:28:11 +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=1712748496; cv=none; b=IDx5XYXxuA6mkPVicMigXF+bWWbzWlJNzCJhBQy7tjPpkvmWDC6NAF2NpU3cfnwbHHlvKbG5tPBCvt3HbFBRqwyjV7qMyMAYjtF7MtWqxxtfewO/ihxx39mJIvLUQCbgs89SrW+62cm9YxWc+t4tafoBcB0eI0yVoY8WlcKG6Jo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712748496; c=relaxed/simple; bh=iSGZYzDz5WFUw1mxkgJEXJyBYVpthNiTyJJK1sa2BSs=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=m1bNm4f5KvCH/Zu3D29FBBqODsQddMmClwJQUh4Lry8Pf+6Jw7GLMIY0SFlCpuavB+ngE/lhy/B30AmM7Qzqbujwsg9rPmNVakJ09WOzYTLVEGJCeZMKhSn7XfQL2u/nSATqLkuFypvL6JQKljk7WQ4URYHO8n+iEIgGRt+/oXI= 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=o1fFTQYC; 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 8C9E5600A5; Wed, 10 Apr 2024 11:28:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=fiberby.net; s=202008; t=1712748489; bh=iSGZYzDz5WFUw1mxkgJEXJyBYVpthNiTyJJK1sa2BSs=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=o1fFTQYCJdIxHcXtbMfU/J5kn3DmedMcwhnqb1AmrteQauXo0jwTYI88m60aaH44y kEdb9QEGawiyB1Hntx94Os6j9wtGBJ/sfmsoGp7XU3kZUEOudu2u5QWkSI2SgorEep CSUeMIxlkBKxgUFxi5jRoSVsGOBP/xcTYiSVwG5lkfO/MQSNbLk6cr82UF8pwGYXaf xtTa5R71nudOKPc34RYk9yTAsw/mM07fVarAQcviKIdtCncwmO18od6UzatIpm1kCg +aKmKHiSd/TywV3Z5wMJAs4y3AycBNC3BIrn20DZ4BSuLT3PfoNdSbiy9LEB+FsG5z Dwuz4LRX5TRVg== Received: from [127.0.0.1] (localhost [127.0.0.1]) by x201s (Postfix) with ESMTP id D2E1D20038B; Wed, 10 Apr 2024 11:27:59 +0000 (UTC) Message-ID: <628da266-fe6a-4e4d-8fc0-9d416dc39eaa@fiberby.net> Date: Wed, 10 Apr 2024 11:27:59 +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-next v2 1/4] flow_offload: add control flag checking helpers To: netdev@vger.kernel.org Cc: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , linux-kernel@vger.kernel.org, Louis Peens , Yanguo Li , oss-drivers@corigine.com, Taras Chornyi , Woojung Huh , UNGLinuxDriver@microchip.com, Andrew Lunn , Florian Fainelli , Vladimir Oltean , Edward Cree , Jamal Hadi Salim , Cong Wang , Jiri Pirko References: <20240410093235.5334-1-ast@fiberby.net> <20240410093235.5334-2-ast@fiberby.net> Content-Language: en-US From: =?UTF-8?Q?Asbj=C3=B8rn_Sloth_T=C3=B8nnesen?= In-Reply-To: <20240410093235.5334-2-ast@fiberby.net> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 4/10/24 9:32 AM, Asbjørn Sloth Tønnesen wrote: > These helpers aim to help drivers, with checking > for the presence of unsupported control flags. > > For drivers supporting at least one control flag: > flow_rule_is_supp_control_flags() > > For drivers using flow_rule_match_control(), but not using flags: > flow_rule_has_control_flags() > > For drivers not using flow_rule_match_control(): > flow_rule_match_has_control_flags() > > While primarily aimed at FLOW_DISSECTOR_KEY_CONTROL > and flow_rule_match_control(), then the first two > can also be used with FLOW_DISSECTOR_KEY_ENC_CONTROL > and flow_rule_match_enc_control(). > > These helpers mirrors the existing check done in sfc: > drivers/net/ethernet/sfc/tc.c +276 > > Only compile-tested. > > Signed-off-by: Asbjørn Sloth Tønnesen > --- > include/net/flow_offload.h | 55 ++++++++++++++++++++++++++++++++++++++ > 1 file changed, 55 insertions(+) > > diff --git a/include/net/flow_offload.h b/include/net/flow_offload.h > index 314087a5e1818..9ee3ad4a308a8 100644 > --- a/include/net/flow_offload.h > +++ b/include/net/flow_offload.h > @@ -449,6 +449,61 @@ static inline bool flow_rule_match_key(const struct flow_rule *rule, > return dissector_uses_key(rule->match.dissector, key); > } > > +/** > + * flow_rule_is_supp_control_flags() - check for supported control flags > + * @supp_flags: control flags supported by driver > + * @ctrl_flags: control flags present in rule > + * @extack: The netlink extended ACK for reporting errors. > + * > + * @returns true if only supported control flags are set, false otherwise. > + */ The kdoc test failed: > include/net/flow_offload.h:463: warning: No description found for return value of 'flow_rule_is_supp_control_flags' For some reason I didn't find kernel-doc.rst, because I searched for autodoc sphinx stuff. Will do proper "Return:" in v3. I wasn't able to reproduce the kdoc failure[1] locally: $ ./scripts/kernel-doc -none include/net/flow_offload.h $ ./scripts/kernel-doc -none -v include/net/flow_offload.h include/net/flow_offload.h:345: info: Scanning doc for function flow_offload_has_one_action include/net/flow_offload.h:453: info: Scanning doc for function flow_rule_is_supp_control_flags include/net/flow_offload.h:475: info: Scanning doc for function flow_rule_has_control_flags include/net/flow_offload.h:488: info: Scanning doc for function flow_rule_match_has_control_flags [1] https://netdev.bots.linux.dev/static/nipa/843159/13623977/kdoc/ pw-bot: changes-requested > +static inline bool flow_rule_is_supp_control_flags(const u32 supp_flags, > + const u32 ctrl_flags, > + struct netlink_ext_ack *extack) > +{ > + if (likely((ctrl_flags & ~supp_flags) == 0)) > + return true; > + > + NL_SET_ERR_MSG_FMT_MOD(extack, > + "Unsupported match on control.flags %#x", > + ctrl_flags); > + > + return false; > +} > + > +/** > + * flow_rule_has_control_flags() - check for presence of any control flags > + * @ctrl_flags: control flags present in rule > + * @extack: The netlink extended ACK for reporting errors. > + * > + * @returns true if control flags are set, false otherwise. > + */ > +static inline bool flow_rule_has_control_flags(const u32 ctrl_flags, > + struct netlink_ext_ack *extack) > +{ > + return !flow_rule_is_supp_control_flags(0, ctrl_flags, extack); > +} > + > +/** > + * flow_rule_match_has_control_flags() - match and check for any control flags > + * @rule: The flow_rule under evaluation. > + * @extack: The netlink extended ACK for reporting errors. > + * > + * @returns true if control flags are set, false otherwise. > + */ > +static inline bool flow_rule_match_has_control_flags(struct flow_rule *rule, > + struct netlink_ext_ack *extack) > +{ > + struct flow_match_control match; > + > + if (!flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CONTROL)) > + return false; > + > + flow_rule_match_control(rule, &match); > + > + return flow_rule_has_control_flags(match.mask->flags, extack); > +} > + > struct flow_stats { > u64 pkts; > u64 bytes; -- Best regards Asbjørn Sloth Tønnesen Network Engineer Fiberby - AS42541