Subject: Re: getting VF link info seems to be broken in 3.9-rc8

From: Greg Rose <[email-masked]>
Date: Wed, 24 Apr 2013 09:01:33 -0700

On Wed, 24 Apr 2013 08:38:25 -0700
Greg Rose <[email-masked]> wrote:

> On Wed, 24 Apr 2013 16:08:22 +0300
> Or Gerlitz <[email-masked]> wrote:
> 
> > [re-posting as of non text only content in the 1st post - sorry for
> > the spam] Rony Efraim <[email-masked]>observed a regression in
> > 3.9-rc8 with respect to getting VFs link info from user space. Using
> > latest iproute2 we can easily get the VF info on 3.8.8 but not on
> > the net git which is now aligned on 3.9-rc8, will try to bisect it
> > later today/tomorrow, but for the sake of maybe someone has an
> > insight of the bug, reporting it now...
> > 
> > You can see below that for eth10 and eth11 which are ixgbe PFs, the
> > VF info is reported on 3.8.8 but not on 3.9-rc8, we see the same
> > problem with patches to mlx4 which implement ndo_get_vf_info which
> > gives some evidence that the problem isn't in the ixgbe driver, but
> > rather somewhere else, maybe the networking core, from quick looking
> > on net/core/rtnetlink.c I don't see there a smoking gun, anyway
> 
> I'll forward this to our validation engineers and see if they're
> seeing the problem too.
> 
> - Greg

From our validation engineer Sibai Li (added to response):

I tested 3.9.0-rc8, I have no problem to list vf info. But I didn’t run
in FPP mode. But I don't think it's a matter. From the info he gave
here, I didn’t see he loaded the vf driver when he ran in kernel
3.9.0-rc8, but he did load the driver in 3.8.8.

---------

I'd add that having the VF driver loaded shouldn't make any difference.

- Greg

