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] [day] [month] [year] [list]
Date:	Thu, 09 Sep 2010 17:50:54 -0700
From:	Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@...el.com>
To:	Ben Hutchings <bhutchings@...arflare.com>
Cc:	David Miller <davem@...emloft.net>,
	Santwona Behera <santwona.behera@....com>,
	"netdev@...r.kernel.org" <netdev@...r.kernel.org>,
	"linux-net-drivers@...arflare.com" <linux-net-drivers@...arflare.com>,
	Dimitris Michailidis <dm@...lsio.com>
Subject: Re: [PATCH net-next-2.6] ethtool: Complete kernel-doc comments for
 RX flow filter and hash control

On Tue, 2010-09-07 at 07:41 -0700, Ben Hutchings wrote:
> There are now several interfaces within the ethtool API for getting
> and setting RX flow filtering and hashing behaviour, most of which are
> poorly documented.  This adds kernel-doc comments for all these
> interfaces, based on the existing incomplete comments and on the
> initial implementations.
> 
> Signed-off-by: Ben Hutchings <bhutchings@...arflare.com>
> ---
> Santwona, Peter,
> 
> Please point out any errors and any information that should be added to
> the comments to explain the significant differences between the RXNFC
> and RXNTUPLE interfaces.

Thanks for putting this together.  I've just been buried with other
things, and haven't had a chance to do it.

I can comment on the ntuple interfaces.  See below.

