DPDK patches and discussions
 help / color / mirror / Atom feed
From: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
To: Ivan Malov <ivan.malov@arknetworks.am>, dev@dpdk.org
Cc: Ferruh Yigit <ferruh.yigit@amd.com>,
	Denis Pryazhennikov <denis.pryazhennikov@arknetworks.am>,
	Andy Moreton <amoreton@xilinx.com>
Subject: Re: [PATCH v3 09/34] net/sfc: add functions to manipulate MCDI table fields
Date: Wed, 7 Jun 2023 15:00:34 +0300	[thread overview]
Message-ID: <facc95c4-1d98-bb27-73d7-ef6dfc8b09e8@oktetlabs.ru> (raw)
In-Reply-To: <20230604232523.6746-10-ivan.malov@arknetworks.am>

On 6/5/23 02:24, Ivan Malov wrote:
> From: Denis Pryazhennikov <denis.pryazhennikov@arknetworks.am>
> 
> Implemented functions that help to fill user data for
> manipulation with HW tables in the required format.
> 
> Signed-off-by: Denis Pryazhennikov <denis.pryazhennikov@arknetworks.am>
> Reviewed-by: Ivan Malov <ivan.malov@arknetworks.am>
> Reviewed-by: Andy Moreton <amoreton@xilinx.com>
> ---
>   drivers/net/sfc/meson.build |   1 +
>   drivers/net/sfc/sfc_tbls.c  | 140 ++++++++++++++++++++++++++++++++++++
>   drivers/net/sfc/sfc_tbls.h  | 135 ++++++++++++++++++++++++++++++++++
>   3 files changed, 276 insertions(+)
>   create mode 100644 drivers/net/sfc/sfc_tbls.c
> 
> diff --git a/drivers/net/sfc/meson.build b/drivers/net/sfc/meson.build
> index c2d8430810..39c7f24764 100644
> --- a/drivers/net/sfc/meson.build
> +++ b/drivers/net/sfc/meson.build
> @@ -87,6 +87,7 @@ sources = files(
>           'sfc_tso.c',
>           'sfc_filter.c',
>           'sfc_switch.c',
> +        'sfc_tbls.c',
>           'sfc_mae.c',
>           'sfc_mae_counter.c',
>           'sfc_flow.c',
> diff --git a/drivers/net/sfc/sfc_tbls.c b/drivers/net/sfc/sfc_tbls.c
> new file mode 100644
> index 0000000000..db54fc0d40
> --- /dev/null
> +++ b/drivers/net/sfc/sfc_tbls.c
> @@ -0,0 +1,140 @@
> +/* SPDX-License-Identifier: BSD-3-Clause
> + *
> + * Copyright (c) 2023 Advanced Micro Devices, Inc.
> + */
> +
> +#include "sfc_tbls.h"
> +#include "sfc_debug.h"
> +
> +#include <rte_ip.h>
> +
> +/* Number of bits in uint32_t type */
> +#define SFC_TBLS_U32_BITS (sizeof(uint32_t) * CHAR_BIT)
> +
> +static uint32_t
> +sfc_tbls_field_update(uint32_t in, uint16_t lbn, uint16_t width, uint32_t value)
> +{
> +	uint32_t mask;
> +
> +	if (width == SFC_TBLS_U32_BITS)
> +		return value;
> +
> +	mask = RTE_LEN2MASK(width, uint32_t);

What should/will happen if width is more than 32?

> +	value &= mask;
> +
> +	if (lbn != 0) {
> +		mask <<= lbn;
> +		value <<= lbn;
> +	}
> +
> +	return (in & (~mask)) | value;
> +}
> +
> +void
> +sfc_tbls_field_set_u32(uint32_t data[], __rte_unused unsigned int data_size,
> +		       uint16_t lbn, uint16_t width, uint32_t value)
> +{
> +	uint32_t data_offset = 0;
> +
> +	if (lbn >= SFC_TBLS_U32_BITS) {
> +		data_offset = lbn / SFC_TBLS_U32_BITS;
> +
> +		SFC_ASSERT(data_offset < data_size);
> +
> +		data += data_offset;
> +		lbn %= SFC_TBLS_U32_BITS;
> +	}
> +
> +	if (lbn + width <= SFC_TBLS_U32_BITS) {
> +		*data = sfc_tbls_field_update(*data, lbn, width, value);
> +	} else {
> +		*data = sfc_tbls_field_update(*data, lbn,
> +					      SFC_TBLS_U32_BITS - lbn, value);
> +		value >>= SFC_TBLS_U32_BITS - lbn;
> +
> +		data_offset++;
> +		SFC_ASSERT(data_offset < data_size);
> +
> +		data++;
> +		*data = sfc_tbls_field_update(*data, 0,
> +					      width + lbn - SFC_TBLS_U32_BITS,
> +					      value);
> +	}
> +}
> +
> +void
> +sfc_tbls_field_set_u16(uint32_t data[], unsigned int data_size, uint16_t lbn,
> +		       uint16_t width, uint16_t value)
> +{
> +	sfc_tbls_field_set_u32(data, data_size, lbn, width, value);
> +}
> +
> +void
> +sfc_tbls_field_set_u8(uint32_t data[], unsigned int data_size, uint16_t lbn,
> +		      uint16_t width, uint8_t value)
> +{
> +	sfc_tbls_field_set_u32(data, data_size, lbn, width, value);
> +}
> +
> +void
> +sfc_tbls_field_set_ip(uint32_t data[], unsigned int data_size, uint16_t lbn,
> +		      __rte_unused uint16_t width, const uint32_t *ip)
> +{
> +	unsigned int i;
> +	size_t ipv6_addr_len = RTE_SIZEOF_FIELD(struct rte_ipv6_hdr, src_addr);

It is unclear why the function is about IPv6 address only. Could you add 
a comment to explain IPv4 case.

> +
> +	SFC_ASSERT(width == ipv6_addr_len * CHAR_BIT);
> +
> +	for (i = 0; i < ipv6_addr_len / sizeof(*ip); i++) {
> +		sfc_tbls_field_set_u32(data, data_size, lbn,
> +				       SFC_TBLS_U32_BITS, ip[i]);
> +		lbn += SFC_TBLS_U32_BITS;
> +	}
> +}
> +
> +void
> +sfc_tbls_field_set_u64(uint32_t data[], __rte_unused unsigned int data_size,
> +		       uint16_t lbn, uint16_t width, uint64_t value)
> +{
> +	uint32_t data_offset = 0;
> +
> +	if (lbn >= SFC_TBLS_U32_BITS) {
> +		data_offset = lbn / SFC_TBLS_U32_BITS;
> +
> +		SFC_ASSERT(data_offset < data_size);
> +
> +		data += data_offset;
> +		lbn %= SFC_TBLS_U32_BITS;
> +	}
> +
> +	*data = sfc_tbls_field_update(*data, lbn, SFC_TBLS_U32_BITS - lbn, value);
> +	value >>= SFC_TBLS_U32_BITS - lbn;
> +	width -= SFC_TBLS_U32_BITS - lbn;
> +
> +	data_offset++;
> +	SFC_ASSERT(data_offset < data_size);
> +
> +	data++;
> +
> +	if (width > SFC_TBLS_U32_BITS) {
> +		*data = sfc_tbls_field_update(*data, 0, SFC_TBLS_U32_BITS, value);
> +		value >>= SFC_TBLS_U32_BITS;
> +		width -= SFC_TBLS_U32_BITS;
> +
> +		data_offset++;
> +		SFC_ASSERT(data_offset < data_size);
> +
> +		data++;
> +	}
> +
> +	*data = sfc_tbls_field_update(*data, 0, width, value);
> +}
> +
> +void
> +sfc_tbls_field_set_bit(uint32_t data[], unsigned int data_size, uint16_t lbn,
> +		       uint16_t width, bool value)
> +{
> +	SFC_ASSERT(width == 1);
> +
> +	sfc_tbls_field_set_u32(data, data_size, lbn, width, value ? 1 : 0);
> +}
> diff --git a/drivers/net/sfc/sfc_tbls.h b/drivers/net/sfc/sfc_tbls.h
> index 2a5c87b82c..7b6bb5b341 100644
> --- a/drivers/net/sfc/sfc_tbls.h
> +++ b/drivers/net/sfc/sfc_tbls.h
> @@ -63,6 +63,141 @@ sfc_tbls_bcam_entry_delete(efx_nic_t *enp, efx_table_id_t table_id, uint16_t key
>   				      data, data_size);
>   }
>   
> +/**
> + * All manipulations with HW tables entries require forming
> + * a key and response.
> + * The key and response fields follow, consecutively, each
> + * packed as follows:
> + *  - the key/response is logically treated as a single wide N-bit value;
> + *  - fields have been placed in these logical values per the "lbn" and "width"
> + *    information from the table field descriptors;
> + *  - the wide N-bit value is padded at the MSB end up to a 32-bit boundary;
> + *  - the values are put into the table op request with bits[31:0] of the wide
> + *    value in the first 32-bit word, bits[63:32] in the second 32-bit word, etc.
> + *
> + * Below is an API that helps to form  MCDI insertion/deletion request.
> + * Workflow:
> + * 1) Allocate an array of EFX_TABLE_ENTRY_LENGTH_MAX bytes.
> + * 2) Read a descriptor of the table that you want to use.
> + * 3) Fill the array using sfc_tbls_field_set_* functions to form a key.
> + *    Each field of the key has LBN and width. This information can be
> + *    found in a field's descriptor.
> + * 4) Use sfc_tbls_next_req_fields() to get a pointer where the response
> + *    must start. It's required as the key and response need to be
> + *    zero-padded at the MSB end to multiples of 32 bits.
> + * 5) Fill the response the same way.
> + * 6) Use sfc_tbls_next_req_fields() to get the end of the data request.
> + *    It will help you to get the real size of the data request.
> + */
> +
> +/**
> + * Get a pointer to the beginning of the next 32-bit wide fields
> + * that go after a given width.
> + * It should be used to get a pointer to the response's start and the end
> + * of the data for an MCDI request.
> + *
> + * @param data		Pointer to the data to make an offset from
> + * @param width		Width of fields to offset
> + *
> + * @note @p width is expected to be a key's or response's size.
> + *
> + * @return Pointer to the beginning of the next field.
> + */
> +static inline uint32_t *
> +sfc_tbls_next_req_fields(uint32_t *data, uint16_t width) {

Wrong position of open curly bracket.

> +	return data + EFX_DIV_ROUND_UP(width, sizeof(*data) * CHAR_BIT);
> +}
> +
> +/**
> + * Insert value into a field in the @p data buffer starting at
> + * bit offset @p lbn and containing @p width bits.
> + *
> + * @param data		Data buffer
> + * @param data_size	Size of the data buffer
> + * @param lbn		Offset
> + * @param width		Width of @p value in bits
> + * @param value		uint32_t value to insert
> + *
> + * @note @p width and @p lbn must to be obtained from the field's descriptor.
> + */
> +void sfc_tbls_field_set_u32(uint32_t data[], unsigned int data_size,
> +			    uint16_t lbn, uint16_t width, uint32_t value);
> +
> +/**
> + * Insert value into a field in the @p data buffer starting at
> + * bit offset @p lbn and containing @p width bits.
> + *
> + * @param data		Data buffer
> + * @param data_size	Size of the data buffer
> + * @param lbn		Offset
> + * @param width		Width of @p value in bits
> + * @param value		uint16_t value to insert
> + *
> + * @note @p width and @p lbn must to be obtained from the field's descriptor.
> + */
> +void sfc_tbls_field_set_u16(uint32_t data[], unsigned int data_size,
> +			    uint16_t lbn, uint16_t width, uint16_t value);
> +
> +/**
> + * Insert value into a field in the @p data buffer starting at
> + * bit offset @p lbn and containing @p width bits.
> + *
> + * @param data		Data buffer
> + * @param data_size	Size of the data buffer
> + * @param lbn		Offset
> + * @param width		Width of @p value in bits
> + * @param value		uint8_t value to insert
> + *
> + * @note @p width and @p lbn must to be obtained from the field's descriptor.
> + */
> +void sfc_tbls_field_set_u8(uint32_t data[], unsigned int data_size,
> +			   uint16_t lbn, uint16_t width, uint8_t value);
> +
> +/**
> + * Insert IP address into a field in the @p data buffer starting at
> + * bit offset @p lbn and containing @p width bits.
> + *
> + * @param data		Data buffer
> + * @param data_size	Size of the data buffer
> + * @param lbn		Offset
> + * @param width		Width of @p value in bits
> + * @param ip		IP address to insert
> + *
> + * @note @p width and @p lbn must to be obtained from the field's descriptor.
> + */
> +void sfc_tbls_field_set_ip(uint32_t data[], unsigned int data_size,
> +			   uint16_t lbn, uint16_t width, const uint32_t *ip);
> +
> +/**
> + * Insert value into a field in the data buffer starting at
> + * bit offset @p lbn and containing @p width bits.
> + *
> + * @param data		Data buffer
> + * @param data_size	Size of the data buffer
> + * @param lbn		Offset
> + * @param width		Width of @p value in bits
> + * @param value		uint64_t value to insert
> + *
> + * @note @p width and @p lbn must to be obtained from the field's descriptor.
> + */
> +void sfc_tbls_field_set_u64(uint32_t data[], unsigned int data_size,
> +			    uint16_t lbn, uint16_t width, uint64_t value);
> +
> +/**
> + * Insert value into a field in the @p data buffer starting at
> + * bit offset @p lbn and containing @p width bits.
> + *
> + * @param data		Data buffer
> + * @param data_size	Size of the data buffer
> + * @param lbn		Offset
> + * @param width		Width of @p value in bits
> + * @param value		Bit value to insert
> + *
> + * @note @p width and @p lbn must to be obtained from the field's descriptor.
> + */
> +void sfc_tbls_field_set_bit(uint32_t data[], unsigned int data_size,
> +			    uint16_t lbn, uint16_t width, bool value);
> +
>   #ifdef __cplusplus
>   }
>   #endif


  reply	other threads:[~2023-06-07 12:00 UTC|newest]

