* [PATCH -next 0/2] virtio-net: Advised MTU feature
@ 2016-06-02 15:43 Aaron Conole
2016-06-02 15:43 ` [PATCH -next 1/2] virtio: Start feature MTU support Aaron Conole
2016-06-02 15:43 ` [PATCH -next 2/2] virtio_net: Read the advised MTU Aaron Conole
0 siblings, 2 replies; 11+ messages in thread
From: Aaron Conole @ 2016-06-02 15:43 UTC (permalink / raw)
To: virtualization, netdev, linux-kernel, Michael S. Tsirkin
The following series adds the ability for a hypervisor to set an MTU on the
guest during feature negotiation phase. This is useful for VM orchestration
when, for instance, tunneling is involved and the MTU of the various systems
should be homogenous.
The first patch adds the feature bit as described in the proposed VFIO spec
addition found at
https://lists.oasis-open.org/archives/virtio-dev/201603/msg00001.html
The second patch adds a user of the bit, and a warning when the guest changes
the MTU from the hypervisor advised MTU. Future patches may add more thorough
error handling.
Aaron Conole (2):
virtio: Start feature MTU support
virtio_net: Read the advised MTU
drivers/net/virtio_net.c | 7 +++++++
include/uapi/linux/virtio_net.h | 2 ++
2 files changed, 9 insertions(+)
--
2.5.5
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH -next 1/2] virtio: Start feature MTU support
2016-06-02 15:43 [PATCH -next 0/2] virtio-net: Advised MTU feature Aaron Conole
@ 2016-06-02 15:43 ` Aaron Conole
2016-06-02 16:17 ` Michael S. Tsirkin
2016-06-02 15:43 ` [PATCH -next 2/2] virtio_net: Read the advised MTU Aaron Conole
1 sibling, 1 reply; 11+ messages in thread
From: Aaron Conole @ 2016-06-02 15:43 UTC (permalink / raw)
To: virtualization, netdev, linux-kernel, Michael S. Tsirkin
This commit adds the feature bit and associated mtu device entry for the
virtio network device. Future commits will make use of these bits to
support negotiated MTU.
Signed-off-by: Aaron Conole <aconole@redhat.com>
---
include/uapi/linux/virtio_net.h | 2 ++
1 file changed, 2 insertions(+)
diff --git a/include/uapi/linux/virtio_net.h b/include/uapi/linux/virtio_net.h
index ec32293..751ff59 100644
--- a/include/uapi/linux/virtio_net.h
+++ b/include/uapi/linux/virtio_net.h
@@ -73,6 +73,8 @@ struct virtio_net_config {
* Legal values are between 1 and 0x8000
*/
__u16 max_virtqueue_pairs;
+ /* Default maximum transmit unit advice */
+ __u16 mtu;
} __attribute__((packed));
/*
--
2.5.5
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH -next 2/2] virtio_net: Read the advised MTU
2016-06-02 15:43 [PATCH -next 0/2] virtio-net: Advised MTU feature Aaron Conole
2016-06-02 15:43 ` [PATCH -next 1/2] virtio: Start feature MTU support Aaron Conole
@ 2016-06-02 15:43 ` Aaron Conole
2016-06-02 16:16 ` Michael S. Tsirkin
` (2 more replies)
1 sibling, 3 replies; 11+ messages in thread
From: Aaron Conole @ 2016-06-02 15:43 UTC (permalink / raw)
To: virtualization, netdev, linux-kernel, Michael S. Tsirkin
This patch checks the feature bit for the VIRTIO_NET_F_MTU feature. If it
exists, read the advised MTU and use it.
No proper error handling is provided for the case where a user changes the
negotiated MTU. A future commit will add proper error handling. Instead, a
warning is emitted if the guest changes the device MTU after previously
being given advice.
Signed-off-by: Aaron Conole <aconole@redhat.com>
---
drivers/net/virtio_net.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index e0638e5..ef5ee01 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -1896,6 +1896,12 @@ static int virtnet_probe(struct virtio_device *vdev)
if (virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_VQ))
vi->has_cvq = true;
+ if (virtio_has_feature(vdev, VIRTIO_NET_F_MTU)) {
+ dev->mtu = virtio_cread16(vdev,
+ offsetof(struct virtio_net_config,
+ mtu));
+ }
+
if (vi->any_header_sg)
dev->needed_headroom = vi->hdr_len;
@@ -2067,6 +2073,7 @@ static unsigned int features[] = {
VIRTIO_NET_F_GUEST_ANNOUNCE, VIRTIO_NET_F_MQ,
VIRTIO_NET_F_CTRL_MAC_ADDR,
VIRTIO_F_ANY_LAYOUT,
+ VIRTIO_NET_F_MTU,
};
static struct virtio_driver virtio_net_driver = {
--
2.5.5
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH -next 2/2] virtio_net: Read the advised MTU
2016-06-02 15:43 ` [PATCH -next 2/2] virtio_net: Read the advised MTU Aaron Conole
@ 2016-06-02 16:16 ` Michael S. Tsirkin
2016-06-02 17:10 ` Aaron Conole
[not found] ` <5750578E.4040406@hpe.com>
2016-06-02 17:25 ` kbuild test robot
2 siblings, 1 reply; 11+ messages in thread
From: Michael S. Tsirkin @ 2016-06-02 16:16 UTC (permalink / raw)
To: Aaron Conole; +Cc: virtualization, netdev, linux-kernel
On Thu, Jun 02, 2016 at 11:43:31AM -0400, Aaron Conole wrote:
> This patch checks the feature bit for the VIRTIO_NET_F_MTU feature. If it
> exists, read the advised MTU and use it.
>
> No proper error handling is provided for the case where a user changes the
> negotiated MTU. A future commit will add proper error handling. Instead, a
> warning is emitted if the guest changes the device MTU after previously
> being given advice.
I don't see a warning and I don't think it's needed.
Patch is ok commit log isn't.
> Signed-off-by: Aaron Conole <aconole@redhat.com>
> ---
> drivers/net/virtio_net.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> index e0638e5..ef5ee01 100644
> --- a/drivers/net/virtio_net.c
> +++ b/drivers/net/virtio_net.c
> @@ -1896,6 +1896,12 @@ static int virtnet_probe(struct virtio_device *vdev)
> if (virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_VQ))
> vi->has_cvq = true;
>
> + if (virtio_has_feature(vdev, VIRTIO_NET_F_MTU)) {
> + dev->mtu = virtio_cread16(vdev,
> + offsetof(struct virtio_net_config,
> + mtu));
> + }
> +
> if (vi->any_header_sg)
> dev->needed_headroom = vi->hdr_len;
>
> @@ -2067,6 +2073,7 @@ static unsigned int features[] = {
> VIRTIO_NET_F_GUEST_ANNOUNCE, VIRTIO_NET_F_MQ,
> VIRTIO_NET_F_CTRL_MAC_ADDR,
> VIRTIO_F_ANY_LAYOUT,
> + VIRTIO_NET_F_MTU,
> };
>
> static struct virtio_driver virtio_net_driver = {
> --
> 2.5.5
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH -next 1/2] virtio: Start feature MTU support
2016-06-02 15:43 ` [PATCH -next 1/2] virtio: Start feature MTU support Aaron Conole
@ 2016-06-02 16:17 ` Michael S. Tsirkin
2016-06-02 17:10 ` Aaron Conole
0 siblings, 1 reply; 11+ messages in thread
From: Michael S. Tsirkin @ 2016-06-02 16:17 UTC (permalink / raw)
To: Aaron Conole; +Cc: virtualization, netdev, linux-kernel
On Thu, Jun 02, 2016 at 11:43:30AM -0400, Aaron Conole wrote:
> This commit adds the feature bit and associated mtu device entry for the
> virtio network device. Future commits will make use of these bits to
> support negotiated MTU.
why split it out? Pls squash with the next patch.
> Signed-off-by: Aaron Conole <aconole@redhat.com>
> ---
> include/uapi/linux/virtio_net.h | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/include/uapi/linux/virtio_net.h b/include/uapi/linux/virtio_net.h
> index ec32293..751ff59 100644
> --- a/include/uapi/linux/virtio_net.h
> +++ b/include/uapi/linux/virtio_net.h
> @@ -73,6 +73,8 @@ struct virtio_net_config {
> * Legal values are between 1 and 0x8000
> */
> __u16 max_virtqueue_pairs;
> + /* Default maximum transmit unit advice */
> + __u16 mtu;
> } __attribute__((packed));
>
> /*
> --
> 2.5.5
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH -next 2/2] virtio_net: Read the advised MTU
[not found] ` <5750578E.4040406@hpe.com>
@ 2016-06-02 17:06 ` Aaron Conole
2016-06-02 18:02 ` Rick Jones
0 siblings, 1 reply; 11+ messages in thread
From: Aaron Conole @ 2016-06-02 17:06 UTC (permalink / raw)
To: Rick Jones; +Cc: Michael S. Tsirkin, virtualization, netdev, linux-kernel
Hi Rick,
In the future, please don't cut the list.
Rick Jones <rick.jones2@hpe.com> writes:
> On 06/02/2016 08:43 AM, Aaron Conole wrote:
>> This patch checks the feature bit for the VIRTIO_NET_F_MTU feature. If it
>> exists, read the advised MTU and use it.
>>
>> No proper error handling is provided for the case where a user changes the
>> negotiated MTU. A future commit will add proper error handling. Instead, a
>> warning is emitted if the guest changes the device MTU after previously
>> being given advice.
>
> One of the things I've been doing has been setting-up a cluster
> (OpenStack) with JumboFrames, and then setting MTUs on instance vNICs
> by hand to measure different MTU sizes. It would be a shame if such a
> thing were not possible in the future. Keeping a warning if shrinking
> the MTU would be good, leave the error (perhaps) to if an attempt is
> made to go beyond the advised value.
This was cut because it didn't make sense for such a warning to
be issued, but it seems like perhaps you may want such a feature? I
agree with Michael, after thinking about it, that I don't know what sort
of use the warning would serve. After all, if you're changing the MTU,
you must have wanted such a change to occur?
-Aaron
> happy benchmarking,
>
> rick jones
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH -next 1/2] virtio: Start feature MTU support
2016-06-02 16:17 ` Michael S. Tsirkin
@ 2016-06-02 17:10 ` Aaron Conole
0 siblings, 0 replies; 11+ messages in thread
From: Aaron Conole @ 2016-06-02 17:10 UTC (permalink / raw)
To: Michael S. Tsirkin; +Cc: virtualization, netdev, linux-kernel
"Michael S. Tsirkin" <mst@redhat.com> writes:
> On Thu, Jun 02, 2016 at 11:43:30AM -0400, Aaron Conole wrote:
>> This commit adds the feature bit and associated mtu device entry for the
>> virtio network device. Future commits will make use of these bits to
>> support negotiated MTU.
>
> why split it out? Pls squash with the next patch.
Okay. I thought the usual method was make a commit which introduces the
data structure changes, and then make a commit which hooks it up. I'll
squash this in the future.
>> Signed-off-by: Aaron Conole <aconole@redhat.com>
>> ---
>> include/uapi/linux/virtio_net.h | 2 ++
>> 1 file changed, 2 insertions(+)
>>
>> diff --git a/include/uapi/linux/virtio_net.h b/include/uapi/linux/virtio_net.h
>> index ec32293..751ff59 100644
>> --- a/include/uapi/linux/virtio_net.h
>> +++ b/include/uapi/linux/virtio_net.h
>> @@ -73,6 +73,8 @@ struct virtio_net_config {
>> * Legal values are between 1 and 0x8000
>> */
>> __u16 max_virtqueue_pairs;
>> + /* Default maximum transmit unit advice */
>> + __u16 mtu;
>> } __attribute__((packed));
>>
>> /*
>> --
>> 2.5.5
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH -next 2/2] virtio_net: Read the advised MTU
2016-06-02 16:16 ` Michael S. Tsirkin
@ 2016-06-02 17:10 ` Aaron Conole
0 siblings, 0 replies; 11+ messages in thread
From: Aaron Conole @ 2016-06-02 17:10 UTC (permalink / raw)
To: Michael S. Tsirkin; +Cc: virtualization, netdev, linux-kernel
"Michael S. Tsirkin" <mst@redhat.com> writes:
> On Thu, Jun 02, 2016 at 11:43:31AM -0400, Aaron Conole wrote:
>> This patch checks the feature bit for the VIRTIO_NET_F_MTU feature. If it
>> exists, read the advised MTU and use it.
>>
>> No proper error handling is provided for the case where a user changes the
>> negotiated MTU. A future commit will add proper error handling. Instead, a
>> warning is emitted if the guest changes the device MTU after previously
>> being given advice.
>
> I don't see a warning and I don't think it's needed.
> Patch is ok commit log isn't.
Okay, I'll fix it when I submit v2.
>> Signed-off-by: Aaron Conole <aconole@redhat.com>
>> ---
>> drivers/net/virtio_net.c | 7 +++++++
>> 1 file changed, 7 insertions(+)
>>
>> diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
>> index e0638e5..ef5ee01 100644
>> --- a/drivers/net/virtio_net.c
>> +++ b/drivers/net/virtio_net.c
>> @@ -1896,6 +1896,12 @@ static int virtnet_probe(struct virtio_device *vdev)
>> if (virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_VQ))
>> vi->has_cvq = true;
>>
>> + if (virtio_has_feature(vdev, VIRTIO_NET_F_MTU)) {
>> + dev->mtu = virtio_cread16(vdev,
>> + offsetof(struct virtio_net_config,
>> + mtu));
>> + }
>> +
>> if (vi->any_header_sg)
>> dev->needed_headroom = vi->hdr_len;
>>
>> @@ -2067,6 +2073,7 @@ static unsigned int features[] = {
>> VIRTIO_NET_F_GUEST_ANNOUNCE, VIRTIO_NET_F_MQ,
>> VIRTIO_NET_F_CTRL_MAC_ADDR,
>> VIRTIO_F_ANY_LAYOUT,
>> + VIRTIO_NET_F_MTU,
>> };
>>
>> static struct virtio_driver virtio_net_driver = {
>> --
>> 2.5.5
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH -next 2/2] virtio_net: Read the advised MTU
2016-06-02 15:43 ` [PATCH -next 2/2] virtio_net: Read the advised MTU Aaron Conole
2016-06-02 16:16 ` Michael S. Tsirkin
[not found] ` <5750578E.4040406@hpe.com>
@ 2016-06-02 17:25 ` kbuild test robot
2016-06-02 17:48 ` Aaron Conole
2 siblings, 1 reply; 11+ messages in thread
From: kbuild test robot @ 2016-06-02 17:25 UTC (permalink / raw)
To: Aaron Conole
Cc: kbuild-all, virtualization, netdev, linux-kernel, Michael S. Tsirkin
[-- Attachment #1: Type: text/plain, Size: 6930 bytes --]
Hi,
[auto build test ERROR on next-20160602]
url: https://github.com/0day-ci/linux/commits/Aaron-Conole/virtio-net-Advised-MTU-feature/20160603-000714
config: i386-allmodconfig (attached as .config)
compiler: gcc-6 (Debian 6.1.1-1) 6.1.1 20160430
reproduce:
# save the attached .config to linux build tree
make ARCH=i386
Note: the linux-review/Aaron-Conole/virtio-net-Advised-MTU-feature/20160603-000714 HEAD d909da4df3c52f78b4f5fcccd89aea5e38722d10 builds fine.
It only hurts bisectibility.
All errors (new ones prefixed by >>):
drivers/net/virtio_net.c: In function 'virtnet_probe':
>> drivers/net/virtio_net.c:1899:31: error: 'VIRTIO_NET_F_MTU' undeclared (first use in this function)
if (virtio_has_feature(vdev, VIRTIO_NET_F_MTU)) {
^~~~~~~~~~~~~~~~
drivers/net/virtio_net.c:1899:31: note: each undeclared identifier is reported only once for each function it appears in
drivers/net/virtio_net.c: At top level:
>> drivers/net/virtio_net.c:2076:2: error: 'VIRTIO_NET_F_MTU' undeclared here (not in a function)
VIRTIO_NET_F_MTU,
^~~~~~~~~~~~~~~~
vim +/VIRTIO_NET_F_MTU +1899 drivers/net/virtio_net.c
1893 virtio_has_feature(vdev, VIRTIO_F_VERSION_1))
1894 vi->any_header_sg = true;
1895
1896 if (virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_VQ))
1897 vi->has_cvq = true;
1898
> 1899 if (virtio_has_feature(vdev, VIRTIO_NET_F_MTU)) {
1900 dev->mtu = virtio_cread16(vdev,
1901 offsetof(struct virtio_net_config,
1902 mtu));
1903 }
1904
1905 if (vi->any_header_sg)
1906 dev->needed_headroom = vi->hdr_len;
1907
1908 /* Use single tx/rx queue pair as default */
1909 vi->curr_queue_pairs = 1;
1910 vi->max_queue_pairs = max_queue_pairs;
1911
1912 /* Allocate/initialize the rx/tx queues, and invoke find_vqs */
1913 err = init_vqs(vi);
1914 if (err)
1915 goto free_stats;
1916
1917 #ifdef CONFIG_SYSFS
1918 if (vi->mergeable_rx_bufs)
1919 dev->sysfs_rx_queue_group = &virtio_net_mrg_rx_group;
1920 #endif
1921 netif_set_real_num_tx_queues(dev, vi->curr_queue_pairs);
1922 netif_set_real_num_rx_queues(dev, vi->curr_queue_pairs);
1923
1924 virtnet_init_settings(dev);
1925
1926 err = register_netdev(dev);
1927 if (err) {
1928 pr_debug("virtio_net: registering device failed\n");
1929 goto free_vqs;
1930 }
1931
1932 virtio_device_ready(vdev);
1933
1934 vi->nb.notifier_call = &virtnet_cpu_callback;
1935 err = register_hotcpu_notifier(&vi->nb);
1936 if (err) {
1937 pr_debug("virtio_net: registering cpu notifier failed\n");
1938 goto free_unregister_netdev;
1939 }
1940
1941 /* Assume link up if device can't report link status,
1942 otherwise get link status from config. */
1943 if (virtio_has_feature(vi->vdev, VIRTIO_NET_F_STATUS)) {
1944 netif_carrier_off(dev);
1945 schedule_work(&vi->config_work);
1946 } else {
1947 vi->status = VIRTIO_NET_S_LINK_UP;
1948 netif_carrier_on(dev);
1949 }
1950
1951 pr_debug("virtnet: registered device %s with %d RX and TX vq's\n",
1952 dev->name, max_queue_pairs);
1953
1954 return 0;
1955
1956 free_unregister_netdev:
1957 vi->vdev->config->reset(vdev);
1958
1959 unregister_netdev(dev);
1960 free_vqs:
1961 cancel_delayed_work_sync(&vi->refill);
1962 free_receive_page_frags(vi);
1963 virtnet_del_vqs(vi);
1964 free_stats:
1965 free_percpu(vi->stats);
1966 free:
1967 free_netdev(dev);
1968 return err;
1969 }
1970
1971 static void remove_vq_common(struct virtnet_info *vi)
1972 {
1973 vi->vdev->config->reset(vi->vdev);
1974
1975 /* Free unused buffers in both send and recv, if any. */
1976 free_unused_bufs(vi);
1977
1978 free_receive_bufs(vi);
1979
1980 free_receive_page_frags(vi);
1981
1982 virtnet_del_vqs(vi);
1983 }
1984
1985 static void virtnet_remove(struct virtio_device *vdev)
1986 {
1987 struct virtnet_info *vi = vdev->priv;
1988
1989 unregister_hotcpu_notifier(&vi->nb);
1990
1991 /* Make sure no work handler is accessing the device. */
1992 flush_work(&vi->config_work);
1993
1994 unregister_netdev(vi->dev);
1995
1996 remove_vq_common(vi);
1997
1998 free_percpu(vi->stats);
1999 free_netdev(vi->dev);
2000 }
2001
2002 #ifdef CONFIG_PM_SLEEP
2003 static int virtnet_freeze(struct virtio_device *vdev)
2004 {
2005 struct virtnet_info *vi = vdev->priv;
2006 int i;
2007
2008 unregister_hotcpu_notifier(&vi->nb);
2009
2010 /* Make sure no work handler is accessing the device */
2011 flush_work(&vi->config_work);
2012
2013 netif_device_detach(vi->dev);
2014 cancel_delayed_work_sync(&vi->refill);
2015
2016 if (netif_running(vi->dev)) {
2017 for (i = 0; i < vi->max_queue_pairs; i++)
2018 napi_disable(&vi->rq[i].napi);
2019 }
2020
2021 remove_vq_common(vi);
2022
2023 return 0;
2024 }
2025
2026 static int virtnet_restore(struct virtio_device *vdev)
2027 {
2028 struct virtnet_info *vi = vdev->priv;
2029 int err, i;
2030
2031 err = init_vqs(vi);
2032 if (err)
2033 return err;
2034
2035 virtio_device_ready(vdev);
2036
2037 if (netif_running(vi->dev)) {
2038 for (i = 0; i < vi->curr_queue_pairs; i++)
2039 if (!try_fill_recv(vi, &vi->rq[i], GFP_KERNEL))
2040 schedule_delayed_work(&vi->refill, 0);
2041
2042 for (i = 0; i < vi->max_queue_pairs; i++)
2043 virtnet_napi_enable(&vi->rq[i]);
2044 }
2045
2046 netif_device_attach(vi->dev);
2047
2048 rtnl_lock();
2049 virtnet_set_queues(vi, vi->curr_queue_pairs);
2050 rtnl_unlock();
2051
2052 err = register_hotcpu_notifier(&vi->nb);
2053 if (err)
2054 return err;
2055
2056 return 0;
2057 }
2058 #endif
2059
2060 static struct virtio_device_id id_table[] = {
2061 { VIRTIO_ID_NET, VIRTIO_DEV_ANY_ID },
2062 { 0 },
2063 };
2064
2065 static unsigned int features[] = {
2066 VIRTIO_NET_F_CSUM, VIRTIO_NET_F_GUEST_CSUM,
2067 VIRTIO_NET_F_GSO, VIRTIO_NET_F_MAC,
2068 VIRTIO_NET_F_HOST_TSO4, VIRTIO_NET_F_HOST_UFO, VIRTIO_NET_F_HOST_TSO6,
2069 VIRTIO_NET_F_HOST_ECN, VIRTIO_NET_F_GUEST_TSO4, VIRTIO_NET_F_GUEST_TSO6,
2070 VIRTIO_NET_F_GUEST_ECN, VIRTIO_NET_F_GUEST_UFO,
2071 VIRTIO_NET_F_MRG_RXBUF, VIRTIO_NET_F_STATUS, VIRTIO_NET_F_CTRL_VQ,
2072 VIRTIO_NET_F_CTRL_RX, VIRTIO_NET_F_CTRL_VLAN,
2073 VIRTIO_NET_F_GUEST_ANNOUNCE, VIRTIO_NET_F_MQ,
2074 VIRTIO_NET_F_CTRL_MAC_ADDR,
2075 VIRTIO_F_ANY_LAYOUT,
> 2076 VIRTIO_NET_F_MTU,
2077 };
2078
2079 static struct virtio_driver virtio_net_driver = {
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/octet-stream, Size: 55156 bytes --]
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH -next 2/2] virtio_net: Read the advised MTU
2016-06-02 17:25 ` kbuild test robot
@ 2016-06-02 17:48 ` Aaron Conole
0 siblings, 0 replies; 11+ messages in thread
From: Aaron Conole @ 2016-06-02 17:48 UTC (permalink / raw)
To: kbuild test robot
Cc: kbuild-all, virtualization, netdev, linux-kernel, Michael S. Tsirkin
kbuild test robot <lkp@intel.com> writes:
> Hi,
>
> [auto build test ERROR on next-20160602]
>
> url: https://github.com/0day-ci/linux/commits/Aaron-Conole/virtio-net-Advised-MTU-feature/20160603-000714
> config: i386-allmodconfig (attached as .config)
> compiler: gcc-6 (Debian 6.1.1-1) 6.1.1 20160430
> reproduce:
> # save the attached .config to linux build tree
> make ARCH=i386
>
> Note: the linux-review/Aaron-Conole/virtio-net-Advised-MTU-feature/20160603-000714 HEAD d909da4df3c52f78b4f5fcccd89aea5e38722d10 builds fine.
> It only hurts bisectibility.
>
> All errors (new ones prefixed by >>):
>
> drivers/net/virtio_net.c: In function 'virtnet_probe':
>>> drivers/net/virtio_net.c:1899:31: error: 'VIRTIO_NET_F_MTU'
>>> undeclared (first use in this function)
> if (virtio_has_feature(vdev, VIRTIO_NET_F_MTU)) {
> ^~~~~~~~~~~~~~~~
> drivers/net/virtio_net.c:1899:31: note: each undeclared identifier is reported only once for each function it appears in
> drivers/net/virtio_net.c: At top level:
>>> drivers/net/virtio_net.c:2076:2: error: 'VIRTIO_NET_F_MTU'
>>> undeclared here (not in a function)
> VIRTIO_NET_F_MTU,
> ^~~~~~~~~~~~~~~~
Oops, hunk was dropped during rebase. Sorry for this, v2 will fix this
error, as well and I'll do a boot test before submission.
Thanks kbuild robot!
> vim +/VIRTIO_NET_F_MTU +1899 drivers/net/virtio_net.c
>
> 1893 virtio_has_feature(vdev, VIRTIO_F_VERSION_1))
> 1894 vi->any_header_sg = true;
> 1895
> 1896 if (virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_VQ))
> 1897 vi->has_cvq = true;
> 1898
>> 1899 if (virtio_has_feature(vdev, VIRTIO_NET_F_MTU)) {
> 1900 dev->mtu = virtio_cread16(vdev,
> 1901 offsetof(struct virtio_net_config,
> 1902 mtu));
> 1903 }
> 1904
> 1905 if (vi->any_header_sg)
> 1906 dev->needed_headroom = vi->hdr_len;
> 1907
> 1908 /* Use single tx/rx queue pair as default */
> 1909 vi->curr_queue_pairs = 1;
> 1910 vi->max_queue_pairs = max_queue_pairs;
> 1911
> 1912 /* Allocate/initialize the rx/tx queues, and invoke find_vqs */
> 1913 err = init_vqs(vi);
> 1914 if (err)
> 1915 goto free_stats;
> 1916
> 1917 #ifdef CONFIG_SYSFS
> 1918 if (vi->mergeable_rx_bufs)
> 1919 dev->sysfs_rx_queue_group = &virtio_net_mrg_rx_group;
> 1920 #endif
> 1921 netif_set_real_num_tx_queues(dev, vi->curr_queue_pairs);
> 1922 netif_set_real_num_rx_queues(dev, vi->curr_queue_pairs);
> 1923
> 1924 virtnet_init_settings(dev);
> 1925
> 1926 err = register_netdev(dev);
> 1927 if (err) {
> 1928 pr_debug("virtio_net: registering device failed\n");
> 1929 goto free_vqs;
> 1930 }
> 1931
> 1932 virtio_device_ready(vdev);
> 1933
> 1934 vi->nb.notifier_call = &virtnet_cpu_callback;
> 1935 err = register_hotcpu_notifier(&vi->nb);
> 1936 if (err) {
> 1937 pr_debug("virtio_net: registering cpu notifier failed\n");
> 1938 goto free_unregister_netdev;
> 1939 }
> 1940
> 1941 /* Assume link up if device can't report link status,
> 1942 otherwise get link status from config. */
> 1943 if (virtio_has_feature(vi->vdev, VIRTIO_NET_F_STATUS)) {
> 1944 netif_carrier_off(dev);
> 1945 schedule_work(&vi->config_work);
> 1946 } else {
> 1947 vi->status = VIRTIO_NET_S_LINK_UP;
> 1948 netif_carrier_on(dev);
> 1949 }
> 1950
> 1951 pr_debug("virtnet: registered device %s with %d RX and TX vq's\n",
> 1952 dev->name, max_queue_pairs);
> 1953
> 1954 return 0;
> 1955
> 1956 free_unregister_netdev:
> 1957 vi->vdev->config->reset(vdev);
> 1958
> 1959 unregister_netdev(dev);
> 1960 free_vqs:
> 1961 cancel_delayed_work_sync(&vi->refill);
> 1962 free_receive_page_frags(vi);
> 1963 virtnet_del_vqs(vi);
> 1964 free_stats:
> 1965 free_percpu(vi->stats);
> 1966 free:
> 1967 free_netdev(dev);
> 1968 return err;
> 1969 }
> 1970
> 1971 static void remove_vq_common(struct virtnet_info *vi)
> 1972 {
> 1973 vi->vdev->config->reset(vi->vdev);
> 1974
> 1975 /* Free unused buffers in both send and recv, if any. */
> 1976 free_unused_bufs(vi);
> 1977
> 1978 free_receive_bufs(vi);
> 1979
> 1980 free_receive_page_frags(vi);
> 1981
> 1982 virtnet_del_vqs(vi);
> 1983 }
> 1984
> 1985 static void virtnet_remove(struct virtio_device *vdev)
> 1986 {
> 1987 struct virtnet_info *vi = vdev->priv;
> 1988
> 1989 unregister_hotcpu_notifier(&vi->nb);
> 1990
> 1991 /* Make sure no work handler is accessing the device. */
> 1992 flush_work(&vi->config_work);
> 1993
> 1994 unregister_netdev(vi->dev);
> 1995
> 1996 remove_vq_common(vi);
> 1997
> 1998 free_percpu(vi->stats);
> 1999 free_netdev(vi->dev);
> 2000 }
> 2001
> 2002 #ifdef CONFIG_PM_SLEEP
> 2003 static int virtnet_freeze(struct virtio_device *vdev)
> 2004 {
> 2005 struct virtnet_info *vi = vdev->priv;
> 2006 int i;
> 2007
> 2008 unregister_hotcpu_notifier(&vi->nb);
> 2009
> 2010 /* Make sure no work handler is accessing the device */
> 2011 flush_work(&vi->config_work);
> 2012
> 2013 netif_device_detach(vi->dev);
> 2014 cancel_delayed_work_sync(&vi->refill);
> 2015
> 2016 if (netif_running(vi->dev)) {
> 2017 for (i = 0; i < vi->max_queue_pairs; i++)
> 2018 napi_disable(&vi->rq[i].napi);
> 2019 }
> 2020
> 2021 remove_vq_common(vi);
> 2022
> 2023 return 0;
> 2024 }
> 2025
> 2026 static int virtnet_restore(struct virtio_device *vdev)
> 2027 {
> 2028 struct virtnet_info *vi = vdev->priv;
> 2029 int err, i;
> 2030
> 2031 err = init_vqs(vi);
> 2032 if (err)
> 2033 return err;
> 2034
> 2035 virtio_device_ready(vdev);
> 2036
> 2037 if (netif_running(vi->dev)) {
> 2038 for (i = 0; i < vi->curr_queue_pairs; i++)
> 2039 if (!try_fill_recv(vi, &vi->rq[i], GFP_KERNEL))
> 2040 schedule_delayed_work(&vi->refill, 0);
> 2041
> 2042 for (i = 0; i < vi->max_queue_pairs; i++)
> 2043 virtnet_napi_enable(&vi->rq[i]);
> 2044 }
> 2045
> 2046 netif_device_attach(vi->dev);
> 2047
> 2048 rtnl_lock();
> 2049 virtnet_set_queues(vi, vi->curr_queue_pairs);
> 2050 rtnl_unlock();
> 2051
> 2052 err = register_hotcpu_notifier(&vi->nb);
> 2053 if (err)
> 2054 return err;
> 2055
> 2056 return 0;
> 2057 }
> 2058 #endif
> 2059
> 2060 static struct virtio_device_id id_table[] = {
> 2061 { VIRTIO_ID_NET, VIRTIO_DEV_ANY_ID },
> 2062 { 0 },
> 2063 };
> 2064
> 2065 static unsigned int features[] = {
> 2066 VIRTIO_NET_F_CSUM, VIRTIO_NET_F_GUEST_CSUM,
> 2067 VIRTIO_NET_F_GSO, VIRTIO_NET_F_MAC,
> 2068 VIRTIO_NET_F_HOST_TSO4, VIRTIO_NET_F_HOST_UFO,
> VIRTIO_NET_F_HOST_TSO6,
> 2069 VIRTIO_NET_F_HOST_ECN, VIRTIO_NET_F_GUEST_TSO4,
> VIRTIO_NET_F_GUEST_TSO6,
> 2070 VIRTIO_NET_F_GUEST_ECN, VIRTIO_NET_F_GUEST_UFO,
> 2071 VIRTIO_NET_F_MRG_RXBUF, VIRTIO_NET_F_STATUS, VIRTIO_NET_F_CTRL_VQ,
> 2072 VIRTIO_NET_F_CTRL_RX, VIRTIO_NET_F_CTRL_VLAN,
> 2073 VIRTIO_NET_F_GUEST_ANNOUNCE, VIRTIO_NET_F_MQ,
> 2074 VIRTIO_NET_F_CTRL_MAC_ADDR,
> 2075 VIRTIO_F_ANY_LAYOUT,
>> 2076 VIRTIO_NET_F_MTU,
> 2077 };
> 2078
> 2079 static struct virtio_driver virtio_net_driver = {
>
> ---
> 0-DAY kernel test infrastructure Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all Intel Corporation
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH -next 2/2] virtio_net: Read the advised MTU
2016-06-02 17:06 ` Aaron Conole
@ 2016-06-02 18:02 ` Rick Jones
0 siblings, 0 replies; 11+ messages in thread
From: Rick Jones @ 2016-06-02 18:02 UTC (permalink / raw)
To: Aaron Conole; +Cc: Michael S. Tsirkin, virtualization, netdev, linux-kernel
On 06/02/2016 10:06 AM, Aaron Conole wrote:
> Rick Jones <rick.jones2@hpe.com> writes:
>> One of the things I've been doing has been setting-up a cluster
>> (OpenStack) with JumboFrames, and then setting MTUs on instance vNICs
>> by hand to measure different MTU sizes. It would be a shame if such a
>> thing were not possible in the future. Keeping a warning if shrinking
>> the MTU would be good, leave the error (perhaps) to if an attempt is
>> made to go beyond the advised value.
>
> This was cut because it didn't make sense for such a warning to
> be issued, but it seems like perhaps you may want such a feature? I
> agree with Michael, after thinking about it, that I don't know what sort
> of use the warning would serve. After all, if you're changing the MTU,
> you must have wanted such a change to occur?
I don't need a warning, was simply willing to live with one when
shrinking the MTU. Didn't want an error.
happy benchmarking,
rick jones
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2016-06-02 18:10 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-02 15:43 [PATCH -next 0/2] virtio-net: Advised MTU feature Aaron Conole
2016-06-02 15:43 ` [PATCH -next 1/2] virtio: Start feature MTU support Aaron Conole
2016-06-02 16:17 ` Michael S. Tsirkin
2016-06-02 17:10 ` Aaron Conole
2016-06-02 15:43 ` [PATCH -next 2/2] virtio_net: Read the advised MTU Aaron Conole
2016-06-02 16:16 ` Michael S. Tsirkin
2016-06-02 17:10 ` Aaron Conole
[not found] ` <5750578E.4040406@hpe.com>
2016-06-02 17:06 ` Aaron Conole
2016-06-02 18:02 ` Rick Jones
2016-06-02 17:25 ` kbuild test robot
2016-06-02 17:48 ` Aaron Conole
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).