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® 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® Ethernet, visit http://communities.intel.com/community/wired