> 
> > 
> > net.git]# git log --oneline v3.8..v3.9-rc8 net/core/rtnetlink.c
> > 88c5b5c rtnetlink: Call nlmsg_parse() with correct header length
> > fcca143 rtnetlink: fix error return code in rtnl_link_fill()
> > a5b8db9 rtnetlink: Mask the rta_type when range checking
> > 84d73cd rtnl: fix info leak on RTM_GETLINK request for VF devices
> > b67bfe0 hlist: drop the node parameter from iterators
> > 1690be6 bridge: Add vlan support to static neighbors
> > 6cbdcee bridge: Dump vlan information from a bridge port
> > 407af32 bridge: Add netlink interface to configure vlans on bridge
> > ports c5c3510 netns: fdb: allow unprivileged users to add/del fdb
> > entries 2afb9b5 ethtool: set addr_assign_type to NET_ADDR_SET when
> > addr is passed on create
> > 471cb5a bonding: remove usage of dev->master
> > 898e506 rtnetlink: remove usage of dev->master
> > e7c3273 rtnl: use dev_set_mac_address() instead of plain ndo_
> > 9a57247 rtnl: expose carrier value with possibility to set it
> > 
> > 
> > Or.
> > 
> > --> using 3.8.8
> > 
> > # lspci | grep Eth
> > 01:00.0 Ethernet controller: Intel Corporation 82576 Gigabit
> > Network Connection (rev 01)
> > 01:00.1 Ethernet controller: Intel Corporation 82576 Gigabit
> > Network Connection (rev 01)
> > 05:00.0 Ethernet controller: Intel Corporation 82599EB 10-Gigabit 
> > SFI/SFP+ Network Connection (rev 01)
> > 05:00.1 Ethernet controller: Intel Corporation 82599EB 10-Gigabit 
> > SFI/SFP+ Network Connection (rev 01)
> > 05:10.0 Ethernet controller: Intel Corporation 82599 Ethernet
> > Controller Virtual Function (rev 01)
> > 05:10.1 Ethernet controller: Intel Corporation 82599 Ethernet
> > Controller Virtual Function (rev 01)
> > 
> > # cd /sys/class/net/
> > # ls -l
> > lrwxrwxrwx 1 root root 0 Apr 24 12:17 br0
> > -> ../../devices/virtual/net/br0 lrwxrwxrwx 1 root root 0 Apr 24
> > 12:17 eth0
> > -> ../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/net/eth0
> > lrwxrwxrwx 1 root root 0 Apr 24 12:17 eth1
> > -> ../../devices/pci0000:00/0000:00:01.0/0000:01:00.1/net/eth1
> > lrwxrwxrwx 1 root root 0 Apr 24 12:18 eth10
> > -> ../../devices/pci0000:00/0000:00:09.0/0000:05:00.1/net/eth10
> > lrwxrwxrwx 1 root root 0 Apr 24 12:18 eth11
> > -> ../../devices/pci0000:00/0000:00:09.0/0000:05:00.0/net/eth11
> > lrwxrwxrwx 1 root root 0 Apr 24 12:18 eth16
> > -> ../../devices/pci0000:00/0000:00:07.0/0000:04:00.0/net/eth16
> > lrwxrwxrwx 1 root root 0 Apr 24 12:18 eth17
> > -> ../../devices/pci0000:00/0000:00:07.0/0000:04:00.0/net/eth17
> > lrwxrwxrwx 1 root root 0 Apr 24 12:17 eth18
> > -> ../../devices/pci0000:00/0000:00:07.0/0000:04:00.1/net/eth18
> > lrwxrwxrwx 1 root root 0 Apr 24 12:17 eth19
> > -> ../../devices/pci0000:00/0000:00:07.0/0000:04:00.1/net/eth19
> > lrwxrwxrwx 1 root root 0 Apr 24 12:17 eth20
> > -> ../../devices/pci0000:00/0000:00:09.0/0000:05:10.1/net/eth20
> > lrwxrwxrwx 1 root root 0 Apr 24 12:17 eth22
> > -> ../../devices/pci0000:00/0000:00:09.0/0000:05:10.0/net/eth22
> > lrwxrwxrwx 1 root root 0 Apr 24 12:17 lo
> > -> ../../devices/virtual/net/lo
> > 
> > 
> > 
> > # modprobe -r ixgbevf
> > # ip link set dev eth10 vf 0 mac 00:10:00:10:00:10
> > # ip link set dev eth11 vf 0 mac 00:11:00:11:00:11
> > # modprobe ixgbevf
> > # ip link show
> > 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
> > mode DEFAULT
> >      link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
> > 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master
> > br0 state UP mode DEFAULT qlen 1000
> >      link/ether 00:25:90:36:9c:ec brd ff:ff:ff:ff:ff:ff
> > 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode 
> > DEFAULT qlen 1000
> >      link/ether 00:25:90:36:9c:ed brd ff:ff:ff:ff:ff:ff
> > 4: eth16: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode 
> > DEFAULT qlen 1000
> >      link/ether 00:02:c9:e6:01:11 brd ff:ff:ff:ff:ff:ff
> > 5: eth17: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode 
> > DEFAULT qlen 1000
> >      link/ether 00:02:c9:e6:01:12 brd ff:ff:ff:ff:ff:ff
> > 6: eth18: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode 
> > DEFAULT qlen 1000
> >      link/ether 00:02:c9:e6:02:11 brd ff:ff:ff:ff:ff:ff
> > 7: eth19: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode 
> > DEFAULT qlen 1000
> >      link/ether 00:02:c9:e6:02:12 brd ff:ff:ff:ff:ff:ff
> > 8: eth11: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq
> > state DOWN mode DEFAULT qlen 1000
> >      link/ether 00:1b:21:55:1d:00 brd ff:ff:ff:ff:ff:ff
> >      vf 0 MAC 00:11:00:11:00:11, spoof checking on
> > 9: eth10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state
> > UP mode DORMANT qlen 1000
> >      link/ether 00:1b:21:55:1d:01 brd ff:ff:ff:ff:ff:ff
> >      vf 0 MAC 00:10:00:10:00:10, spoof checking on
> > 12: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue
> > state UP mode DEFAULT
> >      link/ether 00:25:90:36:9c:ec brd ff:ff:ff:ff:ff:ff
> > 23: eth22: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN
> > mode DEFAULT qlen 1000
> >      link/ether 00:11:00:11:00:11 brd ff:ff:ff:ff:ff:ff
> > 24: eth20: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN
> > mode DEFAULT qlen 1000
> >      link/ether 00:10:00:10:00:10 brd ff:ff:ff:ff:ff:ff
> > 
> > 
> > --> using 3.9-rc8
> > 
> > # lspci | grep Eth
> > 01:00.0 Ethernet controller: Intel Corporation 82576 Gigabit
> > Network Connection (rev 01)
> > 01:00.1 Ethernet controller: Intel Corporation 82576 Gigabit
> > Network Connection (rev 01)
> > 05:00.0 Ethernet controller: Intel Corporation 82599EB 10-Gigabit 
> > SFI/SFP+ Network Connection (rev 01)
> > 05:00.1 Ethernet controller: Intel Corporation 82599EB 10-Gigabit 
> > SFI/SFP+ Network Connection (rev 01)
> > 05:10.0 Ethernet controller: Intel Corporation 82599 Ethernet
> > Controller Virtual Function (rev 01)
> > 05:10.1 Ethernet controller: Intel Corporation 82599 Ethernet
> > Controller Virtual Function (rev 01)
> > 
> > # cd /sys/class/net/
> > # ls -l
> > lrwxrwxrwx 1 root root 0 Apr 24 11:48 br0
> > -> ../../devices/virtual/net/br0 lrwxrwxrwx 1 root root 0 Apr 24
> > 11:48 eth0
> > -> ../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/net/eth0
> > lrwxrwxrwx 1 root root 0 Apr 24 11:48 eth1
> > -> ../../devices/pci0000:00/0000:00:01.0/0000:01:00.1/net/eth1
> > lrwxrwxrwx 1 root root 0 Apr 24 11:49 eth10
> > -> ../../devices/pci0000:00/0000:00:09.0/0000:05:00.1/net/eth10
> > lrwxrwxrwx 1 root root 0 Apr 24 11:49 eth11
> > -> ../../devices/pci0000:00/0000:00:09.0/0000:05:00.0/net/eth11
> > lrwxrwxrwx 1 root root 0 Apr 24 11:49 eth16
> > -> ../../devices/pci0000:00/0000:00:07.0/0000:04:00.0/net/eth16
> > lrwxrwxrwx 1 root root 0 Apr 24 11:48 eth17
> > -> ../../devices/pci0000:00/0000:00:07.0/0000:04:00.0/net/eth17
> > lrwxrwxrwx 1 root root 0 Apr 24 11:49 eth18
> > -> ../../devices/pci0000:00/0000:00:07.0/0000:04:00.1/net/eth18
> > lrwxrwxrwx 1 root root 0 Apr 24 11:48 eth19
> > -> ../../devices/pci0000:00/0000:00:07.0/0000:04:00.1/net/eth19
> > lrwxrwxrwx 1 root root 0 Apr 24 11:48 eth20
> > -> ../../devices/pci0000:00/0000:00:09.0/0000:05:10.1/net/eth20
> > lrwxrwxrwx 1 root root 0 Apr 24 11:48 eth22
> > -> ../../devices/pci0000:00/0000:00:09.0/0000:05:10.0/net/eth22
> > lrwxrwxrwx 1 root root 0 Apr 24 11:47 lo
> > -> ../../devices/virtual/net/lo
> > 
> > # ip  link show <--- no sign for VFs
> > 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
> > mode DEFAULT
> >      link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
> > 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master
> > br0 state UP mode DEFAULT qlen 1000
> >      link/ether 00:25:90:36:9c:ec brd ff:ff:ff:ff:ff:ff
> > 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode 
> > DEFAULT qlen 1000
> >      link/ether 00:25:90:36:9c:ed brd ff:ff:ff:ff:ff:ff
> > 4: eth11: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode 
> > DEFAULT qlen 1000
> >      link/ether 00:1b:21:55:1d:00 brd ff:ff:ff:ff:ff:ff
> > 5: eth10: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode 
> > DEFAULT qlen 1000
> >      link/ether 00:1b:21:55:1d:01 brd ff:ff:ff:ff:ff:ff
> > 6: eth16: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode 
> > DEFAULT qlen 1000
> >      link/ether 00:02:c9:e6:01:11 brd ff:ff:ff:ff:ff:ff
> > 7: eth17: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode 
> > DEFAULT qlen 1000
> >      link/ether 00:02:c9:e6:01:12 brd ff:ff:ff:ff:ff:ff
> > 8: eth18: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode 
> > DEFAULT qlen 1000
> >      link/ether 00:02:c9:e6:02:11 brd ff:ff:ff:ff:ff:ff
> > 9: eth19: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode 
> > DEFAULT qlen 1000
> >      link/ether 00:02:c9:e6:02:12 brd ff:ff:ff:ff:ff:ff
> > 10: eth22: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN
> > mode DEFAULT qlen 1000
> >      link/ether 3e:9c:76:28:d9:da brd ff:ff:ff:ff:ff:ff
> > 11: eth20: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN
> > mode DEFAULT qlen 1000
> >      link/ether ea:f6:42:a7:d9:40 brd ff:ff:ff:ff:ff:ff
> > 12: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue
> > state UP mode DEFAULT
> >      link/ether 00:25:90:36:9c:ec brd ff:ff:ff:ff:ff:ff
> 
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to [email-masked]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html