diff mbox

[net-next,v2,05/10] be2net: log digital signature errors while flashing FW image

Message ID 1451285364-9074-6-git-send-email-sathya.perla@avagotech.com
State Changes Requested, archived
Delegated to: David Miller
Headers show

Commit Message

Sathya Perla Dec. 28, 2015, 6:49 a.m. UTC
From: Suresh Reddy <suresh.reddy@avagotech.com>

From FW version 11.0 onwards, the FW supports a new "secure mode" feature
(based on a jumper setting on the adapter.) In this mode, the FW image when
flashed is authenticated with a digital signature. This patch logs
appropriate error messages and return a status to ethtool when errors
relating to FW image authentication occur.

Signed-off-by: Suresh Reddy <suresh.reddy@avagotech.com>
Signed-off-by: Sathya Perla <sathya.perla@avagotech.com>
---
 drivers/net/ethernet/emulex/benet/be_cmds.c | 11 +++++++++++
 drivers/net/ethernet/emulex/benet/be_cmds.h |  4 +++-
 2 files changed, 14 insertions(+), 1 deletion(-)

Comments

kernel test robot Dec. 28, 2015, 8:23 a.m. UTC | #1
Hi Suresh,

[auto build test WARNING on net-next/master]

url:    https://github.com/0day-ci/linux/commits/Sathya-Perla/be2net-patch-set/20151228-145423
config: x86_64-allmodconfig (attached as .config)
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All warnings (new ones prefixed by >>):

   drivers/net/ethernet/emulex/benet/be_cmds.c: In function 'be_flash_skyhawk':
>> drivers/net/ethernet/emulex/benet/be_cmds.c:2963:4: warning: enumeration value 'MCC_ADDL_STATUS_INSUFFICIENT_RESOURCES' not handled in switch [-Wswitch]
       switch (addl_status(status)) {
       ^
>> drivers/net/ethernet/emulex/benet/be_cmds.c:2963:4: warning: enumeration value 'MCC_ADDL_STATUS_FLASH_IMAGE_CRC_MISMATCH' not handled in switch [-Wswitch]
>> drivers/net/ethernet/emulex/benet/be_cmds.c:2963:4: warning: enumeration value 'MCC_ADDL_STATUS_TOO_MANY_INTERFACES' not handled in switch [-Wswitch]
>> drivers/net/ethernet/emulex/benet/be_cmds.c:2963:4: warning: enumeration value 'MCC_ADDL_STATUS_INSUFFICIENT_VLANS' not handled in switch [-Wswitch]

vim +/MCC_ADDL_STATUS_INSUFFICIENT_RESOURCES +2963 drivers/net/ethernet/emulex/benet/be_cmds.c

  2947				flash_offset_support = false;
  2948				goto retry_flash;
  2949			}
  2950	
  2951			/* For old FW images ignore ILLEGAL_FIELD error or errors on
  2952			 * UFI_DIR region
  2953			 */
  2954			if (old_fw_img &&
  2955			    (base_status(status) == MCC_STATUS_ILLEGAL_FIELD ||
  2956			     (img_optype == OPTYPE_UFI_DIR &&
  2957			      base_status(status) == MCC_STATUS_FAILED))) {
  2958				continue;
  2959			} else if (status) {
  2960				dev_err(dev, "Flashing section type 0x%x failed\n",
  2961					img_type);
  2962	
> 2963				switch (addl_status(status)) {
  2964				case MCC_ADDL_STATUS_MISSING_SIGNATURE:
  2965					dev_err(dev,
  2966						"Digital signature missing in FW\n");
  2967					return -EINVAL;
  2968				case MCC_ADDL_STATUS_INVALID_SIGNATURE:
  2969					dev_err(dev,
  2970						"Invalid digital signature in FW\n");
  2971					return -EINVAL;

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
diff mbox

Patch

diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.c b/drivers/net/ethernet/emulex/benet/be_cmds.c
index da3b398..91b4689 100644
--- a/drivers/net/ethernet/emulex/benet/be_cmds.c
+++ b/drivers/net/ethernet/emulex/benet/be_cmds.c
@@ -2959,6 +2959,17 @@  flash:
 		} else if (status) {
 			dev_err(dev, "Flashing section type 0x%x failed\n",
 				img_type);
+
+			switch (addl_status(status)) {
+			case MCC_ADDL_STATUS_MISSING_SIGNATURE:
+				dev_err(dev,
+					"Digital signature missing in FW\n");
+				return -EINVAL;
+			case MCC_ADDL_STATUS_INVALID_SIGNATURE:
+				dev_err(dev,
+					"Invalid digital signature in FW\n");
+				return -EINVAL;
+			}
 			return -EFAULT;
 		}
 	}
diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.h b/drivers/net/ethernet/emulex/benet/be_cmds.h
index 4b0ca99..16415ca 100644
--- a/drivers/net/ethernet/emulex/benet/be_cmds.h
+++ b/drivers/net/ethernet/emulex/benet/be_cmds.h
@@ -66,7 +66,9 @@  enum mcc_addl_status {
 	MCC_ADDL_STATUS_INSUFFICIENT_RESOURCES = 0x16,
 	MCC_ADDL_STATUS_FLASH_IMAGE_CRC_MISMATCH = 0x4d,
 	MCC_ADDL_STATUS_TOO_MANY_INTERFACES = 0x4a,
-	MCC_ADDL_STATUS_INSUFFICIENT_VLANS = 0xab
+	MCC_ADDL_STATUS_INSUFFICIENT_VLANS = 0xab,
+	MCC_ADDL_STATUS_INVALID_SIGNATURE = 0x56,
+	MCC_ADDL_STATUS_MISSING_SIGNATURE = 0x57
 };
 
 #define CQE_BASE_STATUS_MASK		0xFFFF