| Summary: | [arm64] ThunderX version 1 requires changes to vnic driver | ||
|---|---|---|---|
| Product: | Base System | Reporter: | Sean Bruno <sbruno> |
| Component: | kern | Assignee: | Andrew Turner <Andrew> |
| Status: | Closed FIXED | ||
| Severity: | Affects Some People | CC: | Andrew, emaste, net |
| Priority: | --- | Keywords: | patch |
| Version: | CURRENT | ||
| Hardware: | arm64 | ||
| OS: | Any | ||
Tracking bug here so that *I* personally don't forget about this code. 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 |
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);