Thread (16 messages) 16 messages, 3 authors, 2015-11-04

RE: [PATCH v3 net] i40e: Look up MAC address in Open Firmware or IDPROM

From: Nelson, Shannon <hidden>
Date: 2015-10-30 18:57:32
Also in: intel-wired-lan, lkml

-----Original Message-----
From: Sowmini Varadhan [mailto:sowmini.varadhan@oracle.com]
Sent: Friday, October 30, 2015 11:37 AM
To: 
Subject: Re: [PATCH v3 net] i40e: Look up MAC address in Open Firmware or
IDPROM

On (10/30/15 18:28), Nelson, Shannon wrote:
quoted
Going along with this being the equivalent of the ixgbe patch, I'd
prefer the new code to be in i40e_main.c, rather than in i40e_common.c.
In the design of our drivers, the common file is essentially a device
specific layer, and the OS and platform related stuff should stay in
i40e_main.c.  That would also take care of one of the include file nits
that Andy mentioned.
ok, and that was my initial instinct as well, except that I noticed
that the existing i40e code tries interesting variations from the
typical intel driver model by calling i40e_get_mac_addr() which lives in
(for reasons not obvious to me) i40e_common.c

So I assumed there must be some other deeper wisdom at work here.
I'm not sure about any deeper wisdom, but the HW/FW model that this device uses is rather different from our previous devices, so our SW abstractions are a little different from ixgbe and igb.
quoted
At the risk of flying my Device Tree ignorance for all to see, I have
a couple questions on how this is used.

Since the mac address is specific to the individual device, how does it
get into the device tree?  I thought the device tree was compiled ahead
of time for the platform it is used on.  Is this a generic DT pattern
just in case some platform actually has the mac-address?  Or does the
device mac-address get saved into the DT on the first time through this
path so it can be found next time?

If the Device Tree has a different mac address than the HW, when
does the kernel tell the HW to use a different mac address?  Does the
DT management eventually call the ndo_set_mac_address call so the HW
knows to use a different mac address?
yes, and here I was hoping for some feedback from the intel folks as
well. Commit c762dff24c06 sets hw->mac.perm_addr. I dont know
if there is some similar i40e state that needs to be set.

Please share insights.

--Sowmini
Forgive me if you're already up with this, I just want to be sure we're thinking along the same lines.

The HW has a mac address burned into its own eeprom which it will use by default.  The driver merely queries the HW to find out what that mac address is and report it to the OS so it can be registered correctly in the netdev.

If a different mac address is desired, perhaps from the user issuing an "ip link" or ifconfig command, the OS will call the netdev's ndo_set_mac_address to tell the driver.  In our case, the driver then tells the HW device to filter for the new mac address rather than the eeprom'd address.  This remains until a reset when the HW goes back to its eeprom'd address.

In the cases in which I'm aware, the platform manufacturer normally will burn a different mac-address into the device's eeprom at manufacturing time if they want something other than what came from Intel.  I suppose a Device Tree oriented platform could have a different address in the DT, but somehow that needs to get communicated to the device driver so that it can tell the HW.

My question to you remains: does this ndo_set_mac_address happen from the stack above the driver or not?

Thanks,
sln
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help