On Fri, Jul 12, 2013 at 01:08:09AM +0300, Faidon Liambotis wrote: > During the pruning of the device tree octeon_fdt_pip_iface() is called > for each PIP interface and every port up to the port count is removed > from the device tree. However, the count was set to the return value of > cvmx_helper_interface_enumerate() which doesn't actually return the > count but just returns zero on success. This effectively removed *all* > ports from the tree. > > Use cvmx_helper_ports_on_interface() instead to fix this. This > successfully restores the 3 ports of my ERLite-3 and fixes the "kernel > assigns random MAC addresses" issue. > > Signed-off-by: Faidon Liambotis <paravoid@xxxxxxxxxx> Tested-by: Aaro Koskinen <aaro.koskinen@xxxxxx> Thanks, A. > --- > arch/mips/cavium-octeon/octeon-platform.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/arch/mips/cavium-octeon/octeon-platform.c b/arch/mips/cavium-octeon/octeon-platform.c > index 389512e..250eb20 100644 > --- a/arch/mips/cavium-octeon/octeon-platform.c > +++ b/arch/mips/cavium-octeon/octeon-platform.c > @@ -334,9 +334,10 @@ static void __init octeon_fdt_pip_iface(int pip, int idx, u64 *pmac) > char name_buffer[20]; > int iface; > int p; > - int count; > + int count = 0; > > - count = cvmx_helper_interface_enumerate(idx); > + if (cvmx_helper_interface_enumerate(idx) == 0) > + count = cvmx_helper_ports_on_interface(idx); > > snprintf(name_buffer, sizeof(name_buffer), "interface@%d", idx); > iface = fdt_subnode_offset(initial_boot_params, pip, name_buffer); > -- > 1.8.3.2 > >