Subject: Re: [patch net-next v4 4/4] igb/igbvf: implement ndo_get_phys_port_id

From: Alexander Duyck <[email-masked]>
Date: Thu, 25 Jul 2013 11:00:06 -0700

On 07/25/2013 09:44 AM, Ben Hutchings wrote:
> On Thu, 2013-07-25 at 09:17 -0700, Alexander Duyck wrote:
>> On 07/25/2013 06:03 AM, Jiri Pirko wrote:
>>> @@ -1982,6 +2001,21 @@ static s32 igb_init_i2c(struct igb_adapter *adapter)
>>>  	return status;
>>>  }
>>>  
>>> +static void igb_compute_phys_port_id(struct igb_adapter *adapter)
>>> +{
>>> +	adapter->phys_port_id = *((u32 *) adapter->netdev->dev_addr);
>>> +	adapter->phys_port_id ^= *((u32 *) adapter->netdev->dev_addr + 4);
>>> +	adapter->phys_port_id ^= (long) adapter;
>>> +	adapter->phys_port_id ^= (long) adapter->hw.hw_addr;
>>> +	adapter->phys_port_id ^= (long) adapter->hw.flash_address;
>>> +	adapter->phys_port_id ^= (u32) adapter->hw.io_base;
>>> +	adapter->phys_port_id ^= adapter->hw.device_id;
>>> +	adapter->phys_port_id ^= adapter->hw.subsystem_vendor_id;
>>> +	adapter->phys_port_id ^= adapter->hw.subsystem_device_id;
>>> +	adapter->phys_port_id ^= adapter->hw.vendor_id;
>>> +	adapter->phys_port_id ^= adapter->hw.revision_id;
> I didn't look at Jiri's patch initially, but... what's wrong with using
> the MAC address from NVRAM (should already be in netdev->perm_addr)?
> That's what I'm expecting to do for the SFC9000 family in sfc.
>
>>> +}
>>> +
>>>  /**
>>>   *  igb_probe - Device Initialization Routine
>>>   *  @pdev: PCI device information struct
>> I really think this bit here should be standardized and made available
>> to all drivers.
> [...]
>
> I think it's a bad example and should not be used in any drivers!
>
> Ben.
>

I agree.  That is why the second paragraph started listing what was
wrong with this implementation.  What I said was meant in the more
general sense that whatever solution should be used should be the same
across multiple drivers, not up to each driver to compute.

Thanks,

Alex