Siwei Liu
2017-Dec-21 02:16 UTC
[RFC PATCH] virtio_net: Extend virtio to use VF datapath when available
On Tue, Dec 19, 2017 at 10:41 AM, Stephen Hemminger <stephen at networkplumber.org> wrote:> On Tue, 19 Dec 2017 13:21:17 -0500 (EST) > David Miller <davem at davemloft.net> wrote: > >> From: Stephen Hemminger <stephen at networkplumber.org> >> Date: Tue, 19 Dec 2017 09:55:48 -0800 >> >> > could be 10ms, just enough to let udev do its renaming >> >> Please, move to some kind of notification or event based handling of >> this problem. >> >> No delay is safe, what if userspace gets swapped out or whatever >> else might make userspace stall unexpectedly? >> > > The plan is to remove the delay and do the naming in the kernel. > This was suggested by Lennart since udev is only doing naming policy > because kernel names were not repeatable. > > This makes the VF show up as "ethN_vf" on Hyper-V which is user friendly. > > Patch is pending.While it's good to show VF with specific naming to indicate enslavement, I wonder wouldn't it be better to hide this netdev at all from the user space? IMHO this extra device is useless when being enslaved and we may delegate controls (e.g. ethtool) over to the para-virtual device instead? That way it's possible to eliminate the possibility of additional udev setup or modification? I'm not sure if this is consistent with Windows guest or not, but I don't find it _Linux_ user friendly that ethtool doesn't work on the composite interface any more, and I have to end up with finding out the correct enslaved VF I must operate on. Regards, -Siwei
Jakub Kicinski
2017-Dec-21 04:52 UTC
[RFC PATCH] virtio_net: Extend virtio to use VF datapath when available
On Wed, 20 Dec 2017 18:16:30 -0800, Siwei Liu wrote:> > The plan is to remove the delay and do the naming in the kernel. > > This was suggested by Lennart since udev is only doing naming policy > > because kernel names were not repeatable. > > > > This makes the VF show up as "ethN_vf" on Hyper-V which is user friendly. > > > > Patch is pending. > > While it's good to show VF with specific naming to indicate > enslavement, I wonder wouldn't it be better to hide this netdev at all > from the user space? IMHO this extra device is useless when being > enslaved and we may delegate controls (e.g. ethtool) over to the > para-virtual device instead? That way it's possible to eliminate the > possibility of additional udev setup or modification? > > I'm not sure if this is consistent with Windows guest or not, but I > don't find it _Linux_ user friendly that ethtool doesn't work on the > composite interface any more, and I have to end up with finding out > the correct enslaved VF I must operate on.Hiding "low level" netdevs comes up from time to time, and is more widely applicable than just to VF bonds. We should find a generic solution to that problem.
Siwei Liu
2017-Dec-22 08:42 UTC
[RFC PATCH] virtio_net: Extend virtio to use VF datapath when available
On Wed, Dec 20, 2017 at 8:52 PM, Jakub Kicinski <kubakici at wp.pl> wrote:> On Wed, 20 Dec 2017 18:16:30 -0800, Siwei Liu wrote: >> > The plan is to remove the delay and do the naming in the kernel. >> > This was suggested by Lennart since udev is only doing naming policy >> > because kernel names were not repeatable. >> > >> > This makes the VF show up as "ethN_vf" on Hyper-V which is user friendly. >> > >> > Patch is pending. >> >> While it's good to show VF with specific naming to indicate >> enslavement, I wonder wouldn't it be better to hide this netdev at all >> from the user space? IMHO this extra device is useless when being >> enslaved and we may delegate controls (e.g. ethtool) over to the >> para-virtual device instead? That way it's possible to eliminate the >> possibility of additional udev setup or modification? >> >> I'm not sure if this is consistent with Windows guest or not, but I >> don't find it _Linux_ user friendly that ethtool doesn't work on the >> composite interface any more, and I have to end up with finding out >> the correct enslaved VF I must operate on. > > Hiding "low level" netdevs comes up from time to time, and is more > widely applicable than just to VF bonds. We should find a generic > solution to that problem.Wholeheartedly agreed. Be it a generic virtual bond or virtio-net specific one, there should be some common code between netvsc and virtio for this type of work. For avoiding duplicated bugs, consistent (Linux) user experience, future code refactoring/management, and whatever... One thing worth to note is that, unlike the Hyper-V netvsc backend there's currently no equivalent (fine-grained) Linux ndo_* driver interface that is able to move around MAC address/VLAN filters at run-time specifically. The OID_RECEIVE_FILTER_MOVE_FILTER request I mean. That translates to one substantial difference in VF plumbing/unplumbing sequence: you cannot move the MAC address around to paravirt device until VF is fully unplugged out of the guest OS. I don't know what backend changes to be proposed for virtio-net as helper, but the common code needs to work with both flavors of data path switching backends and do its job correctly. Regards, -Siwei
Possibly Parallel Threads
- [RFC PATCH] virtio_net: Extend virtio to use VF datapath when available
- [RFC PATCH] virtio_net: Extend virtio to use VF datapath when available
- [RFC PATCH] virtio_net: Extend virtio to use VF datapath when available
- [RFC PATCH] virtio_net: Extend virtio to use VF datapath when available
- [RFC PATCH] virtio_net: Extend virtio to use VF datapath when available