netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next 0/2] bnxt_en: Zero pad fw messages and add fw reset.
@ 2016-01-08  0:56 Michael Chan
  2016-01-08  0:56 ` [PATCH net-next 1/2] bnxt_en: Zero pad firmware messages to 128 bytes Michael Chan
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Michael Chan @ 2016-01-08  0:56 UTC (permalink / raw)
  To: davem; +Cc: netdev

2 patches related to firmware for net-next.

Michael Chan (2):
  bnxt_en: Zero pad firmware messages to 128 bytes.
  bnxt_en: Reset embedded processor after applying firmware upgrade

 drivers/net/ethernet/broadcom/bnxt/bnxt.c         |  3 ++
 drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 46 +++++++++++++++++++++--
 2 files changed, 45 insertions(+), 4 deletions(-)

-- 
1.8.3.1

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

* [PATCH net-next 1/2] bnxt_en: Zero pad firmware messages to 128 bytes.
  2016-01-08  0:56 [PATCH net-next 0/2] bnxt_en: Zero pad fw messages and add fw reset Michael Chan
@ 2016-01-08  0:56 ` Michael Chan
  2016-01-08  0:56 ` [PATCH net-next 2/2] bnxt_en: Reset embedded processor after applying firmware upgrade Michael Chan
  2016-01-11  3:19 ` [PATCH net-next 0/2] bnxt_en: Zero pad fw messages and add fw reset David Miller
  2 siblings, 0 replies; 4+ messages in thread
From: Michael Chan @ 2016-01-08  0:56 UTC (permalink / raw)
  To: davem; +Cc: netdev

For future compatibility, zero pad all messages that the driver sends
to the firmware to 128 bytes.  If these messages are extended in the
future with new byte enables, zero padding these messages now will
guarantee future compatibility.

Signed-off-by: Michael Chan <mchan@broadcom.com>
---
 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index f956949..287bfb7 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -2614,6 +2614,9 @@ int _hwrm_send_message(struct bnxt *bp, void *msg, u32 msg_len, int timeout)
 	/* Write request msg to hwrm channel */
 	__iowrite32_copy(bp->bar0, data, msg_len / 4);
 
+	for (i = msg_len; i < HWRM_MAX_REQ_LEN; i += 4)
+		writel(0, bp->bar0 + i);
+
 	/* currently supports only one outstanding message */
 	if (intr_process)
 		bp->hwrm_intr_seq_id = le32_to_cpu(req->target_id_seq_id) &
-- 
1.8.3.1

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

