From: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
To: intel-wired-lan@osuosl.org
Subject: [Intel-wired-lan] [PATCH net-next v3 05/12] ice: manage VSI antispoof and destination override
Date: Fri, 25 Jun 2021 04:44:54 +0200 [thread overview]
Message-ID: <20210625024501.6126-6-michal.swiatkowski@linux.intel.com> (raw)
In-Reply-To: <20210625024501.6126-1-michal.swiatkowski@linux.intel.com>
Implement functions to make setting VSI security config easier.
Main function ice_update_security fills security section field and
checks against error in updating VSI. Rest functions are responsible
for correct filling config according to user esceptations.
This helper is needed because destination override is located in
this section. Driver has to set this bit to allow sttering Tx packet
on VSI based on value in Tx descriptors.
Signed-off-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
---
drivers/net/ethernet/intel/ice/ice_lib.c | 61 ++++++++++++++++++++++++
drivers/net/ethernet/intel/ice/ice_lib.h | 11 +++++
2 files changed, 72 insertions(+)
diff --git a/drivers/net/ethernet/intel/ice/ice_lib.c b/drivers/net/ethernet/intel/ice/ice_lib.c
index 274cbca8b1c4..f3414a3a5e56 100644
--- a/drivers/net/ethernet/intel/ice/ice_lib.c
+++ b/drivers/net/ethernet/intel/ice/ice_lib.c
@@ -3571,3 +3571,64 @@ int ice_set_link(struct ice_vsi *vsi, bool ena)
return 0;
}
+
+/**
+ * ice_vsi_update_security - update security block in VSI
+ * @vsi: pointer to VSI structure
+ * @fill: function pointer to fill ctx
+ */
+int ice_vsi_update_security(struct ice_vsi *vsi,
+ void (*fill)(struct ice_vsi_ctx *))
+{
+ struct ice_vsi_ctx ctx = { 0 };
+
+ ctx.info = vsi->info;
+ ctx.info.valid_sections = cpu_to_le16(ICE_AQ_VSI_PROP_SECURITY_VALID);
+ fill(&ctx);
+
+ if (ice_update_vsi(&vsi->back->hw, vsi->idx, &ctx, NULL))
+ return -ENODEV;
+
+ vsi->info = ctx.info;
+ return 0;
+}
+
+/**
+ * ice_vsi_ctx_set_antispoof - set antispoof function in VSI ctx
+ * @ctx: pointer to VSI ctx structure
+ */
+void ice_vsi_ctx_set_antispoof(struct ice_vsi_ctx *ctx)
+{
+ ctx->info.sec_flags |= ICE_AQ_VSI_SEC_FLAG_ENA_MAC_ANTI_SPOOF |
+ (ICE_AQ_VSI_SEC_TX_VLAN_PRUNE_ENA <<
+ ICE_AQ_VSI_SEC_TX_PRUNE_ENA_S);
+}
+
+/**
+ * ice_vsi_ctx_clear_antispoof - clear antispoof function in VSI ctx
+ * @ctx: pointer to VSI ctx structure
+ */
+void ice_vsi_ctx_clear_antispoof(struct ice_vsi_ctx *ctx)
+{
+ ctx->info.sec_flags &= ~ICE_AQ_VSI_SEC_FLAG_ENA_MAC_ANTI_SPOOF &
+ ~(ICE_AQ_VSI_SEC_TX_VLAN_PRUNE_ENA <<
+ ICE_AQ_VSI_SEC_TX_PRUNE_ENA_S);
+}
+
+/**
+ * ice_vsi_ctx_set_allow_override - allow destination override on VSI
+ * @ctx: pointer to VSI ctx structure
+ */
+void ice_vsi_ctx_set_allow_override(struct ice_vsi_ctx *ctx)
+{
+ ctx->info.sec_flags |= ICE_AQ_VSI_SEC_FLAG_ALLOW_DEST_OVRD;
+}
+
+/**
+ * ice_vsi_ctx_clear_allow_override - turn off destination override on VSI
+ * @ctx: pointer to VSI ctx structure
+ */
+void ice_vsi_ctx_clear_allow_override(struct ice_vsi_ctx *ctx)
+{
+ ctx->info.sec_flags &= ~ICE_AQ_VSI_SEC_FLAG_ALLOW_DEST_OVRD;
+}
diff --git a/drivers/net/ethernet/intel/ice/ice_lib.h b/drivers/net/ethernet/intel/ice/ice_lib.h
index cf57945ecc41..781eba6c1991 100644
--- a/drivers/net/ethernet/intel/ice/ice_lib.h
+++ b/drivers/net/ethernet/intel/ice/ice_lib.h
@@ -116,4 +116,15 @@ bool ice_is_vsi_dflt_vsi(struct ice_sw *sw, struct ice_vsi *vsi);
int ice_set_dflt_vsi(struct ice_sw *sw, struct ice_vsi *vsi);
int ice_clear_dflt_vsi(struct ice_sw *sw);
+
+int ice_vsi_update_security(struct ice_vsi *vsi,
+ void (*fill)(struct ice_vsi_ctx *));
+
+void ice_vsi_ctx_set_antispoof(struct ice_vsi_ctx *ctx);
+
+void ice_vsi_ctx_clear_antispoof(struct ice_vsi_ctx *ctx);
+
+void ice_vsi_ctx_set_allow_override(struct ice_vsi_ctx *ctx);
+
+void ice_vsi_ctx_clear_allow_override(struct ice_vsi_ctx *ctx);
#endif /* !_ICE_LIB_H_ */
--
2.30.2
next prev parent reply other threads:[~2021-06-25 2:44 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-25 2:44 [Intel-wired-lan] [PATCH net-next v3 00/12] Add switchdev driver model for ice driver Michal Swiatkowski
2021-06-25 2:44 ` [Intel-wired-lan] [PATCH net-next v3 01/12] ice: support basic E-Switch mode control Michal Swiatkowski
2021-08-03 9:11 ` Penigalapati, Sandeep
2021-06-25 2:44 ` [Intel-wired-lan] [PATCH net-next v3 02/12] ice: Move devlink port to PF/VF struct Michal Swiatkowski
2021-08-06 9:51 ` Penigalapati, Sandeep
2021-06-25 2:44 ` [Intel-wired-lan] [PATCH net-next v3 03/12] ice: introduce VF port representor Michal Swiatkowski
2021-08-06 9:50 ` Penigalapati, Sandeep
2021-06-25 2:44 ` [Intel-wired-lan] [PATCH net-next v3 04/12] ice: allow process vf opcodes in different ways Michal Swiatkowski
2021-08-11 5:24 ` Penigalapati, Sandeep
2021-06-25 2:44 ` Michal Swiatkowski [this message]
2021-08-11 5:27 ` [Intel-wired-lan] [PATCH net-next v3 05/12] ice: manage VSI antispoof and destination override Penigalapati, Sandeep
2021-06-25 2:44 ` [Intel-wired-lan] [PATCH net-next v3 06/12] ice: allow changing lan_en and lb_en on dflt rules Michal Swiatkowski
2021-08-06 10:08 ` Penigalapati, Sandeep
2021-06-25 2:44 ` [Intel-wired-lan] [PATCH net-next v3 07/12] ice: set and release switchdev environment Michal Swiatkowski
2021-08-18 3:39 ` Penigalapati, Sandeep
2021-06-25 2:44 ` [Intel-wired-lan] [PATCH net-next v3 08/12] ice: introduce new type of VSI for switchdev Michal Swiatkowski
2021-08-11 5:25 ` Penigalapati, Sandeep
2021-06-25 2:44 ` [Intel-wired-lan] [PATCH net-next v3 09/12] ice: enable/disable switchdev when managing VFs Michal Swiatkowski
2021-08-03 8:59 ` Penigalapati, Sandeep
2021-06-25 2:44 ` [Intel-wired-lan] [PATCH net-next v3 10/12] ice: rebuild switchdev when resetting all VFs Michal Swiatkowski
2021-08-11 5:25 ` Penigalapati, Sandeep
2021-06-25 2:45 ` [Intel-wired-lan] [PATCH net-next v3 11/12] ice: switchdev slow path Michal Swiatkowski
2021-08-06 10:55 ` Penigalapati, Sandeep
2021-06-25 2:45 ` [Intel-wired-lan] [PATCH net-next v3 12/12] ice: add port representor ethtool ops and stats Michal Swiatkowski
2021-08-06 10:46 ` Penigalapati, Sandeep
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=20210625024501.6126-6-michal.swiatkowski@linux.intel.com \
--to=michal.swiatkowski@linux.intel.com \
--cc=intel-wired-lan@osuosl.org \
/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