From: Ivan Malov <ivan.malov@arknetworks.am>
To: dev@dpdk.org
Cc: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>,
Ferruh Yigit <ferruh.yigit@amd.com>,
Andy Moreton <amoreton@xilinx.com>
Subject: [PATCH v3 32/34] net/sfc: indicate MAE counter type in use for transfer flows
Date: Mon, 5 Jun 2023 03:25:21 +0400 [thread overview]
Message-ID: <20230604232523.6746-33-ivan.malov@arknetworks.am> (raw)
In-Reply-To: <20230604232523.6746-1-ivan.malov@arknetworks.am>
Doing so assists adding support for additional counter types.
Current implementation is only aware of action rule counters
that are supported by the match-action engine (MAE) on EF100
NICs, but MAE may also support conntrack assistance counters.
Signed-off-by: Ivan Malov <ivan.malov@arknetworks.am>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
---
drivers/net/sfc/sfc_mae.c | 56 ++++++++++++++--------
drivers/net/sfc/sfc_mae.h | 7 ++-
drivers/net/sfc/sfc_mae_counter.c | 77 +++++++++++++++++++++++--------
drivers/net/sfc/sfc_mae_counter.h | 2 +-
4 files changed, 100 insertions(+), 42 deletions(-)
diff --git a/drivers/net/sfc/sfc_mae.c b/drivers/net/sfc/sfc_mae.c
index e79df3b56a..7353d04af8 100644
--- a/drivers/net/sfc/sfc_mae.c
+++ b/drivers/net/sfc/sfc_mae.c
@@ -65,15 +65,24 @@ sfc_mae_assign_entity_mport(struct sfc_adapter *sa,
static int
sfc_mae_counter_registry_init(struct sfc_mae_counter_registry *registry,
- uint32_t nb_counters_max)
+ uint32_t nb_action_counters_max)
{
- return sfc_mae_counters_init(®istry->counters, nb_counters_max);
+ int ret;
+
+ ret = sfc_mae_counters_init(®istry->action_counters,
+ nb_action_counters_max);
+ if (ret != 0)
+ return ret;
+
+ registry->action_counters.type = EFX_COUNTER_TYPE_ACTION;
+
+ return 0;
}
static void
sfc_mae_counter_registry_fini(struct sfc_mae_counter_registry *registry)
{
- sfc_mae_counters_fini(®istry->counters);
+ sfc_mae_counters_fini(®istry->action_counters);
}
struct rte_flow *
@@ -153,10 +162,10 @@ sfc_mae_attach(struct sfc_adapter *sa)
sfc_log_init(sa, "init MAE counter record registry");
rc = sfc_mae_counter_registry_init(&mae->counter_registry,
- limits.eml_max_n_counters);
+ limits.eml_max_n_action_counters);
if (rc != 0) {
- sfc_err(sa, "failed to init MAE counters registry for %u entries: %s",
- limits.eml_max_n_counters, rte_strerror(rc));
+ sfc_err(sa, "failed to init record registry for %u AR counters: %s",
+ limits.eml_max_n_action_counters, rte_strerror(rc));
goto fail_counter_registry_init;
}
}
@@ -833,6 +842,9 @@ sfc_mae_counter_add(struct sfc_adapter *sa,
if (counter_tmp != NULL) {
counter->rte_id_valid = counter_tmp->rte_id_valid;
counter->rte_id = counter_tmp->rte_id;
+ counter->type = counter_tmp->type;
+ } else {
+ counter->type = EFX_COUNTER_TYPE_ACTION;
}
counter->fw_rsrc.counter_id.id = EFX_MAE_RSRC_ID_INVALID;
@@ -864,8 +876,8 @@ sfc_mae_counter_del(struct sfc_adapter *sa, struct sfc_mae_counter *counter)
if (counter->fw_rsrc.counter_id.id != EFX_MAE_RSRC_ID_INVALID ||
counter->fw_rsrc.refcnt != 0) {
- sfc_err(sa, "deleting counter=%p abandons its FW resource: COUNTER_ID=0x%08x, refcnt=%u",
- counter, counter->fw_rsrc.counter_id.id,
+ sfc_err(sa, "deleting counter=%p abandons its FW resource: COUNTER_ID=0x%x-#%u, refcnt=%u",
+ counter, counter->type, counter->fw_rsrc.counter_id.id,
counter->fw_rsrc.refcnt);
}
@@ -916,8 +928,8 @@ sfc_mae_counter_enable(struct sfc_adapter *sa, struct sfc_mae_counter *counter,
}
if (fw_rsrc->refcnt == 0) {
- sfc_dbg(sa, "enabled counter=%p: COUNTER_ID=0x%08x",
- counter, fw_rsrc->counter_id.id);
+ sfc_dbg(sa, "enabled counter=%p: COUNTER_ID=0x%x-#%u",
+ counter, counter->type, fw_rsrc->counter_id.id);
}
++(fw_rsrc->refcnt);
@@ -940,8 +952,8 @@ sfc_mae_counter_disable(struct sfc_adapter *sa, struct sfc_mae_counter *counter)
if (fw_rsrc->counter_id.id == EFX_MAE_RSRC_ID_INVALID ||
fw_rsrc->refcnt == 0) {
- sfc_err(sa, "failed to disable counter=%p: already disabled; COUNTER_ID=0x%08x, refcnt=%u",
- counter, fw_rsrc->counter_id.id, fw_rsrc->refcnt);
+ sfc_err(sa, "failed to disable counter=%p: already disabled; COUNTER_ID=0x%x-#%u, refcnt=%u",
+ counter, counter->type, fw_rsrc->counter_id.id, fw_rsrc->refcnt);
return;
}
@@ -950,11 +962,11 @@ sfc_mae_counter_disable(struct sfc_adapter *sa, struct sfc_mae_counter *counter)
rc = sfc_mae_counter_fw_rsrc_disable(sa, counter);
if (rc == 0) {
- sfc_dbg(sa, "disabled counter=%p with COUNTER_ID=0x%08x",
- counter, counter_id);
+ sfc_dbg(sa, "disabled counter=%p with COUNTER_ID=0x%x-#%u",
+ counter, counter->type, counter_id);
} else {
- sfc_err(sa, "failed to disable counter=%p with COUNTER_ID=0x%08x: %s",
- counter, counter_id, strerror(rc));
+ sfc_err(sa, "failed to disable counter=%p with COUNTER_ID=0x%x-#%u: %s",
+ counter, counter->type, counter_id, strerror(rc));
}
fw_rsrc->counter_id.id = EFX_MAE_RSRC_ID_INVALID;
@@ -3952,6 +3964,7 @@ sfc_mae_rule_parse_action_mark(struct sfc_adapter *sa,
static int
sfc_mae_rule_parse_action_count(struct sfc_adapter *sa,
const struct rte_flow_action_count *conf,
+ efx_counter_type_t mae_counter_type,
struct sfc_mae_counter **counterp,
efx_mae_actions_t *spec)
{
@@ -3991,6 +4004,8 @@ sfc_mae_rule_parse_action_count(struct sfc_adapter *sa,
counter_tmp.rte_id = conf->id;
}
+ counter_tmp.type = mae_counter_type;
+
return sfc_mae_counter_add(sa, &counter_tmp, counterp);
return 0;
@@ -4215,6 +4230,7 @@ sfc_mae_rule_parse_action(struct sfc_adapter *sa,
{
struct sfc_flow_spec_mae *spec_mae = &flow->spec.mae;
const struct sfc_mae_outer_rule *outer_rule = spec_mae->outer_rule;
+ efx_counter_type_t mae_counter_type = EFX_COUNTER_TYPE_ACTION;
const uint64_t rx_metadata = sa->negotiated_rx_metadata;
struct sfc_mae_counter **counterp = &ctx->counter;
efx_mae_actions_t *spec = ctx->spec;
@@ -4307,6 +4323,7 @@ sfc_mae_rule_parse_action(struct sfc_adapter *sa,
SFC_BUILD_SET_OVERFLOW(RTE_FLOW_ACTION_TYPE_COUNT,
bundle->actions_mask);
rc = sfc_mae_rule_parse_action_count(sa, action->conf,
+ mae_counter_type,
counterp, spec_ptr);
break;
case RTE_FLOW_ACTION_TYPE_INDIRECT:
@@ -4885,8 +4902,7 @@ sfc_mae_query_counter(struct sfc_adapter *sa,
if (conf == NULL ||
(counter->rte_id_valid && conf->id == counter->rte_id)) {
- rc = sfc_mae_counter_get(&sa->mae.counter_registry.counters,
- counter, data);
+ rc = sfc_mae_counter_get(sa, counter, data);
if (rc != 0) {
return rte_flow_error_set(error, EINVAL,
RTE_FLOW_ERROR_TYPE_ACTION, action,
@@ -5000,6 +5016,7 @@ sfc_mae_indir_action_create(struct sfc_adapter *sa,
switch (action->type) {
case RTE_FLOW_ACTION_TYPE_COUNT:
ret = sfc_mae_rule_parse_action_count(sa, action->conf,
+ EFX_COUNTER_TYPE_ACTION,
&handle->counter, NULL);
if (ret == 0)
handle->counter->indirect = true;
@@ -5063,8 +5080,7 @@ sfc_mae_indir_action_query(struct sfc_adapter *sa,
if (handle->counter->fw_rsrc.refcnt == 0)
goto fail_not_in_use;
- ret = sfc_mae_counter_get(&sa->mae.counter_registry.counters,
- handle->counter, data);
+ ret = sfc_mae_counter_get(sa, handle->counter, data);
if (ret != 0)
goto fail_counter_get;
diff --git a/drivers/net/sfc/sfc_mae.h b/drivers/net/sfc/sfc_mae.h
index e7b7d3a35e..3a3a5225fd 100644
--- a/drivers/net/sfc/sfc_mae.h
+++ b/drivers/net/sfc/sfc_mae.h
@@ -86,6 +86,7 @@ struct sfc_mae_counter {
struct sfc_mae_fw_rsrc fw_rsrc;
bool indirect;
+ efx_counter_type_t type;
};
TAILQ_HEAD(sfc_mae_counters, sfc_mae_counter);
@@ -157,6 +158,8 @@ struct sfc_mae_counter_records {
struct sfc_mae_counters_xstats xstats;
/** Count of all MAE counters */
unsigned int n_mae_counters;
+ /** Counter type, for logging */
+ efx_counter_type_t type;
};
/** Options for MAE counter polling mode */
@@ -168,8 +171,8 @@ enum sfc_mae_counter_polling_mode {
struct sfc_mae_counter_registry {
/* Common counter information */
- /** Counters collection */
- struct sfc_mae_counter_records counters;
+ /** Action rule counter record collection */
+ struct sfc_mae_counter_records action_counters;
/* Information used by counter update service */
/** Callback to get packets from RxQ */
diff --git a/drivers/net/sfc/sfc_mae_counter.c b/drivers/net/sfc/sfc_mae_counter.c
index 90b89e81c6..47448cba15 100644
--- a/drivers/net/sfc/sfc_mae_counter.c
+++ b/drivers/net/sfc/sfc_mae_counter.c
@@ -80,19 +80,28 @@ sfc_mae_counter_fw_rsrc_enable(struct sfc_adapter *sa,
struct sfc_mae_counter *counterp)
{
struct sfc_mae_counter_registry *reg = &sa->mae.counter_registry;
- struct sfc_mae_counter_records *counters = ®->counters;
+ struct sfc_mae_counter_records *counters;
struct sfc_mae_counter_record *p;
efx_counter_t mae_counter;
uint32_t generation_count;
uint32_t unused;
int rc;
+ switch (counterp->type) {
+ case EFX_COUNTER_TYPE_ACTION:
+ counters = ®->action_counters;
+ break;
+ default:
+ rc = EINVAL;
+ goto fail_counter_type_check;
+ }
+
/*
* The actual count of counters allocated is ignored since a failure
* to allocate a single counter is indicated by non-zero return code.
*/
- rc = efx_mae_counters_alloc(sa->nic, 1, &unused, &mae_counter,
- &generation_count);
+ rc = efx_mae_counters_alloc_type(sa->nic, counterp->type, 1, &unused,
+ &mae_counter, &generation_count);
if (rc != 0) {
sfc_err(sa, "failed to alloc MAE counter: %s",
rte_strerror(rc));
@@ -132,16 +141,18 @@ sfc_mae_counter_fw_rsrc_enable(struct sfc_adapter *sa,
*/
__atomic_store_n(&p->inuse, true, __ATOMIC_RELEASE);
- sfc_info(sa, "enabled MAE counter #%u with reset pkts=%" PRIu64
- " bytes=%" PRIu64, mae_counter.id,
+ sfc_info(sa, "enabled MAE counter 0x%x-#%u with reset pkts=%" PRIu64
+ " bytes=%" PRIu64, counterp->type, mae_counter.id,
p->reset.pkts, p->reset.bytes);
return 0;
fail_counter_id_range:
- (void)efx_mae_counters_free(sa->nic, 1, &unused, &mae_counter, NULL);
+ (void)efx_mae_counters_free_type(sa->nic, counterp->type, 1, &unused,
+ &mae_counter, NULL);
fail_mae_counter_alloc:
+fail_counter_type_check:
sfc_log_init(sa, "failed: %s", rte_strerror(rc));
return rc;
}
@@ -151,12 +162,20 @@ sfc_mae_counter_fw_rsrc_disable(struct sfc_adapter *sa,
struct sfc_mae_counter *counter)
{
struct sfc_mae_counter_registry *reg = &sa->mae.counter_registry;
- struct sfc_mae_counter_records *counters = ®->counters;
efx_counter_t *mae_counter = &counter->fw_rsrc.counter_id;
+ struct sfc_mae_counter_records *counters;
struct sfc_mae_counter_record *p;
uint32_t unused;
int rc;
+ switch (counter->type) {
+ case EFX_COUNTER_TYPE_ACTION:
+ counters = ®->action_counters;
+ break;
+ default:
+ return EINVAL;
+ }
+
SFC_ASSERT(mae_counter->id < counters->n_mae_counters);
/*
* The flag is set at the very end of add operation and reset
@@ -166,13 +185,14 @@ sfc_mae_counter_fw_rsrc_disable(struct sfc_adapter *sa,
p = &counters->mae_counters[mae_counter->id];
__atomic_store_n(&p->inuse, false, __ATOMIC_RELEASE);
- rc = efx_mae_counters_free(sa->nic, 1, &unused, mae_counter, NULL);
+ rc = efx_mae_counters_free_type(sa->nic, counter->type, 1, &unused,
+ mae_counter, NULL);
if (rc != 0)
- sfc_err(sa, "failed to free MAE counter %u: %s",
- mae_counter->id, rte_strerror(rc));
+ sfc_err(sa, "failed to free MAE counter 0x%x-#%u: %s",
+ counter->type, mae_counter->id, rte_strerror(rc));
- sfc_info(sa, "disabled MAE counter #%u with reset pkts=%" PRIu64
- " bytes=%" PRIu64, mae_counter->id,
+ sfc_info(sa, "disabled MAE counter 0x%x-#%u with reset pkts=%" PRIu64
+ " bytes=%" PRIu64, counter->type, mae_counter->id,
p->reset.pkts, p->reset.bytes);
/*
@@ -243,8 +263,8 @@ sfc_mae_counter_increment(struct sfc_adapter *sa,
__ATOMIC_RELAXED);
}
- sfc_info(sa, "update MAE counter #%u: pkts+%" PRIu64 "=%" PRIu64
- ", bytes+%" PRIu64 "=%" PRIu64, mae_counter_id,
+ sfc_info(sa, "update MAE counter 0x%x-#%u: pkts+%" PRIu64 "=%" PRIu64
+ ", bytes+%" PRIu64 "=%" PRIu64, counters->type, mae_counter_id,
pkts, cnt_val.pkts, bytes, cnt_val.bytes);
}
@@ -253,6 +273,7 @@ sfc_mae_parse_counter_packet(struct sfc_adapter *sa,
struct sfc_mae_counter_registry *counter_registry,
const struct rte_mbuf *m)
{
+ struct sfc_mae_counter_records *counters;
uint32_t generation_count;
const efx_xword_t *hdr;
const efx_oword_t *counters_data;
@@ -293,7 +314,12 @@ sfc_mae_parse_counter_packet(struct sfc_adapter *sa,
}
id = EFX_XWORD_FIELD(*hdr, ERF_SC_PACKETISER_HEADER_IDENTIFIER);
- if (unlikely(id != ERF_SC_PACKETISER_HEADER_IDENTIFIER_AR)) {
+
+ switch (id) {
+ case ERF_SC_PACKETISER_HEADER_IDENTIFIER_AR:
+ counters = &counter_registry->action_counters;
+ break;
+ default:
sfc_err(sa, "unexpected MAE counters source identifier %u", id);
return;
}
@@ -367,7 +393,7 @@ sfc_mae_parse_counter_packet(struct sfc_adapter *sa,
EFX_OWORD_FIELD32(counters_data[i],
ERF_SC_PACKETISER_PAYLOAD_BYTE_COUNT_HI);
sfc_mae_counter_increment(sa,
- &counter_registry->counters,
+ counters,
EFX_OWORD_FIELD32(counters_data[i],
ERF_SC_PACKETISER_PAYLOAD_COUNTER_INDEX),
generation_count,
@@ -941,14 +967,25 @@ sfc_mae_counter_start(struct sfc_adapter *sa)
}
int
-sfc_mae_counter_get(struct sfc_mae_counter_records *counters,
+sfc_mae_counter_get(struct sfc_adapter *sa,
const struct sfc_mae_counter *counter,
struct rte_flow_query_count *data)
{
struct sfc_ft_ctx *ft_ctx = counter->ft_ctx;
+ struct sfc_mae_counter_records *counters;
uint64_t non_reset_tunnel_hit_counter;
struct sfc_mae_counter_record *p;
union sfc_pkts_bytes value;
+ bool need_byte_count;
+
+ switch (counter->type) {
+ case EFX_COUNTER_TYPE_ACTION:
+ counters = &sa->mae.counter_registry.action_counters;
+ need_byte_count = true;
+ break;
+ default:
+ return EINVAL;
+ }
SFC_ASSERT(counter->fw_rsrc.counter_id.id < counters->n_mae_counters);
p = &counters->mae_counters[counter->fw_rsrc.counter_id.id];
@@ -968,7 +1005,7 @@ sfc_mae_counter_get(struct sfc_mae_counter_records *counters,
data->hits += ft_ctx->switch_hit_counter;
non_reset_tunnel_hit_counter = data->hits;
data->hits -= ft_ctx->reset_tunnel_hit_counter;
- } else {
+ } else if (need_byte_count) {
data->bytes_set = 1;
data->bytes = value.bytes - p->reset.bytes;
}
@@ -979,7 +1016,9 @@ sfc_mae_counter_get(struct sfc_mae_counter_records *counters,
non_reset_tunnel_hit_counter;
} else {
p->reset.pkts = value.pkts;
- p->reset.bytes = value.bytes;
+
+ if (need_byte_count)
+ p->reset.bytes = value.bytes;
}
}
diff --git a/drivers/net/sfc/sfc_mae_counter.h b/drivers/net/sfc/sfc_mae_counter.h
index 9c6d8103ac..effb037799 100644
--- a/drivers/net/sfc/sfc_mae_counter.h
+++ b/drivers/net/sfc/sfc_mae_counter.h
@@ -45,7 +45,7 @@ int sfc_mae_counter_fw_rsrc_enable(struct sfc_adapter *sa,
struct sfc_mae_counter *counterp);
int sfc_mae_counter_fw_rsrc_disable(struct sfc_adapter *sa,
struct sfc_mae_counter *counter);
-int sfc_mae_counter_get(struct sfc_mae_counter_records *counters,
+int sfc_mae_counter_get(struct sfc_adapter *sa,
const struct sfc_mae_counter *counter,
struct rte_flow_query_count *data);
--
2.30.2
next prev parent reply other threads:[~2023-06-04 23:28 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
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 ` Ivan Malov [this message]
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=20230604232523.6746-33-ivan.malov@arknetworks.am \
--to=ivan.malov@arknetworks.am \
--cc=amoreton@xilinx.com \
--cc=andrew.rybchenko@oktetlabs.ru \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@amd.com \
/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).