From: Andrew Rybchenko <arybchenko@solarflare.com>
To: <dev@dpdk.org>
Cc: Mark Spender <mspender@solarflare.com>
Subject: [dpdk-dev] [PATCH 08/11] net/sfc/base: add API to set an RSS context for a filter
Date: Wed, 30 Aug 2017 19:17:38 +0100 [thread overview]
Message-ID: <1504117061-17906-9-git-send-email-arybchenko@solarflare.com> (raw)
In-Reply-To: <1504117061-17906-1-git-send-email-arybchenko@solarflare.com>
From: Mark Spender <mspender@solarflare.com>
Signed-off-by: Mark Spender <mspender@solarflare.com>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Andrew Lee <alee@solarflare.com>
Reviewed-by: Andy Moreton <amoreton@solarflare.com>
---
drivers/net/sfc/base/ef10_filter.c | 16 +++++++++++-----
drivers/net/sfc/base/efx.h | 7 ++++++-
drivers/net/sfc/base/efx_filter.c | 29 +++++++++++++++++++++++++----
3 files changed, 42 insertions(+), 10 deletions(-)
diff --git a/drivers/net/sfc/base/ef10_filter.c b/drivers/net/sfc/base/ef10_filter.c
index 068882e..e1faf1d 100644
--- a/drivers/net/sfc/base/ef10_filter.c
+++ b/drivers/net/sfc/base/ef10_filter.c
@@ -226,10 +226,20 @@
MC_CMD_FILTER_OP_EXT_IN_RX_DEST_HOST);
MCDI_IN_SET_DWORD(req, FILTER_OP_EXT_IN_RX_QUEUE,
spec->efs_dmaq_id);
+
+#if EFSYS_OPT_RX_SCALE
if (spec->efs_flags & EFX_FILTER_FLAG_RX_RSS) {
+ uint32_t rss_context;
+
+ if (spec->efs_rss_context == EFX_RSS_CONTEXT_DEFAULT)
+ rss_context = enp->en_rss_context;
+ else
+ rss_context = spec->efs_rss_context;
MCDI_IN_SET_DWORD(req, FILTER_OP_EXT_IN_RX_CONTEXT,
- spec->efs_rss_context);
+ rss_context);
}
+#endif
+
MCDI_IN_SET_DWORD(req, FILTER_OP_EXT_IN_RX_MODE,
spec->efs_flags & EFX_FILTER_FLAG_RX_RSS ?
MC_CMD_FILTER_OP_EXT_IN_RX_MODE_RSS :
@@ -586,10 +596,6 @@
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
enp->en_family == EFX_FAMILY_MEDFORD);
-#if EFSYS_OPT_RX_SCALE
- spec->efs_rss_context = enp->en_rss_context;
-#endif
-
hash = ef10_filter_hash(spec);
/*
diff --git a/drivers/net/sfc/base/efx.h b/drivers/net/sfc/base/efx.h
index fa0e590..37c9bc4 100644
--- a/drivers/net/sfc/base/efx.h
+++ b/drivers/net/sfc/base/efx.h
@@ -2419,7 +2419,12 @@ enum {
__in efx_tunnel_protocol_t encap_type,
__in efx_filter_inner_frame_match_t inner_frame_match);
-
+#if EFSYS_OPT_RX_SCALE
+extern __checkReturn efx_rc_t
+efx_filter_spec_set_rss_context(
+ __inout efx_filter_spec_t *spec,
+ __in uint32_t rss_context);
+#endif
#endif /* EFSYS_OPT_FILTER */
/* HASH */
diff --git a/drivers/net/sfc/base/efx_filter.c b/drivers/net/sfc/base/efx_filter.c
index 34df111..5cab7d8 100644
--- a/drivers/net/sfc/base/efx_filter.c
+++ b/drivers/net/sfc/base/efx_filter.c
@@ -117,10 +117,6 @@
EFSYS_ASSERT3P(spec, !=, NULL);
EFSYS_ASSERT3U(spec->efs_flags, &, EFX_FILTER_FLAG_RX);
-#if EFSYS_OPT_RX_SCALE
- spec->efs_rss_context = enp->en_rss_context;
-#endif
-
return (efop->efo_delete(enp, spec));
}
@@ -490,7 +486,32 @@
return (rc);
}
+#if EFSYS_OPT_RX_SCALE
+ __checkReturn efx_rc_t
+efx_filter_spec_set_rss_context(
+ __inout efx_filter_spec_t *spec,
+ __in uint32_t rss_context)
+{
+ efx_rc_t rc;
+
+ EFSYS_ASSERT3P(spec, !=, NULL);
+ /* The filter must have been created with EFX_FILTER_FLAG_RX_RSS. */
+ if ((spec->efs_flags & EFX_FILTER_FLAG_RX_RSS) == 0) {
+ rc = EINVAL;
+ goto fail1;
+ }
+
+ spec->efs_rss_context = rss_context;
+
+ return (0);
+
+fail1:
+ EFSYS_PROBE1(fail1, efx_rc_t, rc);
+
+ return (rc);
+}
+#endif
#if EFSYS_OPT_SIENA
--
1.8.2.3
next prev parent reply other threads:[~2017-08-30 18:17 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-30 18:17 [dpdk-dev] [PATCH 00/11] net/sfc: support flow API RSS action Andrew Rybchenko
2017-08-30 18:17 ` [dpdk-dev] [PATCH 01/11] net/sfc: fix unused variable warnings in RSS-agnostic build Andrew Rybchenko
2017-08-30 18:17 ` [dpdk-dev] [PATCH 02/11] net/sfc/base: define a handle to denote default RSS context Andrew Rybchenko
2017-08-30 18:17 ` [dpdk-dev] [PATCH 03/11] net/sfc/base: fix default RSS context check on Siena Andrew Rybchenko
2017-08-30 18:17 ` [dpdk-dev] [PATCH 04/11] net/sfc/base: add the max. number of RSS exclusive contexts Andrew Rybchenko
2017-08-30 18:17 ` [dpdk-dev] [PATCH 05/11] net/sfc/base: rename API to check Rx scale and hash support Andrew Rybchenko
2017-08-30 18:17 ` [dpdk-dev] [PATCH 06/11] net/sfc/base: add API to allocate and free RSS contexts Andrew Rybchenko
2017-08-30 18:17 ` [dpdk-dev] [PATCH 07/11] net/sfc/base: update RSS API to take RSS context parameter Andrew Rybchenko
2017-08-30 18:17 ` Andrew Rybchenko [this message]
2017-08-30 18:17 ` [dpdk-dev] [PATCH 09/11] net/sfc/base: add RSS key size define to efx.h Andrew Rybchenko
2017-08-30 18:17 ` [dpdk-dev] [PATCH 10/11] net/sfc: use RSS key size define from base driver Andrew Rybchenko
2017-08-30 18:17 ` [dpdk-dev] [PATCH 11/11] net/sfc: add support for the flow API RSS action Andrew Rybchenko
2017-09-01 16:27 ` [dpdk-dev] [PATCH 00/11] net/sfc: support " 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=1504117061-17906-9-git-send-email-arybchenko@solarflare.com \
--to=arybchenko@solarflare.com \
--cc=dev@dpdk.org \
--cc=mspender@solarflare.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).