DPDK patches and discussions
 help / color / mirror / Atom feed
From: Guinan Sun <guinanx.sun@intel.com>
To: dev@dpdk.org
Cc: Guinan Sun <guinanx.sun@intel.com>,
	Piotr Skajewski <piotrx.skajewski@intel.com>
Subject: [dpdk-dev] [PATCH 05/21] net/ixgbe/base: added API for NVM update
Date: Fri, 12 Jun 2020 03:23:54 +0000	[thread overview]
Message-ID: <20200612032410.20864-6-guinanx.sun@intel.com> (raw)
In-Reply-To: <20200612032410.20864-1-guinanx.sun@intel.com>

When Secure Boot is enabled access to the /dev/mem is forbidden
for user-space applications and clients are reporting inability
to use tools in Secure Boot Mode. The way to perform NVM update
is to use ixgbe driver. Currently 10G Linux Base Driver has API
which allows only EEPROM access. There is a need to extend IOCTL
API to allow NVM and registers access.

Signed-off-by: Piotr Skajewski <piotrx.skajewski@intel.com>
Signed-off-by: Guinan Sun <guinanx.sun@intel.com>
---
 drivers/net/ixgbe/base/ixgbe_api.c  | 13 ++++++++++
 drivers/net/ixgbe/base/ixgbe_type.h | 40 +++++++++++++++++++++++++++++
 2 files changed, 53 insertions(+)

diff --git a/drivers/net/ixgbe/base/ixgbe_api.c b/drivers/net/ixgbe/base/ixgbe_api.c
index 9e4763a64..4d61513ec 100644
--- a/drivers/net/ixgbe/base/ixgbe_api.c
+++ b/drivers/net/ixgbe/base/ixgbe_api.c
@@ -95,6 +95,19 @@ s32 ixgbe_init_shared_code(struct ixgbe_hw *hw)
 	}
 	hw->mac.max_link_up_time = IXGBE_LINK_UP_TIME;
 
+#ifdef IXGBE_NVMUPD_SUPPORT
+	/* NVM Update features structure initialization */
+	hw->nvmupd_features.major = IXGBE_NVMUPD_FEATURES_API_VER_MAJOR;
+	hw->nvmupd_features.minor = IXGBE_NVMUPD_FEATURES_API_VER_MINOR;
+	hw->nvmupd_features.size = sizeof(hw->nvmupd_features);
+	memset(hw->nvmupd_features.features, 0x0,
+	       IXGBE_NVMUPD_FEATURES_API_FEATURES_ARRAY_LEN *
+	       sizeof(*hw->nvmupd_features.features));
+
+	hw->nvmupd_features.features[0] =
+		IXGBE_NVMUPD_FEATURE_REGISTER_ACCESS_SUPPORT;
+#endif /* IXGBE_NVMUPD_SUPPORT */
+
 	return status;
 }
 
diff --git a/drivers/net/ixgbe/base/ixgbe_type.h b/drivers/net/ixgbe/base/ixgbe_type.h
index 33ca659cd..c1ee4c680 100644
--- a/drivers/net/ixgbe/base/ixgbe_type.h
+++ b/drivers/net/ixgbe/base/ixgbe_type.h
@@ -169,6 +169,10 @@
 #define IXGBE_FLA_X550EM_x	IXGBE_FLA
 #define IXGBE_FLA_X550EM_a	0x15F68
 #define IXGBE_FLA_BY_MAC(_hw)	IXGBE_BY_MAC((_hw), FLA)
+#define IXGBE_FLA_FL_SIZE_SHIFT_X540	17
+#define IXGBE_FLA_FL_SIZE_SHIFT_X550	12
+#define IXGBE_FLA_FL_SIZE_MASK_X540	(0x7 << IXGBE_FLA_FL_SIZE_SHIFT_X540)
+#define IXGBE_FLA_FL_SIZE_MASK_X550	(0x7 << IXGBE_FLA_FL_SIZE_SHIFT_X550)
 
 #define IXGBE_EEMNGCTL	0x10110
 #define IXGBE_EEMNGDATA	0x10114
