Netdev Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH v3 net-next 0/5] bnxt_en: Updates to devlink info_get cb
@ 2020-03-26 12:02 Vasundhara Volam
  2020-03-26 12:02 ` [PATCH v3 net-next 1/5] devlink: Add macro for "fw.api" to " Vasundhara Volam
  2020-03-26 12:02 ` [PATCH v3 net-next 2/5] bnxt_en: Add fw.api version to devlink " Vasundhara Volam
  0 siblings, 2 replies; 7+ messages in thread
From: Vasundhara Volam @ 2020-03-26 12:02 UTC (permalink / raw)
  To: davem; +Cc: netdev, Vasundhara Volam

This series adds support for a generic macro to devlink info_get cb.
Adds support for fw.api and board.id info to bnxt_en driver info_get cb.
Also, updates the devlink-info.rst and bnxt.rst documentation accordingly.

---
v1->v2: Remove ECN dev param, base_mh_addr and serial number info support
in this series.
Rename drv.spec macro to fw.api.
---
v2->v3: Remove hw.addr info as it is per netdev but not per device info.
---

Vasundhara Volam (5):
  devlink: Add macro for "fw.api" to info_get cb.
  bnxt_en: Add fw.api version to devlink info_get cb.
  PCI: Add new PCI_VPD_RO_KEYWORD_SERIALNO macro
  bnxt_en: Read partno and serialno of the board from VPD
  bnxt_en: Add partno to devlink info_get cb

 Documentation/networking/devlink/bnxt.rst         |  6 ++
 Documentation/networking/devlink/devlink-info.rst |  6 ++
 drivers/net/ethernet/broadcom/bnxt/bnxt.c         | 74 ++++++++++++++++++++++-
 drivers/net/ethernet/broadcom/bnxt/bnxt.h         |  5 ++
 drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c | 13 ++++
 include/linux/pci.h                               |  1 +
 include/net/devlink.h                             |  2 +
 7 files changed, 106 insertions(+), 1 deletion(-)

-- 
1.8.3.1


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v3 net-next 1/5] devlink: Add macro for "fw.api" to info_get cb.
  2020-03-26 12:02 [PATCH v3 net-next 0/5] bnxt_en: Updates to devlink info_get cb Vasundhara Volam
@ 2020-03-26 12:02 ` " Vasundhara Volam
  2020-03-26 20:40   ` Jakub Kicinski
  2020-03-26 12:02 ` [PATCH v3 net-next 2/5] bnxt_en: Add fw.api version to devlink " Vasundhara Volam
  1 sibling, 1 reply; 7+ messages in thread
From: Vasundhara Volam @ 2020-03-26 12:02 UTC (permalink / raw)
  To: davem
  Cc: netdev, Vasundhara Volam, Jakub Kicinski, Jacob Keller, Michael Chan

Add definition and documentation for the new generic info "fw.api".
"fw.api" specifies the version of the software interfaces between
driver and overall firmware.

Cc: Jakub Kicinski <kuba@kernel.org>
Cc: Jacob Keller <jacob.e.keller@intel.com>
Reviewed-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
---
v1->v2: Rename macro to "fw.api" from "drv.spec".
---
 Documentation/networking/devlink/devlink-info.rst | 6 ++++++
 include/net/devlink.h                             | 2 ++
 2 files changed, 8 insertions(+)

diff --git a/Documentation/networking/devlink/devlink-info.rst b/Documentation/networking/devlink/devlink-info.rst
index e5e5e89..650e2c0e3 100644
--- a/Documentation/networking/devlink/devlink-info.rst
+++ b/Documentation/networking/devlink/devlink-info.rst
@@ -150,6 +150,12 @@ fw
 Overall firmware version, often representing the collection of
 fw.mgmt, fw.app, etc.
 
+fw.api
+------
+
+Overall firmware interface specification version of the software interfaces
+between driver and firmware.
+
 fw.mgmt
 -------
 
diff --git a/include/net/devlink.h b/include/net/devlink.h
index 37230e2..d51482f 100644
--- a/include/net/devlink.h
+++ b/include/net/devlink.h
@@ -478,6 +478,8 @@ enum devlink_param_generic_id {
 
 /* Overall FW version */
 #define DEVLINK_INFO_VERSION_GENERIC_FW		"fw"
+/* Overall FW interface specification version */
+#define DEVLINK_INFO_VERSION_GENERIC_FW_API	"fw.api"
 /* Control processor FW version */
 #define DEVLINK_INFO_VERSION_GENERIC_FW_MGMT	"fw.mgmt"
 /* Data path microcode controlling high-speed packet processing */
-- 
1.8.3.1


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v3 net-next 2/5] bnxt_en: Add fw.api version to devlink info_get cb.
  2020-03-26 12:02 [PATCH v3 net-next 0/5] bnxt_en: Updates to devlink info_get cb Vasundhara Volam
  2020-03-26 12:02 ` [PATCH v3 net-next 1/5] devlink: Add macro for "fw.api" to " Vasundhara Volam
