Thread (13 messages) 13 messages, 4 authors, 2018-12-01

Re: [PATCH net-next 1/2] ixgbe: register a mdiobus

From: Steve Douthit <hidden>
Date: 2018-12-01 04:44:28

On 11/30/18 11:34 AM, Andrew Lunn wrote:
quoted
Yep, registering multiple interfaces is wrong.  The first board I tested
against only had a single MAC enabled (they can be disabled/hidden via
straps) so it just happened to work.
Hi Steve

Can you hide any/all via straps, or is 00.0 always guaranteed to
exist?
You can hide all the devices, but if function 1 is enabled then function
0 must also be enabled, so not all combinations are valid.
quoted
The Intel C3xxx family of SoCs have up to four ixgbe MACs.  These are
structured as two devices of two functions each on fixed internal root
ports.

from lspci:
<snip>
             +-16.0-[05]--+-00.0
             |            \-00.1
             +-17.0-[06]--+-00.0
             |            \-00.1
<snip>
Is there any other hardware resource which is shared between the MAC
interfaces? I'm just wondering if the driver has already solved this
once. Is there an EEPROM per interface for the MAC address, or one
shared EEPROM?
NVM is shared, it's actually the same SPI flash that holds the BIOS for
this SoC.  Access is serialized by the swfw_sync semaphore.  I think the
device firmware is automagically handling offset translation.

I don't think that helps for this case.

There might be a better match for shared resources, but nothing springs
to mind.
Ah, how about using the 'cards_found' found variable. It is not
perfect, in that it is not decremented in ixgb_remove(), and i wonder
about race conditions since there does not appear to be any lock when
it is incremented. But if cards_found == 0, register the MDIO bus.
'cards_found' doesn't exist for the ixgbe driver.  I could add it and
fix the race/decrement issues you mention, but it'd have to be a device
type specific count.  It's still possible there are other non-x550em_a
ixgbe devices in external PCIe slots that have different resource
sharing setups.

It's still a lighter weight solution than poking around the parent bus
so I'll add a 'x550em_a_devs_found' counter to v2.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help