Thread overview: 156+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-01 19:55 [PATCH 00/34] net/sfc: support HW conntrack assistance Ivan Malov
2023-06-01 19:55 ` [PATCH 01/34] common/sfc_efx/base: update MCDI headers Ivan Malov
2023-06-01 19:55 ` [PATCH 02/34] common/sfc_efx/base: detect MCDI Table Access API support Ivan Malov
2023-06-01 19:55 ` [PATCH 03/34] common/sfc_efx/base: add API to list HW tables Ivan Malov
2023-06-01 19:55 ` [PATCH 04/34] common/sfc_efx/base: add macro to get indexed QWORD field Ivan Malov
2023-06-01 19:55 ` [PATCH 05/34] common/sfc_efx/base: add API to get HW table desc Ivan Malov
2023-06-01 19:55 ` [PATCH 06/34] common/sfc_efx/base: add API to insert data to HW table Ivan Malov
2023-06-01 19:55 ` [PATCH 07/34] common/sfc_efx/base: add API to delete entry from " Ivan Malov
2023-06-01 19:55 ` [PATCH 08/34] net/sfc: add MCDI wrappers for BCAM tables Ivan Malov
2023-06-01 19:55 ` [PATCH 09/34] net/sfc: add functions to manipulate MCDI table fields Ivan Malov
2023-06-01 19:55 ` [PATCH 10/34] net/sfc: attach to HW table API Ivan Malov
2023-06-01 19:55 ` [PATCH 11/34] net/sfc: add API to manage HW Conntrack table Ivan Malov
2023-06-01 19:55 ` [PATCH 12/34] net/sfc: make entry pointer optional in MAE resource helpers Ivan Malov
2023-06-01 19:55 ` [PATCH 13/34] net/sfc: turn flow create/destroy methods into lock wrappers Ivan Malov
2023-06-01 19:55 ` [PATCH 14/34] net/sfc: let driver-internal flows use VF representor action Ivan Malov
2023-06-01 19:55 ` [PATCH 15/34] net/sfc: extend generic flow API to allow for internal flows Ivan Malov
2023-06-01 19:55 ` [PATCH 16/34] net/sfc: switch driver-internal flows to use generic methods Ivan Malov
2023-06-01 19:55 ` [PATCH 17/34] net/sfc: move MAE flow parsing method to MAE-specific source Ivan Malov
2023-06-01 19:55 ` [PATCH 18/34] net/sfc: move MAE counter stream start to action set handler Ivan Malov
2023-06-01 19:55 ` [PATCH 19/34] net/sfc: prepare MAE outer rules for action rule indirection Ivan Malov
2023-06-01 19:55 ` [PATCH 20/34] net/sfc: turn MAE flow action rules into shareable resources Ivan Malov
2023-06-01 19:55 ` [PATCH 21/34] common/sfc_efx/base: provide an API to clone MAE match specs Ivan Malov
2023-06-01 19:55 ` [PATCH 22/34] common/sfc_efx/base: add API to read back MAE match criteria Ivan Malov
2023-06-01 19:55 ` [PATCH 23/34] common/sfc_efx/base: match on conntrack mark in action rules Ivan Malov
2023-06-01 19:55 ` [PATCH 24/34] common/sfc_efx/base: add API to request MAE conntrack lookup Ivan Malov
2023-06-01 19:55 ` [PATCH 25/34] net/sfc: make use of conntrack assistance for transfer flows Ivan Malov
2023-06-01 19:55 ` [PATCH 26/34] common/sfc_efx/base: support NAT edits in MAE Ivan Malov
2023-06-01 19:55 ` [PATCH 27/34] net/sfc: add support for IPv4 NAT offload to MAE backend Ivan Malov
2023-06-01 19:55 ` [PATCH 28/34] net/sfc: rename SW structures used by transfer flow counters Ivan Malov
2023-06-01 19:55 ` [PATCH 29/34] net/sfc: rework MAE action rule counter representation in SW Ivan Malov
2023-06-01 19:55 ` [PATCH 30/34] net/sfc: support indirect count action in transfer flows Ivan Malov
2023-06-01 19:55 ` [PATCH 31/34] common/sfc_efx/base: rework MAE counter provisioning helpers Ivan Malov
2023-06-01 19:55 ` [PATCH 32/34] net/sfc: indicate MAE counter type in use for transfer flows Ivan Malov
2023-06-01 19:55 ` [PATCH 33/34] common/sfc_efx/base: support conntrack assistance counters Ivan Malov
2023-06-01 19:55 ` [PATCH 34/34] net/sfc: use conntrack assistance counters in transfer flows Ivan Malov
2023-06-04  0:00 ` [PATCH v2 00/34] net/sfc: support HW conntrack assistance Ivan Malov
2023-06-04  0:00   ` [PATCH v2 01/34] common/sfc_efx/base: update MCDI headers Ivan Malov
2023-06-04  0:00   ` [PATCH v2 02/34] common/sfc_efx/base: detect MCDI Table Access API support Ivan Malov
2023-06-04  0:00   ` [PATCH v2 03/34] common/sfc_efx/base: add API to list HW tables Ivan Malov
2023-06-04  0:00   ` [PATCH v2 04/34] common/sfc_efx/base: add macro to get indexed QWORD field Ivan Malov
2023-06-04  0:00   ` [PATCH v2 05/34] common/sfc_efx/base: add API to get HW table desc Ivan Malov
2023-06-04  0:00   ` [PATCH v2 06/34] common/sfc_efx/base: add API to insert data to HW table Ivan Malov
2023-06-04  0:00   ` [PATCH v2 07/34] common/sfc_efx/base: add API to delete entry from " Ivan Malov
2023-06-04  0:00   ` [PATCH v2 08/34] net/sfc: add MCDI wrappers for BCAM tables Ivan Malov
2023-06-04  0:00   ` [PATCH v2 09/34] net/sfc: add functions to manipulate MCDI table fields Ivan Malov
2023-06-04  0:00   ` [PATCH v2 10/34] net/sfc: attach to HW table API Ivan Malov
2023-06-04  0:00   ` [PATCH v2 11/34] net/sfc: add API to manage HW Conntrack table Ivan Malov
2023-06-04  0:00   ` [PATCH v2 12/34] net/sfc: make entry pointer optional in MAE resource helpers Ivan Malov
2023-06-04  0:00   ` [PATCH v2 13/34] net/sfc: turn flow create/destroy methods into lock wrappers Ivan Malov
2023-06-04  0:00   ` [PATCH v2 14/34] net/sfc: let driver-internal flows use VF representor action Ivan Malov
2023-06-04  0:00   ` [PATCH v2 15/34] net/sfc: extend generic flow API to allow for internal flows Ivan Malov
2023-06-04  0:00   ` [PATCH v2 16/34] net/sfc: switch driver-internal flows to use generic methods Ivan Malov
2023-06-04  0:00   ` [PATCH v2 17/34] net/sfc: move MAE flow parsing method to MAE-specific source Ivan Malov
2023-06-04  0:00   ` [PATCH v2 18/34] net/sfc: move MAE counter stream start to action set handler Ivan Malov
2023-06-04  0:00   ` [PATCH v2 19/34] net/sfc: prepare MAE outer rules for action rule indirection Ivan Malov
2023-06-04  0:00   ` [PATCH v2 20/34] net/sfc: turn MAE flow action rules into shareable resources Ivan Malov
2023-06-04  0:00   ` [PATCH v2 21/34] common/sfc_efx/base: provide an API to clone MAE match specs Ivan Malov
2023-06-04  0:00   ` [PATCH v2 22/34] common/sfc_efx/base: add API to read back MAE match criteria Ivan Malov
2023-06-04  0:00   ` [PATCH v2 23/34] common/sfc_efx/base: match on conntrack mark in action rules Ivan Malov
2023-06-04  0:00   ` [PATCH v2 24/34] common/sfc_efx/base: add API to request MAE conntrack lookup Ivan Malov
2023-06-04  0:00   ` [PATCH v2 25/34] net/sfc: make use of conntrack assistance for transfer flows Ivan Malov
2023-06-04  0:00   ` [PATCH v2 26/34] common/sfc_efx/base: support NAT edits in MAE Ivan Malov
2023-06-04  0:00   ` [PATCH v2 27/34] net/sfc: add support for IPv4 NAT offload to MAE backend Ivan Malov
2023-06-04  0:00   ` [PATCH v2 28/34] net/sfc: rename SW structures used by transfer flow counters Ivan Malov
2023-06-04  0:00   ` [PATCH v2 29/34] net/sfc: rework MAE action rule counter representation in SW Ivan Malov
2023-06-04  0:00   ` [PATCH v2 30/34] net/sfc: support indirect count action in transfer flows Ivan Malov
2023-06-04  0:00   ` [PATCH v2 31/34] common/sfc_efx/base: rework MAE counter provisioning helpers Ivan Malov
2023-06-04  0:00   ` [PATCH v2 32/34] net/sfc: indicate MAE counter type in use for transfer flows Ivan Malov
2023-06-04  0:00   ` [PATCH v2 33/34] common/sfc_efx/base: support conntrack assistance counters Ivan Malov
2023-06-04  0:00   ` [PATCH v2 34/34] net/sfc: use conntrack assistance counters in transfer flows Ivan Malov
2023-06-04 23:24 ` [PATCH v3 00/34] net/sfc: support HW conntrack assistance Ivan Malov
2023-06-04 23:24   ` [PATCH v3 01/34] common/sfc_efx/base: update MCDI headers Ivan Malov
2023-06-04 23:24   ` [PATCH v3 02/34] common/sfc_efx/base: detect MCDI Table Access API support Ivan Malov
2023-06-04 23:24   ` [PATCH v3 03/34] common/sfc_efx/base: add API to list HW tables Ivan Malov
2023-06-04 23:24   ` [PATCH v3 04/34] common/sfc_efx/base: add macro to get indexed QWORD field Ivan Malov
2023-06-04 23:24   ` [PATCH v3 05/34] common/sfc_efx/base: add API to get HW table desc Ivan Malov
2023-06-07 11:47     ` Andrew Rybchenko
2023-06-07 12:06     ` Andrew Rybchenko
2023-06-04 23:24   ` [PATCH v3 06/34] common/sfc_efx/base: add API to insert data to HW table Ivan Malov
2023-06-04 23:24   ` [PATCH v3 07/34] common/sfc_efx/base: add API to delete entry from " Ivan Malov
2023-06-04 23:24   ` [PATCH v3 08/34] net/sfc: add MCDI wrappers for BCAM tables Ivan Malov
2023-06-07 11:53     ` Andrew Rybchenko
2023-06-04 23:24   ` [PATCH v3 09/34] net/sfc: add functions to manipulate MCDI table fields Ivan Malov
2023-06-07 12:00     ` Andrew Rybchenko [this message]
2023-06-04 23:24   ` [PATCH v3 10/34] net/sfc: attach to HW table API Ivan Malov
2023-06-07 12:08     ` Andrew Rybchenko
2023-06-04 23:25   ` [PATCH v3 11/34] net/sfc: add API to manage HW Conntrack table Ivan Malov
2023-06-04 23:25   ` [PATCH v3 12/34] net/sfc: make entry pointer optional in MAE resource helpers Ivan Malov
2023-06-04 23:25   ` [PATCH v3 13/34] net/sfc: turn flow create/destroy methods into lock wrappers Ivan Malov
2023-06-04 23:25   ` [PATCH v3 14/34] net/sfc: let driver-internal flows use VF representor action Ivan Malov
2023-06-04 23:25   ` [PATCH v3 15/34] net/sfc: extend generic flow API to allow for internal flows Ivan Malov
2023-06-04 23:25   ` [PATCH v3 16/34] net/sfc: switch driver-internal flows to use generic methods Ivan Malov
2023-06-04 23:25   ` [PATCH v3 17/34] net/sfc: move MAE flow parsing method to MAE-specific source Ivan Malov
2023-06-04 23:25   ` [PATCH v3 18/34] net/sfc: move MAE counter stream start to action set handler Ivan Malov
2023-06-04 23:25   ` [PATCH v3 19/34] net/sfc: prepare MAE outer rules for action rule indirection Ivan Malov
2023-06-04 23:25   ` [PATCH v3 20/34] net/sfc: turn MAE flow action rules into shareable resources Ivan Malov
2023-06-04 23:25   ` [PATCH v3 21/34] common/sfc_efx/base: provide an API to clone MAE match specs Ivan Malov
2023-06-04 23:25   ` [PATCH v3 22/34] common/sfc_efx/base: add API to read back MAE match criteria Ivan Malov
2023-06-04 23:25   ` [PATCH v3 23/34] common/sfc_efx/base: match on conntrack mark in action rules Ivan Malov
2023-06-04 23:25   ` [PATCH v3 24/34] common/sfc_efx/base: add API to request MAE conntrack lookup Ivan Malov
2023-06-04 23:25   ` [PATCH v3 25/34] net/sfc: make use of conntrack assistance for transfer flows Ivan Malov
2023-06-04 23:25   ` [PATCH v3 26/34] common/sfc_efx/base: support NAT edits in MAE Ivan Malov
2023-06-04 23:25   ` [PATCH v3 27/34] net/sfc: add support for IPv4 NAT offload to MAE backend Ivan Malov
2023-06-04 23:25   ` [PATCH v3 28/34] net/sfc: rename SW structures used by transfer flow counters Ivan Malov
2023-06-04 23:25   ` [PATCH v3 29/34] net/sfc: rework MAE action rule counter representation in SW Ivan Malov
2023-06-04 23:25   ` [PATCH v3 30/34] net/sfc: support indirect count action in transfer flows Ivan Malov
2023-06-04 23:25   ` [PATCH v3 31/34] common/sfc_efx/base: rework MAE counter provisioning helpers Ivan Malov
2023-06-04 23:25   ` [PATCH v3 32/34] net/sfc: indicate MAE counter type in use for transfer flows Ivan Malov
2023-06-04 23:25   ` [PATCH v3 33/34] common/sfc_efx/base: support conntrack assistance counters Ivan Malov
2023-06-04 23:25   ` [PATCH v3 34/34] net/sfc: use conntrack assistance counters in transfer flows Ivan Malov
2023-06-07 12:19   ` [PATCH v3 00/34] net/sfc: support HW conntrack assistance Andrew Rybchenko
2023-06-07 13:02 ` [PATCH v4 " Ivan Malov
2023-06-07 13:02   ` [PATCH v4 01/34] common/sfc_efx/base: update MCDI headers Ivan Malov
2023-06-21 16:52     ` Ferruh Yigit
2023-06-07 13:02   ` [PATCH v4 02/34] common/sfc_efx/base: detect MCDI Table Access API support Ivan Malov
2023-06-07 13:02   ` [PATCH v4 03/34] common/sfc_efx/base: add API to list HW tables Ivan Malov
2023-06-19 15:58     ` Ferruh Yigit
2023-06-21 11:09       ` Ivan Malov
2023-06-21 14:30         ` Ferruh Yigit
2023-06-07 13:02   ` [PATCH v4 04/34] common/sfc_efx/base: add macro to get indexed QWORD field Ivan Malov
2023-06-07 13:02   ` [PATCH v4 05/34] common/sfc_efx/base: add API to get HW table desc Ivan Malov
2023-06-07 13:02   ` [PATCH v4 06/34] common/sfc_efx/base: add API to insert data to HW table Ivan Malov
2023-06-07 13:02   ` [PATCH v4 07/34] common/sfc_efx/base: add API to delete entry from " Ivan Malov
2023-06-07 13:02   ` [PATCH v4 08/34] net/sfc: add MCDI wrappers for BCAM tables Ivan Malov
2023-06-07 13:02   ` [PATCH v4 09/34] net/sfc: add functions to manipulate MCDI table fields Ivan Malov
2023-06-07 13:02   ` [PATCH v4 10/34] net/sfc: attach to HW table API Ivan Malov
2023-06-07 13:02   ` [PATCH v4 11/34] net/sfc: add API to manage HW Conntrack table Ivan Malov
2023-06-07 13:02   ` [PATCH v4 12/34] net/sfc: make entry pointer optional in MAE resource helpers Ivan Malov
2023-06-07 13:02   ` [PATCH v4 13/34] net/sfc: turn flow create/destroy methods into lock wrappers Ivan Malov
2023-06-07 13:02   ` [PATCH v4 14/34] net/sfc: let driver-internal flows use VF representor action Ivan Malov
2023-06-07 13:02   ` [PATCH v4 15/34] net/sfc: extend generic flow API to allow for internal flows Ivan Malov
2023-06-07 13:02   ` [PATCH v4 16/34] net/sfc: switch driver-internal flows to use generic methods Ivan Malov
2023-06-07 13:02   ` [PATCH v4 17/34] net/sfc: move MAE flow parsing method to MAE-specific source Ivan Malov
2023-06-07 13:02   ` [PATCH v4 18/34] net/sfc: move MAE counter stream start to action set handler Ivan Malov
2023-06-07 13:02   ` [PATCH v4 19/34] net/sfc: prepare MAE outer rules for action rule indirection Ivan Malov
2023-06-07 13:02   ` [PATCH v4 20/34] net/sfc: turn MAE flow action rules into shareable resources Ivan Malov
2023-06-07 13:02   ` [PATCH v4 21/34] common/sfc_efx/base: provide an API to clone MAE match specs Ivan Malov
2023-06-07 13:02   ` [PATCH v4 22/34] common/sfc_efx/base: add API to read back MAE match criteria Ivan Malov
2023-06-07 13:02   ` [PATCH v4 23/34] common/sfc_efx/base: match on conntrack mark in action rules Ivan Malov
2023-06-26 13:07     ` Thomas Monjalon
2023-06-07 13:02   ` [PATCH v4 24/34] common/sfc_efx/base: add API to request MAE conntrack lookup Ivan Malov
2023-06-07 13:02   ` [PATCH v4 25/34] net/sfc: make use of conntrack assistance for transfer flows Ivan Malov
2023-06-07 13:02   ` [PATCH v4 26/34] common/sfc_efx/base: support NAT edits in MAE Ivan Malov
2023-06-07 13:02   ` [PATCH v4 27/34] net/sfc: add support for IPv4 NAT offload to MAE backend Ivan Malov
2023-06-21 16:50     ` Ferruh Yigit
2023-06-07 13:02   ` [PATCH v4 28/34] net/sfc: rename SW structures used by transfer flow counters Ivan Malov
2023-06-07 13:02   ` [PATCH v4 29/34] net/sfc: rework MAE action rule counter representation in SW Ivan Malov
2023-06-07 13:02   ` [PATCH v4 30/34] net/sfc: support indirect count action in transfer flows Ivan Malov
2023-06-07 13:02   ` [PATCH v4 31/34] common/sfc_efx/base: rework MAE counter provisioning helpers Ivan Malov
2023-06-07 13:02   ` [PATCH v4 32/34] net/sfc: indicate MAE counter type in use for transfer flows Ivan Malov
2023-06-07 13:02   ` [PATCH v4 33/34] common/sfc_efx/base: support conntrack assistance counters Ivan Malov
2023-06-07 13:02   ` [PATCH v4 34/34] net/sfc: use conntrack assistance counters in transfer flows Ivan Malov
2023-06-08 12:33   ` [PATCH v4 00/34] net/sfc: support HW conntrack assistance Andrew Rybchenko
2023-06-19 15:58     ` Ferruh Yigit
2023-06-19 15:45   ` Ferruh Yigit
2023-06-21 16:53   ` Ferruh Yigit

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=facc95c4-1d98-bb27-73d7-ef6dfc8b09e8@oktetlabs.ru \
    --to=andrew.rybchenko@oktetlabs.ru \
    --cc=amoreton@xilinx.com \
    --cc=denis.pryazhennikov@arknetworks.am \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@amd.com \
    --cc=ivan.malov@arknetworks.am \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).