@ 2020-03-26 12:02 ` " Vasundhara Volam
  1 sibling, 0 replies; 7+ messages in thread
From: Vasundhara Volam @ 2020-03-26 12:02 UTC (permalink / raw)
  To: davem; +Cc: netdev, Vasundhara Volam, Michael Chan

Display the minimum version of firmware interface spec supported
between driver and firmware. Also update bnxt.rst documentation file.

Signed-off-by: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
---
v1->v2: Display the minimum version of fw spec supported between fw and
driver, instead of version implemented by driver.
---
 Documentation/networking/devlink/bnxt.rst         |  3 +++
 drivers/net/ethernet/broadcom/bnxt/bnxt.c         | 15 ++++++++++++++-
 drivers/net/ethernet/broadcom/bnxt/bnxt.h         |  1 +
 drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c |  5 +++++
 4 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/Documentation/networking/devlink/bnxt.rst b/Documentation/networking/devlink/bnxt.rst
index 82ef9ec..71f5a5a 100644
--- a/Documentation/networking/devlink/bnxt.rst
+++ b/Documentation/networking/devlink/bnxt.rst
@@ -63,6 +63,9 @@ The ``bnxt_en`` driver reports the following versions
    * - ``fw``
      - stored, running
      - Overall board firmware version
+   * - ``fw.api``
+     - running
+     - Minimum firmware interface spec version supported between driver and firmware
    * - ``fw.app``
      - stored, running
      - Data path firmware version
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index 663dcf6..7bcd313 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -7223,7 +7223,7 @@ static int __bnxt_hwrm_ver_get(struct bnxt *bp, bool silent)
 static int bnxt_hwrm_ver_get(struct bnxt *bp)
 {
 	struct hwrm_ver_get_output *resp = bp->hwrm_cmd_resp_addr;
-	u32 dev_caps_cfg;
+	u32 dev_caps_cfg, hwrm_ver;
 	int rc;
 
 	bp->hwrm_max_req_len = HWRM_MAX_REQ_LEN;
@@ -7243,6 +7243,19 @@ static int bnxt_hwrm_ver_get(struct bnxt *bp)
 			    resp->hwrm_intf_upd_8b);
 		netdev_warn(bp->dev, "Please update firmware with HWRM interface 1.0.0 or newer.\n");
 	}
+
+	hwrm_ver = HWRM_VERSION_MAJOR << 16 | HWRM_VERSION_MINOR << 8 |
+			HWRM_VERSION_UPDATE;
+
+	if (bp->hwrm_spec_code > hwrm_ver)
+		snprintf(bp->hwrm_ver_supp, FW_VER_STR_LEN, "%d.%d.%d",
+			 HWRM_VERSION_MAJOR, HWRM_VERSION_MINOR,
+			 HWRM_VERSION_UPDATE);
+	else
+		snprintf(bp->hwrm_ver_supp, FW_VER_STR_LEN, "%d.%d.%d",
+			 resp->hwrm_intf_maj_8b, resp->hwrm_intf_min_8b,
+			 resp->hwrm_intf_upd_8b);
+
 	snprintf(bp->fw_ver_str, BC_HWRM_STR_LEN, "%d.%d.%d.%d",
 		 resp->hwrm_fw_maj_8b, resp->hwrm_fw_min_8b,
 		 resp->hwrm_fw_bld_8b, resp->hwrm_fw_rsvd_8b);
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.h b/drivers/net/ethernet/broadcom/bnxt/bnxt.h
index 5adc25f..cc57538 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.h
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.h
@@ -1730,6 +1730,7 @@ struct bnxt {
 #define BC_HWRM_STR_LEN		21
 #define PHY_VER_STR_LEN         (FW_VER_STR_LEN - BC_HWRM_STR_LEN)
 	char			fw_ver_str[FW_VER_STR_LEN];
+	char			hwrm_ver_supp[FW_VER_STR_LEN];
 	__be16			vxlan_port;
 	u8			vxlan_port_cnt;
 	__le16			vxlan_fw_dst_port_id;
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c
index d3c93cc..51abc6c 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c
@@ -434,6 +434,11 @@ static int bnxt_dl_info_get(struct devlink *dl, struct devlink_info_req *req,
 			return rc;
 	}
 
+	rc = devlink_info_version_running_put(req,
+			DEVLINK_INFO_VERSION_GENERIC_FW_API, bp->hwrm_ver_supp);
+	if (rc)
+		return rc;
+
 	if (BNXT_PF(bp) && !bnxt_hwrm_get_nvm_cfg_ver(bp, &nvm_cfg_ver)) {
 		u32 ver = nvm_cfg_ver.vu32;
 
-- 
1.8.3.1


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v3 net-next 1/5] devlink: Add macro for "fw.api" to info_get cb.
  2020-03-26 12:02 ` [PATCH v3 net-next 1/5] devlink: Add macro for "fw.api" to " Vasundhara Volam