* [PATCH net-next 2/2] bnxt_en: Reset embedded processor after applying firmware upgrade
  2016-01-08  0:56 [PATCH net-next 0/2] bnxt_en: Zero pad fw messages and add fw reset Michael Chan
  2016-01-08  0:56 ` [PATCH net-next 1/2] bnxt_en: Zero pad firmware messages to 128 bytes Michael Chan
@ 2016-01-08  0:56 ` Michael Chan
  2016-01-11  3:19 ` [PATCH net-next 0/2] bnxt_en: Zero pad fw messages and add fw reset David Miller
  2 siblings, 0 replies; 4+ messages in thread
From: Michael Chan @ 2016-01-08  0:56 UTC (permalink / raw)
  To: davem; +Cc: netdev

From: Rob Swindell <swindell@broadcom.com>

Use HWRM_FW_RESET command to request a self-reset of the embedded
processor(s) after successfully applying a firmware update. For boot
processor, the self-reset is currently deferred until the next PCIe reset.

Signed-off-by: Rob Swindell <swindell@broadcom.com>
Signed-off-by: Michael Chan <mchan@broadcom.com>
---
 drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 46 +++++++++++++++++++++--
 1 file changed, 42 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
index 4f62c9f..922b898 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
@@ -837,6 +837,45 @@ static int bnxt_flash_nvram(struct net_device *dev,
 	return rc;
 }
 
+static int bnxt_firmware_reset(struct net_device *dev,
+			       u16 dir_type)
+{
+	struct bnxt *bp = netdev_priv(dev);
+	struct hwrm_fw_reset_input req = {0};
+
+	bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_FW_RESET, -1, -1);
+
+	/* TODO: Support ASAP ChiMP self-reset (e.g. upon PF driver unload) */
+	/* TODO: Address self-reset of APE/KONG/BONO/TANG or ungraceful reset */
+	/*       (e.g. when firmware isn't already running) */
+	switch (dir_type) {
+	case BNX_DIR_TYPE_CHIMP_PATCH:
+	case BNX_DIR_TYPE_BOOTCODE:
+	case BNX_DIR_TYPE_BOOTCODE_2:
+		req.embedded_proc_type = FW_RESET_REQ_EMBEDDED_PROC_TYPE_BOOT;
+		/* Self-reset ChiMP upon next PCIe reset: */
+		req.selfrst_status = FW_RESET_REQ_SELFRST_STATUS_SELFRSTPCIERST;
+		break;
+	case BNX_DIR_TYPE_APE_FW:
+	case BNX_DIR_TYPE_APE_PATCH:
+		req.embedded_proc_type = FW_RESET_REQ_EMBEDDED_PROC_TYPE_MGMT;
+		break;
+	case BNX_DIR_TYPE_KONG_FW:
+	case BNX_DIR_TYPE_KONG_PATCH:
+		req.embedded_proc_type =
+			FW_RESET_REQ_EMBEDDED_PROC_TYPE_NETCTRL;
+		break;
+	case BNX_DIR_TYPE_BONO_FW:
+	case BNX_DIR_TYPE_BONO_PATCH:
+		req.embedded_proc_type = FW_RESET_REQ_EMBEDDED_PROC_TYPE_ROCE;
+		break;
+	default:
+		return -EINVAL;
+	}
+
+	return hwrm_send_message(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT);
+}
+
 static int bnxt_flash_firmware(struct net_device *dev,
 			       u16 dir_type,
 			       const u8 *fw_data,
@@ -894,10 +933,9 @@ static int bnxt_flash_firmware(struct net_device *dev,
 	/* TODO: Validate digital signature (RSA-encrypted SHA-256 hash) here */
 	rc = bnxt_flash_nvram(dev, dir_type, BNX_DIR_ORDINAL_FIRST,
 			      0, 0, fw_data, fw_size);
-	if (rc == 0) {	/* Firmware update successful */
-		/* TODO: Notify processor it needs to reset itself
-		 */
-	}
+	if (rc == 0)	/* Firmware update successful */
+		rc = bnxt_firmware_reset(dev, dir_type);
+
 	return rc;
 }
 
-- 
1.8.3.1

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

* Re: [PATCH net-next 0/2] bnxt_en: Zero pad fw messages and add fw reset.
  2016-01-08  0:56 [PATCH net-next 0/2] bnxt_en: Zero pad fw messages and add fw reset Michael Chan
  2016-01-08  0:56 ` [PATCH net-next 1/2] bnxt_en: Zero pad firmware messages to 128 bytes Michael Chan
  2016-01-08  0:56 ` [PATCH net-next 2/2] bnxt_en: Reset embedded processor after applying firmware upgrade Michael Chan
@ 2016-01-11  3:19 ` David Miller
  2 siblings, 0 replies; 4+ messages in thread
From: David Miller @ 2016-01-11  3:19 UTC (permalink / raw)
  To: mchan; +Cc: netdev

From: Michael Chan <mchan@broadcom.com>
Date: Thu, 7 Jan 2016 19:56:56 -0500

> 2 patches related to firmware for net-next.

Series applied, thanks Michael.

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

end of thread, other threads:[~2016-01-11  3:19 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-01-08  0:56 [PATCH net-next 0/2] bnxt_en: Zero pad fw messages and add fw reset Michael Chan
2016-01-08  0:56 ` [PATCH net-next 1/2] bnxt_en: Zero pad firmware messages to 128 bytes Michael Chan
2016-01-08  0:56 ` [PATCH net-next 2/2] bnxt_en: Reset embedded processor after applying firmware upgrade Michael Chan
2016-01-11  3:19 ` [PATCH net-next 0/2] bnxt_en: Zero pad fw messages and add fw reset David Miller

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).