svn commit: r297451 - head/sys/dev/vnic
Zbigniew Bodek
zbb at FreeBSD.org
Thu Mar 31 13:13:40 UTC 2016
Author: zbb
Date: Thu Mar 31 13:13:38 2016
New Revision: 297451
URL: https://svnweb.freebsd.org/changeset/base/297451
Log:
Fix MAC address configuration for VNIC
The FDT description is as follows:
- phy-handle, reg, qlm-mode, mac-address are under nodes in bgx0/1 node
- phy nodes (pointed by phy-handle) are under MDIO even though they may
not be connected through to MDIO. In those nodes they do not contain
MAC address or etc.
This commit changes parsing of the FDT nodes for BGX so that it can
obtain correct MAC address for a given PHY.
Reviewed by: wma
Obtained from: Semihalf
Sponsored by: Cavium
Differential Revision: https://reviews.freebsd.org/D5781
Modified:
head/sys/dev/vnic/thunder_bgx_fdt.c
Modified: head/sys/dev/vnic/thunder_bgx_fdt.c
==============================================================================
--- head/sys/dev/vnic/thunder_bgx_fdt.c Thu Mar 31 13:10:29 2016 (r297450)
+++ head/sys/dev/vnic/thunder_bgx_fdt.c Thu Mar 31 13:13:38 2016 (r297451)
@@ -285,18 +285,9 @@ bgx_fdt_init_phy(struct bgx *bgx)
continue;
}
- if (OF_getencprop(child, "phy-handle", &phy,
- sizeof(phy)) <= 0) {
- if (bootverbose) {
- device_printf(bgx->dev,
- "No phy-handle in PHY node. Skipping...\n");
- }
- continue;
- }
/* Acquire PHY address */
- phy = OF_node_from_xref(phy);
- if (OF_getencprop(phy, "reg", &bgx->lmac[lmac].phyaddr,
+ if (OF_getencprop(child, "reg", &bgx->lmac[lmac].phyaddr,
sizeof(bgx->lmac[lmac].phyaddr)) <= 0) {
if (bootverbose) {
device_printf(bgx->dev,
@@ -305,6 +296,15 @@ bgx_fdt_init_phy(struct bgx *bgx)
bgx->lmac[lmac].phyaddr = MII_PHY_ANY;
}
+ if (OF_getencprop(child, "phy-handle", &phy,
+ sizeof(phy)) <= 0) {
+ if (bootverbose) {
+ device_printf(bgx->dev,
+ "No phy-handle in PHY node. Skipping...\n");
+ }
+ continue;
+ }
+ phy = OF_instance_to_package(phy);
/*
* Get PHY interface (MDIO bus) device.
* Driver must be already attached.
@@ -321,7 +321,7 @@ bgx_fdt_init_phy(struct bgx *bgx)
}
/* Get mac address from FDT */
- bgx_fdt_get_macaddr(phy, bgx->lmac[lmac].mac);
+ bgx_fdt_get_macaddr(child, bgx->lmac[lmac].mac);
bgx->lmac[lmac].lmacid = lmac;
lmac++;
More information about the svn-src-head
mailing list