lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250501135101.GY3339421@horms.kernel.org>
Date: Thu, 1 May 2025 14:51:01 +0100
From: Simon Horman <horms@...nel.org>
To: Jacob Keller <jacob.e.keller@...el.com>
Cc: netdev <netdev@...r.kernel.org>,
	Anthony Nguyen <anthony.l.nguyen@...el.com>,
	Intel Wired LAN <intel-wired-lan@...ts.osuosl.org>,
	Aleksandr Loktionov <aleksandr.loktionov@...el.com>,
	Przemek Kitszel <przemyslaw.kitszel@...el.com>
Subject: Re: [PATCH iwl-next 2/2] net: intel: move RSS packet classifier
 types to libie

On Wed, Apr 30, 2025 at 10:11:53AM -0700, Jacob Keller wrote:
> The Intel i40e, iavf, and ice drivers all include a definition of the
> packet classifier filter types used to program RSS hash enable bits. For
> i40e, these bits are used for both the PF and VF to configure the PFQF_HENA
> and VFQF_HENA registers.
> 
> For ice and iAVF, these bits are used to communicate the desired hash
> enable filter over virtchnl via its struct virtchnl_rss_hashena. The
> virtchnl.h header makes no mention of where the bit definitions reside.
> 
> Maintaining a separate copy of these bits across three drivers is
> cumbersome. Move the definition to libie as a new pctype.h header file.
> Each driver can include this, and drop its own definition.
> 
> The ice implementation also defined a ICE_AVF_FLOW_FIELD_INVALID, intending
> to use this to indicate when there were no hash enable bits set. This is
> confusing, since the enumeration is using bit positions. A value of 0
> *should* indicate the first bit. Instead, rewrite the code that uses
> ICE_AVF_FLOW_FIELD_INVALID to just check if the avf_hash is zero. From
> context this should be clear that we're checking if none of the bits are
> set.
> 
> The values are kept as bit positions instead of encoding the BIT_ULL
> directly into their value. While most users will simply use BIT_ULL
> immediately, i40e uses the macros both with BIT_ULL and test_bit/set_bit
> calls.
> 
> Signed-off-by: Jacob Keller <jacob.e.keller@...el.com>
> Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@...el.com>

Reviewed-by: Simon Horman <horms@...nel.org>

Please see comment below.

...

> diff --git a/include/linux/net/intel/libie/pctype.h b/include/linux/net/intel/libie/pctype.h
> new file mode 100644
> index 0000000000000000000000000000000000000000..78723c8a33a084fb1120743427273af4b982c835
> --- /dev/null
> +++ b/include/linux/net/intel/libie/pctype.h
> @@ -0,0 +1,44 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +/* Copyright (C) 2025 Intel Corporation */
> +
> +#ifndef __LIBIE_PCTYPE_H
> +#define __LIBIE_PCTYPE_H
> +
> +/**
> + * enum libie_filter_pctype - Packet Classifier Types for filters
> + *
> + * Packet Classifier Type indexes, used to set the xxQF_HENA registers. Also
> + * communicated over the virtchnl API as part of struct virtchnl_rss_hashena.
> + */

As there is a Kernel doc for this enum,
./tools/kernel-doc -none would like each value documented too.

> +enum libie_filter_pctype {
> +	/* Note: Values 0-28 are reserved for future use.
> +	 * Value 29, 30, 32 are not supported on XL710 and X710.
> +	 */
> +	LIBIE_FILTER_PCTYPE_NONF_UNICAST_IPV4_UDP	= 29,
> +	LIBIE_FILTER_PCTYPE_NONF_MULTICAST_IPV4_UDP	= 30,
> +	LIBIE_FILTER_PCTYPE_NONF_IPV4_UDP		= 31,
> +	LIBIE_FILTER_PCTYPE_NONF_IPV4_TCP_SYN_NO_ACK	= 32,
> +	LIBIE_FILTER_PCTYPE_NONF_IPV4_TCP		= 33,
> +	LIBIE_FILTER_PCTYPE_NONF_IPV4_SCTP		= 34,
> +	LIBIE_FILTER_PCTYPE_NONF_IPV4_OTHER		= 35,
> +	LIBIE_FILTER_PCTYPE_FRAG_IPV4			= 36,
> +	/* Note: Values 37-38 are reserved for future use.
> +	 * Value 39, 40, 42 are not supported on XL710 and X710.
> +	 */
> +	LIBIE_FILTER_PCTYPE_NONF_UNICAST_IPV6_UDP	= 39,
> +	LIBIE_FILTER_PCTYPE_NONF_MULTICAST_IPV6_UDP	= 40,
> +	LIBIE_FILTER_PCTYPE_NONF_IPV6_UDP		= 41,
> +	LIBIE_FILTER_PCTYPE_NONF_IPV6_TCP_SYN_NO_ACK	= 42,
> +	LIBIE_FILTER_PCTYPE_NONF_IPV6_TCP		= 43,
> +	LIBIE_FILTER_PCTYPE_NONF_IPV6_SCTP		= 44,
> +	LIBIE_FILTER_PCTYPE_NONF_IPV6_OTHER		= 45,
> +	LIBIE_FILTER_PCTYPE_FRAG_IPV6			= 46,
> +	/* Note: Value 47 is reserved for future use */
> +	LIBIE_FILTER_PCTYPE_FCOE_OX			= 48,
> +	LIBIE_FILTER_PCTYPE_FCOE_RX			= 49,
> +	LIBIE_FILTER_PCTYPE_FCOE_OTHER			= 50,
> +	/* Note: Values 51-62 are reserved for future use */
> +	LIBIE_FILTER_PCTYPE_L2_PAYLOAD			= 63
> +};
> +
> +#endif /* __LIBIE_PCTYPE_H */

...

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