The reason the lan_id variable exist at all is so we can store the func value 
regardless of the FACTPS LAN Function Sel does to it.  You can think of func as 
a logical value and lan_id as a physical.  We need to keep this value since the 
init of the SFP+ PHYs is different based on which physical port it is plugged 
into.

Thanks,
-Don Skidmore <donald.c.skidm...@intel.com>

> -----Original Message-----
> From: narendr...@dell.com [mailto:narendr...@dell.com]
> Sent: Monday, March 04, 2013 5:21 AM
> To: e1000-devel@lists.sourceforge.net
> Cc: charles_r...@dell.com
> Subject: [E1000-devel] ixgbe - lan id needs to be set after the port swap
> check ?
> 
> Hello,
> 
> While looking into the function 'ixgbe_set_lan_id_multi_port_pcie', it
> seemed like 'bus->lan_id' needs to be set after the port swap check. I might
> be missing some detail here as setting 'bus->lan_id' before port swap check
> may be by design. If it is an issue, please consider applying the following
> patch. The patch applies to linux kernel 3.8.
> 
> Also, 'bus->lan_id' (or bus->func) indicates the physical port number used by
> the netdevice. Is the understanding correct ?
> 
> 
> From: Narendra K <narendr...@dell.com>
> Subject: [PATCH] Set lan_id after the port swap check
> 
> 'bus->lan_id' is set to 'bus->func', but 'bus->func' can change if port swap 
> is
> enabled. Address it by setting 'bus->lan_id' after the port swap check.
> 
> Signed-off-by: Narendra K <narendr...@dell.com>
> ---
>  drivers/net/ethernet/intel/ixgbe/ixgbe_common.c |    3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c
> b/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c
> index 5e68afd..cde335d 100644
> --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c
> +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c
> @@ -659,12 +659,13 @@ void ixgbe_set_lan_id_multi_port_pcie(struct
> ixgbe_hw *hw)
> 
>       reg = IXGBE_READ_REG(hw, IXGBE_STATUS);
>       bus->func = (reg & IXGBE_STATUS_LAN_ID) >>
> IXGBE_STATUS_LAN_ID_SHIFT;
> -     bus->lan_id = bus->func;
> 
>       /* check for a port swap */
>       reg = IXGBE_READ_REG(hw, IXGBE_FACTPS);
>       if (reg & IXGBE_FACTPS_LFS)
>               bus->func ^= 0x1;
> +
> +     bus->lan_id = bus->func;
>  }
> 
>  /**
> --
> 1.7.10.1
> 
> --
> With regards,
> Narendra K
> 
> ------------------------------------------------------------------------------
> Everyone hates slow websites. So do we.
> Make your web apps faster with AppDynamics Download AppDynamics Lite
> for free today:
> http://p.sf.net/sfu/appdyn_d2d_feb
> _______________________________________________
> E1000-devel mailing list
> E1000-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/e1000-devel
> To learn more about Intel&#174; Ethernet, visit
> http://communities.intel.com/community/wired

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_feb
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel&#174; Ethernet, visit 
http://communities.intel.com/community/wired

Reply via email to