Bug 228828

Summary: [arm64] ThunderX version 1 requires changes to vnic driver
Product: Base System Reporter: Sean Bruno <sbruno>
Component: kernAssignee: Andrew Turner <Andrew>
Status: Closed FIXED    
Severity: Affects Some People CC: Andrew, emaste, net
Priority: --- Keywords: patch
Version: CURRENT   
Hardware: arm64   
OS: Any   

Description Sean Bruno freebsd_committer freebsd_triage 2018-06-08 14:50:02 UTC
Index: /usr/src/sys/dev/vnic/thunder_bgx_fdt.c
===================================================================
--- /usr/src/sys/dev/vnic/thunder_bgx_fdt.c	(revision 331373)
+++ /usr/src/sys/dev/vnic/thunder_bgx_fdt.c	(working copy)
@@ -93,12 +93,12 @@
 	switch (bgx->qlm_mode) {
 	case QLM_MODE_SGMII:
 		type = "sgmii";
-		sz = sizeof("sgmii") - 1;
+		sz = sizeof("sgmii");
 		offset = size - sz;
 		break;
 	case QLM_MODE_XAUI_1X4:
 		type = "xaui";
-		sz = sizeof("xaui") - 1;
+		sz = sizeof("xaui");
 		offset = size - sz;
 		if (offset < 0)
 			return (FALSE);
@@ -105,32 +105,32 @@
 		if (strncmp(&qlm_mode[offset], type, sz) == 0)
 			return (TRUE);
 		type = "dxaui";
-		sz = sizeof("dxaui") - 1;
+		sz = sizeof("dxaui");
 		offset = size - sz;
 		break;
 	case QLM_MODE_RXAUI_2X2:
 		type = "raui";
-		sz = sizeof("raui") - 1;
+		sz = sizeof("raui");
 		offset = size - sz;
 		break;
 	case QLM_MODE_XFI_4X1:
 		type = "xfi";
-		sz = sizeof("xfi") - 1;
+		sz = sizeof("xfi");
 		offset = size - sz;
 		break;
 	case QLM_MODE_XLAUI_1X4:
 		type = "xlaui";
-		sz = sizeof("xlaui") - 1;
+		sz = sizeof("xlaui");
 		offset = size - sz;
 		break;
 	case QLM_MODE_10G_KR_4X1:
 		type = "xfi-10g-kr";
-		sz = sizeof("xfi-10g-kr") - 1;
+		sz = sizeof("xfi-10g-kr");
 		offset = size - sz;
 		break;
 	case QLM_MODE_40G_KR4_1X4:
 		type = "xlaui-40g-kr";
-		sz = sizeof("xlaui-40g-kr") - 1;
+		sz = sizeof("xlaui-40g-kr");
 		offset = size - sz;
 		break;
 	default:
@@ -155,37 +155,37 @@
 	switch (bgx->qlm_mode) {
 	case QLM_MODE_SGMII:
 		type = "sgmii";
-		sz = sizeof("sgmii") - 1;
+		sz = sizeof("sgmii");
 		break;
 	case QLM_MODE_XAUI_1X4:
 		type = "xaui";
-		sz = sizeof("xaui") - 1;
+		sz = sizeof("xaui");
 		if (sz < size)
 			return (FALSE);
 		if (strncmp(phy_name, type, sz) == 0)
 			return (TRUE);
 		type = "dxaui";
-		sz = sizeof("dxaui") - 1;
+		sz = sizeof("dxaui");
 		break;
 	case QLM_MODE_RXAUI_2X2:
 		type = "raui";
-		sz = sizeof("raui") - 1;
+		sz = sizeof("raui");
 		break;
 	case QLM_MODE_XFI_4X1:
 		type = "xfi";
-		sz = sizeof("xfi") - 1;
+		sz = sizeof("xfi");
 		break;
 	case QLM_MODE_XLAUI_1X4:
 		type = "xlaui";
-		sz = sizeof("xlaui") - 1;
+		sz = sizeof("xlaui");
 		break;
 	case QLM_MODE_10G_KR_4X1:
 		type = "xfi-10g-kr";
-		sz = sizeof("xfi-10g-kr") - 1;
+		sz = sizeof("xfi-10g-kr");
 		break;
 	case QLM_MODE_40G_KR4_1X4:
 		type = "xlaui-40g-kr";
-		sz = sizeof("xlaui-40g-kr") - 1;
+		sz = sizeof("xlaui-40g-kr");
 		break;
 	default:
 		return (FALSE);
Comment 1 Sean Bruno freebsd_committer freebsd_triage 2018-06-08 14:50:41 UTC
Tracking bug here so that *I* personally don't forget about this code.
Comment 2 commit-hook freebsd_committer freebsd_triage 2018-06-09 17:16:38 UTC
A commit references this bug:

Author: andrew
Date: Sat Jun  9 14:47:49 UTC 2018
New revision: 334880
URL: https://svnweb.freebsd.org/changeset/base/334880

Log:
  In the ThunderX BGX network driver we were skipping the NULL terminator
  when parsing the phy type, however this is included in the length returned
  by OF_getprop. To fix this stop ignoring the terminator.

  PR:		228828
  Reported by:	sbruno
  Sponsored by:	DARPA, AFRL

Changes:
  head/sys/dev/vnic/thunder_bgx_fdt.c