> Ben.
> 
>  include/linux/ethtool.h |   93 ++++++++++++++++++++++++++++++++++++++++-------
>  1 files changed, 80 insertions(+), 13 deletions(-)
> 
> diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
> index 991269e..6bd8cf2 100644
> --- a/include/linux/ethtool.h
> +++ b/include/linux/ethtool.h
> @@ -357,6 +357,14 @@ struct ethtool_usrip4_spec {
>  	__u8    proto;
>  };
>  
> +/**
> + * struct ethtool_rx_flow_spec - specification for RX flow filter
> + * @flow_type: Type of match to perform, e.g. %TCP_V4_FLOW
> + * @h_u: Flow fields to match (dependent on @flow_type)
> + * @m_u: Masks for flow field bits to be ignored
> + * @ring_cookie: RX ring/queue index to deliver to, or %RX_CLS_FLOW_DISC
> + * @location: Index of filter in hardware table
> + */
>  struct ethtool_rx_flow_spec {
>  	__u32		flow_type;
>  	union {
> @@ -369,32 +377,87 @@ struct ethtool_rx_flow_spec {
>  		struct ethtool_ether_spec		ether_spec;
>  		struct ethtool_usrip4_spec		usr_ip4_spec;
>  		__u8					hdata[64];
> -	} h_u, m_u; /* entry, mask */
> +	} h_u, m_u;
>  	__u64		ring_cookie;
>  	__u32		location;
>  };
>  
> +/**
> + * struct ethtool_rxnfc - command to get or set RX flow classification rules
> + * @cmd: Specific command number - %ETHTOOL_GRXFH, %ETHTOOL_SRXFH,
> + *	%ETHTOOL_GRXRINGS, %ETHTOOL_GRXCLSRLCNT, %ETHTOOL_GRXCLSRULE,
> + *	%ETHTOOL_GRXCLSRLALL, %ETHTOOL_SRXCLSRLDEL or %ETHTOOL_SRXCLSRLINS
> + * @flow_type: Type of flow to be affected, e.g. %TCP_V4_FLOW
> + * @data: Command-dependent value
> + * @fs: Flow filter specification
> + * @rule_cnt: Number of rules to be affected
> + * @rule_locs: Array of valid rule indices
> + *
> + * For %ETHTOOL_GRXFH and %ETHTOOL_SRXFH, @data is a bitmask indicating
> + * the fields included in the flow hash, e.g. %RXH_IP_SRC.  The following
> + * structure fields must not be used.
> + *
> + * For %ETHTOOL_GRXRINGS, @data is set to the number of RX rings/queues
> + * on return.
> + *
> + * For %ETHTOOL_GRXCLSRLCNT, @rule_cnt is set to the number of defined
> + * rules on return.
> + *
> + * For %ETHTOOL_GRXCLSRULE, @fs.@...ation specifies the index of an
> + * existing filter rule on entry and @fs contains the rule on return.
> + *
> + * For %ETHTOOL_GRXCLSRLALL, @rule_cnt specifies the array size of the
> + * user buffer for @rule_locs on entry.  On return, @data is the size
> + * of the filter table and @rule_locs contains the indices of the
> + * defined rules.
> + *
> + * For %ETHTOOL_SRXCLSRLINS, @fs specifies the filter rule to add or
> + * update.  @fs.@...ation specifies the index to use and must not be
> + * ignored.
> + *
> + * For %ETHTOOL_SRXCLSRLDEL, @fs.@...ation specifies the index of an
> + * existing filter rule on entry.
> + *
> + * Implementation of indexed classification rules generally requires a
> + * TCAM.
> + */
>  struct ethtool_rxnfc {
>  	__u32				cmd;
>  	__u32				flow_type;
> -	/* The rx flow hash value or the rule DB size */
>  	__u64				data;
> -	/* The following fields are not valid and must not be used for
> -	 * the ETHTOOL_{G,X}RXFH commands. */
>  	struct ethtool_rx_flow_spec	fs;
>  	__u32				rule_cnt;
>  	__u32				rule_locs[0];
>  };
>  
> +/**
> + * struct ethtool_rxfh_indir - command to get or set RX flow hash indirection
> + * @cmd: Specific command number - %ETHTOOL_GRXFHINDIR or %ETHTOOL_SRXFHINDIR
> + * @size: On entry, the array size of the user buffer.  On return from
> + *	%ETHTOOL_GRXFHINDIR, the array size of the hardware indirection table.
> + * @ring_index: RX ring/queue index for each hash value
> + */
>  struct ethtool_rxfh_indir {
>  	__u32	cmd;
> -	/* On entry, this is the array size of the user buffer.  On
> -	 * return from ETHTOOL_GRXFHINDIR, this is the array size of
> -	 * the hardware indirection table. */
>  	__u32	size;
> -	__u32	ring_index[0];	/* ring/queue index for each hash value */
> +	__u32	ring_index[0];
>  };
>  
> +/**
> + * struct ethtool_rx_ntuple_flow_spec - specification for RX flow filter
> + * @flow_type: Type of match to perform, e.g. %TCP_V4_FLOW
> + * @h_u: Flow field values to match (dependent on @flow_type)
> + * @m_u: Masks for flow field value bits to be ignored
> + * @vlan_tag: VLAN tag to match
> + * @vlan_tag_mask: Mask for VLAN tag bits to be ignored
> + * @data: Driver-dependent data to match
> + * @data_mask: Mask for driver-dependent data bits to be ignored
> + * @action: RX ring/queue index to deliver to (non-negative) or other action
> + *	(negative)

The negative value is typically to drop the flow.  That could be added
as a brief example of "other action."

> + *
> + * Zero values in @h_u may be ignored, as if all the corresponding
> + * mask bits were set.
> + */
>  struct ethtool_rx_ntuple_flow_spec {
>  	__u32		 flow_type;
>  	union {
> @@ -407,18 +470,22 @@ struct ethtool_rx_ntuple_flow_spec {
>  		struct ethtool_ether_spec		ether_spec;
>  		struct ethtool_usrip4_spec		usr_ip4_spec;
>  		__u8					hdata[64];
> -	} h_u, m_u; /* entry, mask */
> +	} h_u, m_u;
>  
>  	__u16	        vlan_tag;
>  	__u16	        vlan_tag_mask;
> -	__u64		data;      /* user-defined flow spec data */
> -	__u64		data_mask; /* user-defined flow spec mask */
> +	__u64		data;
> +	__u64		data_mask;
>  
> -	/* signed to distinguish between queue and actions (DROP) */
>  	__s32		action;
> -#define ETHTOOL_RXNTUPLE_ACTION_DROP -1
> +#define ETHTOOL_RXNTUPLE_ACTION_DROP -1		/* drop packet */
>  };
>  
> +/**
> + * struct ethtool_rx_ntuple - command to get or set RX flow filter
> + * @cmd: Specific command number - %ETHTOOL_GRXNTUPLE or %ETHTOOL_SRXNTUPLE
> + * @fs: Flow filter specification
> + */
>  struct ethtool_rx_ntuple {
>  	__u32					cmd;
>  	struct ethtool_rx_ntuple_flow_spec	fs;

Everything else in the ntuple section looks fine to me.

-- 
Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@...el.com>
LAN Access Division, Intel Corporation

Download attachment "smime.p7s" of type "application/x-pkcs7-signature" (4394 bytes)

Powered by blists - more mailing lists