@ 2020-03-26 20:40   ` Jakub Kicinski
  2020-03-26 23:09     ` Michael Chan
  0 siblings, 1 reply; 7+ messages in thread
From: Jakub Kicinski @ 2020-03-26 20:40 UTC (permalink / raw)
  To: Vasundhara Volam; +Cc: davem, netdev, Jacob Keller, Michael Chan

On Thu, 26 Mar 2020 17:32:34 +0530 Vasundhara Volam wrote:
> Add definition and documentation for the new generic info "fw.api".
> "fw.api" specifies the version of the software interfaces between
> driver and overall firmware.
> 
> Cc: Jakub Kicinski <kuba@kernel.org>
> Cc: Jacob Keller <jacob.e.keller@intel.com>
> Reviewed-by: Jiri Pirko <jiri@mellanox.com>
> Signed-off-by: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
> Signed-off-by: Michael Chan <michael.chan@broadcom.com>
> ---
> v1->v2: Rename macro to "fw.api" from "drv.spec".

I suggested "fw.mgmt.api", like Intel has. What else those this API
number covers beyond management? Do you negotiated descriptor formats
for the datapath?

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v3 net-next 1/5] devlink: Add macro for "fw.api" to info_get cb.
  2020-03-26 20:40   ` Jakub Kicinski
@ 2020-03-26 23:09     ` Michael Chan
  2020-03-26 23:39       ` Jacob Keller
  0 siblings, 1 reply; 7+ messages in thread
From: Michael Chan @ 2020-03-26 23:09 UTC (permalink / raw)
  To: Jakub Kicinski; +Cc: Vasundhara Volam, David Miller, Netdev, Jacob Keller

On Thu, Mar 26, 2020 at 1:40 PM Jakub Kicinski <kuba@kernel.org> wrote:
>
> On Thu, 26 Mar 2020 17:32:34 +0530 Vasundhara Volam wrote:
> > Add definition and documentation for the new generic info "fw.api".
> > "fw.api" specifies the version of the software interfaces between
> > driver and overall firmware.
> >
> > Cc: Jakub Kicinski <kuba@kernel.org>
> > Cc: Jacob Keller <jacob.e.keller@intel.com>
> > Reviewed-by: Jiri Pirko <jiri@mellanox.com>
> > Signed-off-by: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
> > Signed-off-by: Michael Chan <michael.chan@broadcom.com>
> > ---
> > v1->v2: Rename macro to "fw.api" from "drv.spec".
>
> I suggested "fw.mgmt.api", like Intel has. What else those this API
> number covers beyond management? Do you negotiated descriptor formats
> for the datapath?

To us, "management" firmware usually means firmware such as IPMI that
interfaces with the BMC.  Here, we're trying to convey the API between
the driver and the main firmware.  Yes, this main firmware also
"manages" things such as rings, MAC, the physical port, etc.  But
again, we want to distinguish it from the platform management type of
firmware.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v3 net-next 1/5] devlink: Add macro for "fw.api" to info_get cb.
  2020-03-26 23:09     ` Michael Chan
@ 2020-03-26 23:39       ` Jacob Keller
  2020-03-26 23:51         ` Jakub Kicinski
  0 siblings, 1 reply; 7+ messages in thread
From: Jacob Keller @ 2020-03-26 23:39 UTC (permalink / raw)
  To: Michael Chan, Jakub Kicinski; +Cc: Vasundhara Volam, David Miller, Netdev