@@ -1402,6 +1406,7 @@ struct ixgbe_dmac_config {
 #define IXGBE_BARCTRL_FLSIZE		0x0700
 #define IXGBE_BARCTRL_FLSIZE_SHIFT	8
 #define IXGBE_BARCTRL_CSRSIZE		0x2000
+#define IXGBE_BARCTRL_CSRSIZE_SHIFT	13
 
 /* RSCCTL Bit Masks */
 #define IXGBE_RSCCTL_RSCEN	0x01
@@ -3905,6 +3910,37 @@ struct ixgbe_hw_stats {
 	u64 o2bspc;
 };
 
+#ifdef IXGBE_NVMUPD_SUPPORT
+/* NVM Update commands */
+#define IXGBE_NVMUPD_CMD_REG_READ	0x0000000B
+#define IXGBE_NVMUPD_CMD_REG_WRITE	0x0000000C
+
+/* NVM Update features API */
+#define IXGBE_NVMUPD_FEATURES_API_VER_MAJOR		0
+#define IXGBE_NVMUPD_FEATURES_API_VER_MINOR		0
+#define IXGBE_NVMUPD_FEATURES_API_FEATURES_ARRAY_LEN	12
+#define IXGBE_NVMUPD_EXEC_FEATURES			0xe
+#define IXGBE_NVMUPD_FEATURE_FLAT_NVM_SUPPORT		BIT(0)
+#define IXGBE_NVMUPD_FEATURE_REGISTER_ACCESS_SUPPORT	BIT(1)
+
+#define IXGBE_NVMUPD_MOD_PNT_MASK			0xFF
+
+struct ixgbe_nvm_access {
+	u32 command;
+	u32 config;
+	u32 offset;	/* in bytes */
+	u32 data_size;	/* in bytes */
+	u8 data[1];
+};
+
+struct ixgbe_nvm_features {
+	u8 major;
+	u8 minor;
+	u16 size;
+	u8 features[IXGBE_NVMUPD_FEATURES_API_FEATURES_ARRAY_LEN];
+};
+
+#endif
 /* forward declaration */
 struct ixgbe_hw;
 
@@ -4200,6 +4236,10 @@ struct ixgbe_hw {
 	bool allow_unsupported_sfp;
 	bool wol_enabled;
 	bool need_crosstalk_fix;
+#ifdef IXGBE_NVMUPD_SUPPORT
+	/* NVM Update features */
+	struct ixgbe_nvm_features nvmupd_features;
+#endif
 };
 
 #define ixgbe_call_func(hw, func, params, error) \
-- 
2.17.1


  parent reply	other threads:[~2020-06-12  3:46 UTC|newest]

Thread overview: 99+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-12  3:23 [dpdk-dev] [PATCH 00/21] update ixgbe base code Guinan Sun
2020-06-12  3:23 ` [dpdk-dev] [PATCH 01/21] net/ixgbe/base: clear VFMBMEM and toggle VF's Tx queues Guinan Sun
2020-06-22 11:58   ` Ferruh Yigit
2020-06-30  1:57     ` Sun, GuinanX
2020-06-12  3:23 ` [dpdk-dev] [PATCH 02/21] net/ixgbe/base: change in the condition for response HI Guinan Sun
2020-06-22 11:58   ` Ferruh Yigit
2020-06-29  9:27     ` Yang, Qiming
2020-06-30  2:17     ` Sun, GuinanX
2020-06-12  3:23 ` [dpdk-dev] [PATCH 03/21] net/ixgbe/base: hange flow for "Apply Update" command Guinan Sun
2020-06-22 11:58   ` Ferruh Yigit
2020-06-30  2:24     ` Sun, GuinanX
2020-06-12  3:23 ` [dpdk-dev] [PATCH 04/21] net/ixgbe/base: x550em 10G NIC driver issue Guinan Sun
2020-06-22 11:59   ` Ferruh Yigit
2020-07-01  2:54     ` Sun, GuinanX
2020-06-12  3:23 ` Guinan Sun [this message]
2020-06-22 11:59   ` [dpdk-dev] [PATCH 05/21] net/ixgbe/base: added API for NVM update Ferruh Yigit
2020-06-30  2:37     ` Sun, GuinanX
2020-06-12  3:23 ` [dpdk-dev] [PATCH 06/21] net/ixgbe/base: resolve infinite recursion on PCIe link down Guinan Sun
2020-06-12  3:23 ` [dpdk-dev] [PATCH 07/21] net/ixgbe/base: added register definitions for NVM update Guinan Sun
2020-06-12  3:23 ` [dpdk-dev] [PATCH 08/21] net/ixgbe/base: cleanup spelling mistakes in comments Guinan Sun
2020-06-12  3:23 ` [dpdk-dev] [PATCH 09/21] net/ixgbe/base: remove whitespace in function comments Guinan Sun
2020-06-12  3:23 ` [dpdk-dev] [PATCH 10/21] net/ixgbe/base: move increments after evaluations Guinan Sun
2020-06-22 11:59   ` Ferruh Yigit
2020-06-30  2:51     ` Sun, GuinanX
2020-06-12  3:24 ` [dpdk-dev] [PATCH 11/21] net/ixgbe/base: modify loop accounting for retries Guinan Sun
2020-06-22 11:59   ` Ferruh Yigit
2020-06-30  2:52     ` Sun, GuinanX
2020-06-12  3:24 ` [dpdk-dev] [PATCH 12/21] net/ixgbe/base: create dedicated func to restart auto nego Guinan Sun
2020-06-22 11:59   ` Ferruh Yigit
2020-06-12  3:24 ` [dpdk-dev] [PATCH 13/21] net/ixgbe/base: modify Klocwork hits for DDK 7.0 Guinan Sun
2020-06-22 12:00   ` Ferruh Yigit
2020-07-01  4:52     ` Sun, GuinanX
2020-06-12  3:24 ` [dpdk-dev] [PATCH 14/21] net/ixgbe/base: add defines for min rollback revision fields Guinan Sun
2020-06-22 12:00   ` Ferruh Yigit
2020-07-01  5:08     ` Sun, GuinanX
2020-06-12  3:24 ` [dpdk-dev] [PATCH 15/21] net/ixgbe/base: remove unnecessary log message FC autonego Guinan Sun
2020-06-12  3:24 ` [dpdk-dev] [PATCH 16/21] net/ixgbe/base: initialize data field in struct buffer Guinan Sun
2020-06-12  3:24 ` [dpdk-dev] [PATCH 17/21] net/ixgbe/base: improve log about autonego being disabled Guinan Sun
2020-06-22 12:00   ` Ferruh Yigit
2020-07-01  5:19     ` Sun, GuinanX
2020-06-12  3:24 ` [dpdk-dev] [PATCH 18/21] net/ixgbe/base: ipv6 Mask for purpose FDIR VLAN Port Feature Guinan Sun
2020-06-22 12:00   ` Ferruh Yigit
2020-07-01  5:21     ` Sun, GuinanX
2020-06-12  3:24 ` [dpdk-dev] [PATCH 19/21] net/ixgbe/base: remove default advertising for 2.5G and 5G Guinan Sun
2020-06-22 12:00   ` Ferruh Yigit
2020-07-01  6:24     ` Sun, GuinanX
2020-06-12  3:24 ` [dpdk-dev] [PATCH 20/21] net/ixgbe/base: check Host Interface Return Status Guinan Sun
2020-06-12  3:24 ` [dpdk-dev] [PATCH 21/21] net/ixgbe/base: update version Guinan Sun
2020-06-22 12:01   ` Ferruh Yigit
2020-07-01  6:27     ` Sun, GuinanX
2020-06-15  5:47 ` [dpdk-dev] [PATCH 00/21] update ixgbe base code Zhao1, Wei
2020-06-15  5:59   ` Sun, GuinanX
2020-06-22  2:42 ` Zhao1, Wei
2020-06-22  3:50   ` Zhang, Qi Z
2020-07-02  3:13 ` [dpdk-dev] [PATCH v2 00/20] " Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 01/20] net/ixgbe/base: toggle VF's Tx queues Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 02/20] net/ixgbe/base: add support to clear VFMBMEM Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 03/20] net/ixgbe/base: fix host interface shadow RAM read Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 04/20] net/ixgbe/base: change flow for "Apply Update" command Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 05/20] net/ixgbe/base: fix x550em 10G NIC link status report Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 06/20] net/ixgbe/base: resolve infinite recursion on PCIe link down Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 07/20] net/ixgbe/base: added register definitions for NVM update Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 08/20] net/ixgbe/base: cleanup spelling mistakes in comments Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 09/20] net/ixgbe/base: remove whitespace in function comments Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 10/20] net/ixgbe/base: move increments after evaluations Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 11/20] net/ixgbe/base: create dedicated func to restart auto nego Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 12/20] net/ixgbe/base: modify coding style Guinan Sun
2020-07-08 15:26     ` Ferruh Yigit
2020-07-09  7:58       ` Sun, GuinanX
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 13/20] net/ixgbe/base: remove unnecessary log message FC autonego Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 14/20] net/ixgbe/base: initialize data field in struct buffer Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 15/20] net/ixgbe/base: improve log about autonego being disabled Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 16/20] net/ixgbe/base: add ipv6 mask for FDIR feature Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 17/20] net/ixgbe/base: remove default advertising for x550 2.5G/5G Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 18/20] net/ixgbe/base: check host interface return status Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 19/20] net/ixgbe/base: cleanup pre-processor tags Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 20/20] net/ixgbe/base: update version Guinan Sun
2020-07-08  0:50   ` [dpdk-dev] [PATCH v2 00/20] update ixgbe base code Zhang, Qi Z
2020-07-09  8:00   ` [dpdk-dev] [PATCH v3 00/19] " Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 01/19] net/ixgbe/base: fix host interface shadow RAM read Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 02/19] net/ixgbe/base: change flow for "Apply Update" command Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 03/19] net/ixgbe/base: fix x550em 10G NIC link status report Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 04/19] net/ixgbe/base: resolve infinite recursion on PCIe link down Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 05/19] net/ixgbe/base: added register definitions for NVM update Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 06/19] net/ixgbe/base: cleanup spelling mistakes in comments Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 07/19] net/ixgbe/base: remove whitespace in function comments Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 08/19] net/ixgbe/base: move increments after evaluations Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 09/19] net/ixgbe/base: create dedicated func to restart auto nego Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 10/19] net/ixgbe/base: add typecast for type mismatch Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 11/19] net/ixgbe/base: remove unnecessary return value check Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 12/19] net/ixgbe/base: remove unnecessary log message FC autonego Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 13/19] net/ixgbe/base: initialize data field in struct buffer Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 14/19] net/ixgbe/base: improve log about autonego being disabled Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 15/19] net/ixgbe/base: add ipv6 mask for FDIR feature Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 16/19] net/ixgbe/base: remove default advertising for x550 2.5G/5G Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 17/19] net/ixgbe/base: check host interface return status Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 18/19] net/ixgbe/base: cleanup pre-processor tags Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 19/19] net/ixgbe/base: update version Guinan Sun
2020-07-09 10:46     ` [dpdk-dev] [PATCH v3 00/19] update ixgbe base code Zhang, Qi Z

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=20200612032410.20864-6-guinanx.sun@intel.com \
    --to=guinanx.sun@intel.com \
    --cc=dev@dpdk.org \
    --cc=piotrx.skajewski@intel.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).