Parav Pandit
2021-Aug-06 08:55 UTC
[PATCH linux-next v3 0/6] vdpa: enable user to set mac, mtu
> From: Michael S. Tsirkin <mst at redhat.com> > Sent: Friday, August 6, 2021 2:12 PM> > enum vdpa_attr { > > @@ -33,6 +34,16 @@ enum vdpa_attr { > > VDPA_ATTR_DEV_MAX_VQS, /* u32 */ > > VDPA_ATTR_DEV_MAX_VQ_SIZE, /* u16 */ > > + VDPA_ATTR_DEV_NET_CFG_MACADDR, /* binary */ > > + VDPA_ATTR_DEV_NET_STATUS, /* u8 */ > > + VDPA_ATTR_DEV_NET_CFG_MAX_VQP, /* u16 */ > > + VDPA_ATTR_DEV_NET_CFG_MTU, /* u16 */ > > + VDPA_ATTR_DEV_NET_CFG_SPEED, /* u16 */ > > + VDPA_ATTR_DEV_NET_CFG_DUPLEX, /* u16 */ > > + VDPA_ATTR_DEV_NET_CFG_RSS_MAX_KEY_LEN, /* u8 */ > > + VDPA_ATTR_DEV_NET_CFG_RSS_MAX_IT_LEN, /* u16 */ > > + VDPA_ATTR_DEV_NET_CFG_RSS_HASH_TYPES, /* u32 */ > > + > > /* new attributes must be added above here */ > > VDPA_ATTR_MAX, > > }; > > The point is to try and not reinvent a dedicated vpda interface where a > generic one exits. > E.g. for phy things such as mac speed etc, I think most people are using > ethtool things right?As you know vdpa is the backend device for the front-end netdevice accessed by the ethtool. vdpa management tool here is composing the vdpa device. For example creator (hypervisor) of the vdpa devices knows that a guest VM is given 4 vcpus, So hypervisor creates a vdpa devices with config space layout as, max_virtqueue_pairs = 4. And the MAC address chosen by hypervisor in mac[6]. Guest VM ethtool can still chose to use less number of channels. Typically, ethtool is for guest VM. vdpa device is in hypevisor. How can hypervisor compose a vdpa device without any tool? How can it tell ethtool, what is supported and what are the defaults? I must be misunderstanding your comment about ethtool. Can you please explain?
Jason Wang
2021-Aug-09 03:07 UTC
[PATCH linux-next v3 0/6] vdpa: enable user to set mac, mtu
? 2021/8/6 ??4:55, Parav Pandit ??:> >> From: Michael S. Tsirkin <mst at redhat.com> >> Sent: Friday, August 6, 2021 2:12 PM > >>> enum vdpa_attr { >>> @@ -33,6 +34,16 @@ enum vdpa_attr { >>> VDPA_ATTR_DEV_MAX_VQS, /* u32 */ >>> VDPA_ATTR_DEV_MAX_VQ_SIZE, /* u16 */ >>> + VDPA_ATTR_DEV_NET_CFG_MACADDR, /* binary */ >>> + VDPA_ATTR_DEV_NET_STATUS, /* u8 */ >>> + VDPA_ATTR_DEV_NET_CFG_MAX_VQP, /* u16 */ >>> + VDPA_ATTR_DEV_NET_CFG_MTU, /* u16 */ >>> + VDPA_ATTR_DEV_NET_CFG_SPEED, /* u16 */ >>> + VDPA_ATTR_DEV_NET_CFG_DUPLEX, /* u16 */ >>> + VDPA_ATTR_DEV_NET_CFG_RSS_MAX_KEY_LEN, /* u8 */ >>> + VDPA_ATTR_DEV_NET_CFG_RSS_MAX_IT_LEN, /* u16 */ >>> + VDPA_ATTR_DEV_NET_CFG_RSS_HASH_TYPES, /* u32 */ >>> + >>> /* new attributes must be added above here */ >>> VDPA_ATTR_MAX, >>> }; >> The point is to try and not reinvent a dedicated vpda interface where a >> generic one exits. >> E.g. for phy things such as mac speed etc, I think most people are using >> ethtool things right? > As you know vdpa is the backend device for the front-end netdevice accessed by the ethtool. > vdpa management tool here is composing the vdpa device. > > For example creator (hypervisor) of the vdpa devices knows that a guest VM is given 4 vcpus, > So hypervisor creates a vdpa devices with config space layout as, > max_virtqueue_pairs = 4. > And the MAC address chosen by hypervisor in mac[6]. > > Guest VM ethtool can still chose to use less number of channels. > > Typically, > ethtool is for guest VM. > vdpa device is in hypevisor. > > How can hypervisor compose a vdpa device without any tool? > How can it tell ethtool, what is supported and what are the defaults?Reread the cover letter: " This patchset enables users to set the mac address and mtu of the vdpa device once the device is created. " It looks to me the mechanism that introduced in the series is not for provisioning but for post-creation configuration?> > I must be misunderstanding your comment about ethtool. > Can you please explain?I guess the meaning is that, if the vDPA is assigned to guest, it's the charge of guest to configure the MTU/MAC/RSS via the existing management interface like ethtool/iproute2 netlink protocol. The control virtqueue is designed for this. But if it was used for provisioning, it looks like another topic which should be done during the device creation. Thanks>
Michael S. Tsirkin
2021-Aug-09 09:40 UTC
[PATCH linux-next v3 0/6] vdpa: enable user to set mac, mtu
On Fri, Aug 06, 2021 at 08:55:56AM +0000, Parav Pandit wrote:> > > > From: Michael S. Tsirkin <mst at redhat.com> > > Sent: Friday, August 6, 2021 2:12 PM > > > > > enum vdpa_attr { > > > @@ -33,6 +34,16 @@ enum vdpa_attr { > > > VDPA_ATTR_DEV_MAX_VQS, /* u32 */ > > > VDPA_ATTR_DEV_MAX_VQ_SIZE, /* u16 */ > > > + VDPA_ATTR_DEV_NET_CFG_MACADDR, /* binary */ > > > + VDPA_ATTR_DEV_NET_STATUS, /* u8 */ > > > + VDPA_ATTR_DEV_NET_CFG_MAX_VQP, /* u16 */ > > > + VDPA_ATTR_DEV_NET_CFG_MTU, /* u16 */ > > > + VDPA_ATTR_DEV_NET_CFG_SPEED, /* u16 */ > > > + VDPA_ATTR_DEV_NET_CFG_DUPLEX, /* u16 */ > > > + VDPA_ATTR_DEV_NET_CFG_RSS_MAX_KEY_LEN, /* u8 */ > > > + VDPA_ATTR_DEV_NET_CFG_RSS_MAX_IT_LEN, /* u16 */ > > > + VDPA_ATTR_DEV_NET_CFG_RSS_HASH_TYPES, /* u32 */ > > > + > > > /* new attributes must be added above here */ > > > VDPA_ATTR_MAX, > > > }; > > > > The point is to try and not reinvent a dedicated vpda interface where a > > generic one exits. > > E.g. for phy things such as mac speed etc, I think most people are using > > ethtool things right? > > As you know vdpa is the backend device for the front-end netdevice accessed by the ethtool. > vdpa management tool here is composing the vdpa device. > > For example creator (hypervisor) of the vdpa devices knows that a guest VM is given 4 vcpus, > So hypervisor creates a vdpa devices with config space layout as, > max_virtqueue_pairs = 4. > And the MAC address chosen by hypervisor in mac[6]. > > Guest VM ethtool can still chose to use less number of channels. > > Typically, > ethtool is for guest VM. > vdpa device is in hypevisor. > > How can hypervisor compose a vdpa device without any tool? > How can it tell ethtool, what is supported and what are the defaults? > > I must be misunderstanding your comment about ethtool. > Can you please explain?I am basically saying that we probably want to be able to change MAC of a VDPA device on the host without desroying and recreating the device as long as it's not in use. For a VF I can do this on the host: ip link set eth0 vf 1 mac 00:11:22:33:44:55 ideally same thing would work for vdpa. -- MST