On 3/26/2020 4:09 PM, Michael Chan wrote:
> On Thu, Mar 26, 2020 at 1:40 PM Jakub Kicinski <kuba@kernel.org> wrote:
>>
>> On Thu, 26 Mar 2020 17:32:34 +0530 Vasundhara Volam wrote:
>>> Add definition and documentation for the new generic info "fw.api".
>>> "fw.api" specifies the version of the software interfaces between
>>> driver and overall firmware.
>>>
>>> Cc: Jakub Kicinski <kuba@kernel.org>
>>> Cc: Jacob Keller <jacob.e.keller@intel.com>
>>> Reviewed-by: Jiri Pirko <jiri@mellanox.com>
>>> Signed-off-by: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
>>> Signed-off-by: Michael Chan <michael.chan@broadcom.com>
>>> ---
>>> v1->v2: Rename macro to "fw.api" from "drv.spec".
>>
>> I suggested "fw.mgmt.api", like Intel has. What else those this API
>> number covers beyond management? Do you negotiated descriptor formats
>> for the datapath?
> 
> To us, "management" firmware usually means firmware such as IPMI that
> interfaces with the BMC.  Here, we're trying to convey the API between
> the driver and the main firmware.  Yes, this main firmware also
> "manages" things such as rings, MAC, the physical port, etc.  But
> again, we want to distinguish it from the platform management type of
> firmware.
> 

Documentation for "fw.mgmt":

fw.mgmt
-------

Control unit firmware version. This firmware is responsible for house
keeping tasks, PHY control etc. but not the packet-by-packet data path
operation.

To me, platform management would need a new name, as the term "fw.mgmt"
has already been used by multiple drivers.

Thanks,
Jake

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v3 net-next 1/5] devlink: Add macro for "fw.api" to info_get cb.
  2020-03-26 23:39       ` Jacob Keller
@ 2020-03-26 23:51         ` Jakub Kicinski
  0 siblings, 0 replies; 7+ messages in thread
From: Jakub Kicinski @ 2020-03-26 23:51 UTC (permalink / raw)
  To: Jacob Keller; +Cc: Michael Chan, Vasundhara Volam, David Miller, Netdev

On Thu, 26 Mar 2020 16:39:31 -0700 Jacob Keller wrote:
> On 3/26/2020 4:09 PM, Michael Chan wrote:
> > On Thu, Mar 26, 2020 at 1:40 PM Jakub Kicinski <kuba@kernel.org> wrote:  
> >>
> >> On Thu, 26 Mar 2020 17:32:34 +0530 Vasundhara Volam wrote:  
> >>> Add definition and documentation for the new generic info "fw.api".
> >>> "fw.api" specifies the version of the software interfaces between
> >>> driver and overall firmware.
> >>>
> >>> Cc: Jakub Kicinski <kuba@kernel.org>
> >>> Cc: Jacob Keller <jacob.e.keller@intel.com>
> >>> Reviewed-by: Jiri Pirko <jiri@mellanox.com>
> >>> Signed-off-by: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
> >>> Signed-off-by: Michael Chan <michael.chan@broadcom.com>
> >>> ---
> >>> v1->v2: Rename macro to "fw.api" from "drv.spec".  
> >>
> >> I suggested "fw.mgmt.api", like Intel has. What else those this API
> >> number covers beyond management? Do you negotiated descriptor formats
> >> for the datapath?  
> > 
> > To us, "management" firmware usually means firmware such as IPMI that
> > interfaces with the BMC.  Here, we're trying to convey the API between
> > the driver and the main firmware.  Yes, this main firmware also
> > "manages" things such as rings, MAC, the physical port, etc.  But
> > again, we want to distinguish it from the platform management type of
> > firmware.
> >   
> 
> Documentation for "fw.mgmt":
> 
> fw.mgmt
> -------
> 
> Control unit firmware version. This firmware is responsible for house
> keeping tasks, PHY control etc. but not the packet-by-packet data path
> operation.
> 
> To me, platform management would need a new name, as the term "fw.mgmt"
> has already been used by multiple drivers.

Right, we already have:

fw.ncsi                                                                         
-------                                                                         
                                                                                
Version of the software responsible for supporting/handling the                 
Network Controller Sideband Interface.


Maybe something more broad is needed there, but let's keep mgmt's
meaning. I know this may not fit existing vendor nomenclature, but
that's kind of the point, we're trying to have common Linux naming..

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, back to index

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-26 12:02 [PATCH v3 net-next 0/5] bnxt_en: Updates to devlink info_get cb Vasundhara Volam
2020-03-26 12:02 ` [PATCH v3 net-next 1/5] devlink: Add macro for "fw.api" to " Vasundhara Volam
2020-03-26 20:40   ` Jakub Kicinski
2020-03-26 23:09     ` Michael Chan
2020-03-26 23:39       ` Jacob Keller
2020-03-26 23:51         ` Jakub Kicinski
2020-03-26 12:02 ` [PATCH v3 net-next 2/5] bnxt_en: Add fw.api version to devlink " Vasundhara Volam

Netdev Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/netdev/0 netdev/git/0.git
	git clone --mirror https://lore.kernel.org/netdev/1 netdev/git/1.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 netdev netdev/ https://lore.kernel.org/netdev \
		netdev@vger.kernel.org
	public-inbox-index netdev

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.netdev


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git