* [PATCH net,v4,1/2] virtio_net: Improve RSS key size validation and use NETDEV_RSS_KEY_LEN
@ 2026-02-24 4:52 Srujana Challa
2026-02-24 4:52 ` [PATCH net-next,2/2] virtio_net: replace RSS key size max check with BUILD_BUG_ON Srujana Challa
0 siblings, 1 reply; 14+ messages in thread
From: Srujana Challa @ 2026-02-24 4:52 UTC (permalink / raw)
To: netdev, virtualization
Cc: pabeni, mst, jasowang, xuanzhuo, eperezma, davem, edumazet, kuba,
ndabilpuram, kshankar, schalla, stable
Replace hardcoded RSS max key size limit with NETDEV_RSS_KEY_LEN to
align with kernel's standard RSS key length. Add validation for RSS
key size against spec minimum (40 bytes) and driver maximum. When
validation fails, gracefully disable RSS features and continue
initialization rather than failing completely.
Cc: stable@vger.kernel.org
Fixes: 3f7d9c1964fc ("virtio_net: Add hash_key_length check")
Signed-off-by: Srujana Challa <schalla@marvell.com>
v3:
- Moved RSS key validation checks to virtnet_validate.
- Add fixes: tag and CC -stable
v4:
- Use NETDEV_RSS_KEY_LEN instead of type_max for the maximum rss key size.
---
drivers/net/virtio_net.c | 34 ++++++++++++++++++++++++----------
1 file changed, 24 insertions(+), 10 deletions(-)
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index db88dcaefb20..eeefe8abc122 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -381,8 +381,6 @@ struct receive_queue {
struct xdp_buff **xsk_buffs;
};
-#define VIRTIO_NET_RSS_MAX_KEY_SIZE 40
-
/* Control VQ buffers: protected by the rtnl lock */
struct control_buf {
struct virtio_net_ctrl_hdr hdr;
@@ -486,7 +484,7 @@ struct virtnet_info {
/* Must be last as it ends in a flexible-array member. */
TRAILING_OVERLAP(struct virtio_net_rss_config_trailer, rss_trailer, hash_key_data,
- u8 rss_hash_key_data[VIRTIO_NET_RSS_MAX_KEY_SIZE];
+ u8 rss_hash_key_data[NETDEV_RSS_KEY_LEN];
);
};
static_assert(offsetof(struct virtnet_info, rss_trailer.hash_key_data) ==
@@ -6627,6 +6625,29 @@ static int virtnet_validate(struct virtio_device *vdev)
__virtio_clear_bit(vdev, VIRTIO_NET_F_STANDBY);
}
+ if (virtio_has_feature(vdev, VIRTIO_NET_F_RSS) ||
+ virtio_has_feature(vdev, VIRTIO_NET_F_HASH_REPORT)) {
+ u8 key_sz = virtio_cread8(vdev,
+ offsetof(struct virtio_net_config,
+ rss_max_key_size));
+ /* Spec requires at least 40 bytes */
+#define VIRTIO_NET_RSS_MIN_KEY_SIZE 40
+ if (key_sz < VIRTIO_NET_RSS_MIN_KEY_SIZE) {
+ dev_warn(&vdev->dev,
+ "rss_max_key_size=%u is less than spec minimum %u, disabling RSS\n",
+ key_sz, VIRTIO_NET_RSS_MIN_KEY_SIZE);
+ __virtio_clear_bit(vdev, VIRTIO_NET_F_RSS);
+ __virtio_clear_bit(vdev, VIRTIO_NET_F_HASH_REPORT);
+ }
+ if (key_sz > NETDEV_RSS_KEY_LEN) {
+ dev_warn(&vdev->dev,
+ "rss_max_key_size=%u exceeds driver limit %u, disabling RSS\n",
+ key_sz, NETDEV_RSS_KEY_LEN);
+ __virtio_clear_bit(vdev, VIRTIO_NET_F_RSS);
+ __virtio_clear_bit(vdev, VIRTIO_NET_F_HASH_REPORT);
+ }
+ }
+
return 0;
}
@@ -6839,13 +6860,6 @@ static int virtnet_probe(struct virtio_device *vdev)
if (vi->has_rss || vi->has_rss_hash_report) {
vi->rss_key_size =
virtio_cread8(vdev, offsetof(struct virtio_net_config, rss_max_key_size));
- if (vi->rss_key_size > VIRTIO_NET_RSS_MAX_KEY_SIZE) {
- dev_err(&vdev->dev, "rss_max_key_size=%u exceeds the limit %u.\n",
- vi->rss_key_size, VIRTIO_NET_RSS_MAX_KEY_SIZE);
- err = -EINVAL;
- goto free;
- }
-
vi->rss_hash_types_supported =
virtio_cread32(vdev, offsetof(struct virtio_net_config, supported_hash_types));
vi->rss_hash_types_supported &=
--
2.25.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH net-next,2/2] virtio_net: replace RSS key size max check with BUILD_BUG_ON
2026-02-24 4:52 [PATCH net,v4,1/2] virtio_net: Improve RSS key size validation and use NETDEV_RSS_KEY_LEN Srujana Challa
@ 2026-02-24 4:52 ` Srujana Challa
0 siblings, 0 replies; 14+ messages in thread
From: Srujana Challa @ 2026-02-24 4:52 UTC (permalink / raw)
To: netdev, virtualization
Cc: pabeni, mst, jasowang, xuanzhuo, eperezma, davem, edumazet, kuba,
ndabilpuram, kshankar, schalla
Since NETDEV_RSS_KEY_LEN was increased to 256 in net-next, use
BUILD_BUG_ON to enforce the limit at compile time and remove the
redundant runtime max check.
Signed-off-by: Srujana Challa <schalla@marvell.com>
---
drivers/net/virtio_net.c | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index eeefe8abc122..3092d5d9d3e4 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -6639,13 +6639,7 @@ static int virtnet_validate(struct virtio_device *vdev)
__virtio_clear_bit(vdev, VIRTIO_NET_F_RSS);
__virtio_clear_bit(vdev, VIRTIO_NET_F_HASH_REPORT);
}
- if (key_sz > NETDEV_RSS_KEY_LEN) {
- dev_warn(&vdev->dev,
- "rss_max_key_size=%u exceeds driver limit %u, disabling RSS\n",
- key_sz, NETDEV_RSS_KEY_LEN);
- __virtio_clear_bit(vdev, VIRTIO_NET_F_RSS);
- __virtio_clear_bit(vdev, VIRTIO_NET_F_HASH_REPORT);
- }
+ BUILD_BUG_ON(type_max(vi->rss_key_size) >= NETDEV_RSS_KEY_LEN);
}
return 0;
--
2.25.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH net-next,2/2] virtio_net: replace RSS key size max check with BUILD_BUG_ON
2026-02-24 6:58 [PATCH net,v4,1/2] virtio_net: Improve RSS key size validation and use NETDEV_RSS_KEY_LEN Srujana Challa
@ 2026-02-24 6:58 ` Srujana Challa
2026-02-25 9:11 ` Xuan Zhuo
2026-02-25 14:50 ` David Laight
0 siblings, 2 replies; 14+ messages in thread
From: Srujana Challa @ 2026-02-24 6:58 UTC (permalink / raw)
To: netdev, virtualization
Cc: pabeni, mst, jasowang, xuanzhuo, eperezma, davem, edumazet, kuba,
ndabilpuram, kshankar, schalla
Since NETDEV_RSS_KEY_LEN was increased to 256 in net-next, use
BUILD_BUG_ON to enforce the limit at compile time and remove the
redundant runtime max check.
Signed-off-by: Srujana Challa <schalla@marvell.com>
---
drivers/net/virtio_net.c | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index eeefe8abc122..768ad5523dfa 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -6639,13 +6639,7 @@ static int virtnet_validate(struct virtio_device *vdev)
__virtio_clear_bit(vdev, VIRTIO_NET_F_RSS);
__virtio_clear_bit(vdev, VIRTIO_NET_F_HASH_REPORT);
}
- if (key_sz > NETDEV_RSS_KEY_LEN) {
- dev_warn(&vdev->dev,
- "rss_max_key_size=%u exceeds driver limit %u, disabling RSS\n",
- key_sz, NETDEV_RSS_KEY_LEN);
- __virtio_clear_bit(vdev, VIRTIO_NET_F_RSS);
- __virtio_clear_bit(vdev, VIRTIO_NET_F_HASH_REPORT);
- }
+ BUILD_BUG_ON(type_max(key_sz) >= NETDEV_RSS_KEY_LEN);
}
return 0;
--
2.25.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH net-next,2/2] virtio_net: replace RSS key size max check with BUILD_BUG_ON
2026-02-24 6:58 ` [PATCH net-next,2/2] virtio_net: replace RSS key size max check with BUILD_BUG_ON Srujana Challa
@ 2026-02-25 9:11 ` Xuan Zhuo
2026-02-25 9:24 ` Michael S. Tsirkin
2026-02-25 14:50 ` David Laight
1 sibling, 1 reply; 14+ messages in thread
From: Xuan Zhuo @ 2026-02-25 9:11 UTC (permalink / raw)
To: Srujana Challa
Cc: pabeni, mst, jasowang, xuanzhuo, eperezma, davem, edumazet, kuba,
ndabilpuram, kshankar, schalla, netdev, virtualization
On Tue, 24 Feb 2026 12:28:50 +0530, Srujana Challa <schalla@marvell.com> wrote:
> Since NETDEV_RSS_KEY_LEN was increased to 256 in net-next, use
> BUILD_BUG_ON to enforce the limit at compile time and remove the
> redundant runtime max check.
>
> Signed-off-by: Srujana Challa <schalla@marvell.com>
> ---
> drivers/net/virtio_net.c | 8 +-------
> 1 file changed, 1 insertion(+), 7 deletions(-)
>
> diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> index eeefe8abc122..768ad5523dfa 100644
> --- a/drivers/net/virtio_net.c
> +++ b/drivers/net/virtio_net.c
> @@ -6639,13 +6639,7 @@ static int virtnet_validate(struct virtio_device *vdev)
> __virtio_clear_bit(vdev, VIRTIO_NET_F_RSS);
> __virtio_clear_bit(vdev, VIRTIO_NET_F_HASH_REPORT);
> }
> - if (key_sz > NETDEV_RSS_KEY_LEN) {
> - dev_warn(&vdev->dev,
> - "rss_max_key_size=%u exceeds driver limit %u, disabling RSS\n",
> - key_sz, NETDEV_RSS_KEY_LEN);
> - __virtio_clear_bit(vdev, VIRTIO_NET_F_RSS);
> - __virtio_clear_bit(vdev, VIRTIO_NET_F_HASH_REPORT);
> - }
> + BUILD_BUG_ON(type_max(key_sz) >= NETDEV_RSS_KEY_LEN);
Do we really need this check?
If I understand correctly, the intention is to cap key_sz at 256. However, since
key_sz is of type u8, its maximum value is inherently 255, making this check
redundant. This is not only limited by this kernel code, the virtio-net spec
defines this.
Moreover, if NETDEV_RSS_KEY_LEN is ever reduced to a value smaller than 256 in
the future, this check would no longer enforce the intended limit correctly.
Moreover, you should add a cover letter.
Thanks.
> }
>
> return 0;
> --
> 2.25.1
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH net-next,2/2] virtio_net: replace RSS key size max check with BUILD_BUG_ON
2026-02-25 9:11 ` Xuan Zhuo
@ 2026-02-25 9:24 ` Michael S. Tsirkin
2026-02-25 9:30 ` Xuan Zhuo
0 siblings, 1 reply; 14+ messages in thread
From: Michael S. Tsirkin @ 2026-02-25 9:24 UTC (permalink / raw)
To: Xuan Zhuo
Cc: Srujana Challa, pabeni, jasowang, eperezma, davem, edumazet, kuba,
ndabilpuram, kshankar, netdev, virtualization
On Wed, Feb 25, 2026 at 05:11:42PM +0800, Xuan Zhuo wrote:
> On Tue, 24 Feb 2026 12:28:50 +0530, Srujana Challa <schalla@marvell.com> wrote:
> > Since NETDEV_RSS_KEY_LEN was increased to 256 in net-next, use
> > BUILD_BUG_ON to enforce the limit at compile time and remove the
> > redundant runtime max check.
> >
> > Signed-off-by: Srujana Challa <schalla@marvell.com>
> > ---
> > drivers/net/virtio_net.c | 8 +-------
> > 1 file changed, 1 insertion(+), 7 deletions(-)
> >
> > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> > index eeefe8abc122..768ad5523dfa 100644
> > --- a/drivers/net/virtio_net.c
> > +++ b/drivers/net/virtio_net.c
> > @@ -6639,13 +6639,7 @@ static int virtnet_validate(struct virtio_device *vdev)
> > __virtio_clear_bit(vdev, VIRTIO_NET_F_RSS);
> > __virtio_clear_bit(vdev, VIRTIO_NET_F_HASH_REPORT);
> > }
> > - if (key_sz > NETDEV_RSS_KEY_LEN) {
> > - dev_warn(&vdev->dev,
> > - "rss_max_key_size=%u exceeds driver limit %u, disabling RSS\n",
> > - key_sz, NETDEV_RSS_KEY_LEN);
> > - __virtio_clear_bit(vdev, VIRTIO_NET_F_RSS);
> > - __virtio_clear_bit(vdev, VIRTIO_NET_F_HASH_REPORT);
> > - }
> > + BUILD_BUG_ON(type_max(key_sz) >= NETDEV_RSS_KEY_LEN);
>
> Do we really need this check?
>
> If I understand correctly, the intention is to cap key_sz at 256. However, since
> key_sz is of type u8, its maximum value is inherently 255, making this check
> redundant. This is not only limited by this kernel code, the virtio-net spec
> defines this.
That's why it's BUILD_BUG_ON. It checks it has the right type.
We never *need* BUILD_BUG_ON by definition, what this does is
document the assumption.
> Moreover, if NETDEV_RSS_KEY_LEN is ever reduced to a value smaller than 256 in
> the future, this check would no longer enforce the intended limit correctly.
then it would fail build.
>
> Moreover, you should add a cover letter.
>
> Thanks.
>
>
>
>
>
> > }
> >
> > return 0;
> > --
> > 2.25.1
> >
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH net-next,2/2] virtio_net: replace RSS key size max check with BUILD_BUG_ON
2026-02-25 9:24 ` Michael S. Tsirkin
@ 2026-02-25 9:30 ` Xuan Zhuo
2026-02-25 9:33 ` Michael S. Tsirkin
0 siblings, 1 reply; 14+ messages in thread
From: Xuan Zhuo @ 2026-02-25 9:30 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: Srujana Challa, pabeni, jasowang, eperezma, davem, edumazet, kuba,
ndabilpuram, kshankar, netdev, virtualization
On Wed, 25 Feb 2026 04:24:14 -0500, "Michael S. Tsirkin" <mst@redhat.com> wrote:
> On Wed, Feb 25, 2026 at 05:11:42PM +0800, Xuan Zhuo wrote:
> > On Tue, 24 Feb 2026 12:28:50 +0530, Srujana Challa <schalla@marvell.com> wrote:
> > > Since NETDEV_RSS_KEY_LEN was increased to 256 in net-next, use
> > > BUILD_BUG_ON to enforce the limit at compile time and remove the
> > > redundant runtime max check.
> > >
> > > Signed-off-by: Srujana Challa <schalla@marvell.com>
> > > ---
> > > drivers/net/virtio_net.c | 8 +-------
> > > 1 file changed, 1 insertion(+), 7 deletions(-)
> > >
> > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> > > index eeefe8abc122..768ad5523dfa 100644
> > > --- a/drivers/net/virtio_net.c
> > > +++ b/drivers/net/virtio_net.c
> > > @@ -6639,13 +6639,7 @@ static int virtnet_validate(struct virtio_device *vdev)
> > > __virtio_clear_bit(vdev, VIRTIO_NET_F_RSS);
> > > __virtio_clear_bit(vdev, VIRTIO_NET_F_HASH_REPORT);
> > > }
> > > - if (key_sz > NETDEV_RSS_KEY_LEN) {
> > > - dev_warn(&vdev->dev,
> > > - "rss_max_key_size=%u exceeds driver limit %u, disabling RSS\n",
> > > - key_sz, NETDEV_RSS_KEY_LEN);
> > > - __virtio_clear_bit(vdev, VIRTIO_NET_F_RSS);
> > > - __virtio_clear_bit(vdev, VIRTIO_NET_F_HASH_REPORT);
> > > - }
> > > + BUILD_BUG_ON(type_max(key_sz) >= NETDEV_RSS_KEY_LEN);
> >
> > Do we really need this check?
> >
> > If I understand correctly, the intention is to cap key_sz at 256. However, since
> > key_sz is of type u8, its maximum value is inherently 255, making this check
> > redundant. This is not only limited by this kernel code, the virtio-net spec
> > defines this.
>
> That's why it's BUILD_BUG_ON. It checks it has the right type.
>
> We never *need* BUILD_BUG_ON by definition, what this does is
> document the assumption.
>
>
> > Moreover, if NETDEV_RSS_KEY_LEN is ever reduced to a value smaller than 256 in
> > the future, this check would no longer enforce the intended limit correctly.
>
> then it would fail build.
So, does this mean we don't need to account for the case where
NETDEV_RSS_KEY_LEN is 128, but the key_sz reported by the device is 64?
Thanks.
>
> >
> > Moreover, you should add a cover letter.
> >
> > Thanks.
> >
> >
> >
> >
> >
> > > }
> > >
> > > return 0;
> > > --
> > > 2.25.1
> > >
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH net-next,2/2] virtio_net: replace RSS key size max check with BUILD_BUG_ON
2026-02-25 9:30 ` Xuan Zhuo
@ 2026-02-25 9:33 ` Michael S. Tsirkin
2026-02-25 9:36 ` Xuan Zhuo
0 siblings, 1 reply; 14+ messages in thread
From: Michael S. Tsirkin @ 2026-02-25 9:33 UTC (permalink / raw)
To: Xuan Zhuo
Cc: Srujana Challa, pabeni, jasowang, eperezma, davem, edumazet, kuba,
ndabilpuram, kshankar, netdev, virtualization
On Wed, Feb 25, 2026 at 05:30:33PM +0800, Xuan Zhuo wrote:
> On Wed, 25 Feb 2026 04:24:14 -0500, "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > On Wed, Feb 25, 2026 at 05:11:42PM +0800, Xuan Zhuo wrote:
> > > On Tue, 24 Feb 2026 12:28:50 +0530, Srujana Challa <schalla@marvell.com> wrote:
> > > > Since NETDEV_RSS_KEY_LEN was increased to 256 in net-next, use
> > > > BUILD_BUG_ON to enforce the limit at compile time and remove the
> > > > redundant runtime max check.
> > > >
> > > > Signed-off-by: Srujana Challa <schalla@marvell.com>
> > > > ---
> > > > drivers/net/virtio_net.c | 8 +-------
> > > > 1 file changed, 1 insertion(+), 7 deletions(-)
> > > >
> > > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> > > > index eeefe8abc122..768ad5523dfa 100644
> > > > --- a/drivers/net/virtio_net.c
> > > > +++ b/drivers/net/virtio_net.c
> > > > @@ -6639,13 +6639,7 @@ static int virtnet_validate(struct virtio_device *vdev)
> > > > __virtio_clear_bit(vdev, VIRTIO_NET_F_RSS);
> > > > __virtio_clear_bit(vdev, VIRTIO_NET_F_HASH_REPORT);
> > > > }
> > > > - if (key_sz > NETDEV_RSS_KEY_LEN) {
> > > > - dev_warn(&vdev->dev,
> > > > - "rss_max_key_size=%u exceeds driver limit %u, disabling RSS\n",
> > > > - key_sz, NETDEV_RSS_KEY_LEN);
> > > > - __virtio_clear_bit(vdev, VIRTIO_NET_F_RSS);
> > > > - __virtio_clear_bit(vdev, VIRTIO_NET_F_HASH_REPORT);
> > > > - }
> > > > + BUILD_BUG_ON(type_max(key_sz) >= NETDEV_RSS_KEY_LEN);
> > >
> > > Do we really need this check?
> > >
> > > If I understand correctly, the intention is to cap key_sz at 256. However, since
> > > key_sz is of type u8, its maximum value is inherently 255, making this check
> > > redundant. This is not only limited by this kernel code, the virtio-net spec
> > > defines this.
> >
> > That's why it's BUILD_BUG_ON. It checks it has the right type.
> >
> > We never *need* BUILD_BUG_ON by definition, what this does is
> > document the assumption.
> >
> >
> > > Moreover, if NETDEV_RSS_KEY_LEN is ever reduced to a value smaller than 256 in
> > > the future, this check would no longer enforce the intended limit correctly.
> >
> > then it would fail build.
>
> So, does this mean we don't need to account for the case where
> NETDEV_RSS_KEY_LEN is 128, but the key_sz reported by the device is 64?
>
> Thanks.
>
yes. the code makes assumptions but it documents them and not
just documents them, build will fail if they are violated.
> >
> > >
> > > Moreover, you should add a cover letter.
> > >
> > > Thanks.
> > >
> > >
> > >
> > >
> > >
> > > > }
> > > >
> > > > return 0;
> > > > --
> > > > 2.25.1
> > > >
> >
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH net-next,2/2] virtio_net: replace RSS key size max check with BUILD_BUG_ON
2026-02-25 9:33 ` Michael S. Tsirkin
@ 2026-02-25 9:36 ` Xuan Zhuo
2026-02-25 9:47 ` Michael S. Tsirkin
0 siblings, 1 reply; 14+ messages in thread
From: Xuan Zhuo @ 2026-02-25 9:36 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: Srujana Challa, pabeni, jasowang, eperezma, davem, edumazet, kuba,
ndabilpuram, kshankar, netdev, virtualization
On Wed, 25 Feb 2026 04:33:57 -0500, "Michael S. Tsirkin" <mst@redhat.com> wrote:
> On Wed, Feb 25, 2026 at 05:30:33PM +0800, Xuan Zhuo wrote:
> > On Wed, 25 Feb 2026 04:24:14 -0500, "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > On Wed, Feb 25, 2026 at 05:11:42PM +0800, Xuan Zhuo wrote:
> > > > On Tue, 24 Feb 2026 12:28:50 +0530, Srujana Challa <schalla@marvell.com> wrote:
> > > > > Since NETDEV_RSS_KEY_LEN was increased to 256 in net-next, use
> > > > > BUILD_BUG_ON to enforce the limit at compile time and remove the
> > > > > redundant runtime max check.
> > > > >
> > > > > Signed-off-by: Srujana Challa <schalla@marvell.com>
> > > > > ---
> > > > > drivers/net/virtio_net.c | 8 +-------
> > > > > 1 file changed, 1 insertion(+), 7 deletions(-)
> > > > >
> > > > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> > > > > index eeefe8abc122..768ad5523dfa 100644
> > > > > --- a/drivers/net/virtio_net.c
> > > > > +++ b/drivers/net/virtio_net.c
> > > > > @@ -6639,13 +6639,7 @@ static int virtnet_validate(struct virtio_device *vdev)
> > > > > __virtio_clear_bit(vdev, VIRTIO_NET_F_RSS);
> > > > > __virtio_clear_bit(vdev, VIRTIO_NET_F_HASH_REPORT);
> > > > > }
> > > > > - if (key_sz > NETDEV_RSS_KEY_LEN) {
> > > > > - dev_warn(&vdev->dev,
> > > > > - "rss_max_key_size=%u exceeds driver limit %u, disabling RSS\n",
> > > > > - key_sz, NETDEV_RSS_KEY_LEN);
> > > > > - __virtio_clear_bit(vdev, VIRTIO_NET_F_RSS);
> > > > > - __virtio_clear_bit(vdev, VIRTIO_NET_F_HASH_REPORT);
> > > > > - }
> > > > > + BUILD_BUG_ON(type_max(key_sz) >= NETDEV_RSS_KEY_LEN);
> > > >
> > > > Do we really need this check?
> > > >
> > > > If I understand correctly, the intention is to cap key_sz at 256. However, since
> > > > key_sz is of type u8, its maximum value is inherently 255, making this check
> > > > redundant. This is not only limited by this kernel code, the virtio-net spec
> > > > defines this.
> > >
> > > That's why it's BUILD_BUG_ON. It checks it has the right type.
> > >
> > > We never *need* BUILD_BUG_ON by definition, what this does is
> > > document the assumption.
> > >
> > >
> > > > Moreover, if NETDEV_RSS_KEY_LEN is ever reduced to a value smaller than 256 in
> > > > the future, this check would no longer enforce the intended limit correctly.
> > >
> > > then it would fail build.
> >
> > So, does this mean we don't need to account for the case where
> > NETDEV_RSS_KEY_LEN is 128, but the key_sz reported by the device is 64?
> >
> > Thanks.
> >
>
> yes.
Why?
If NETDEV_RSS_KEY_LEN is 128 but the device reports a key_sz of 64, does this
violate the spec?
> the code makes assumptions but it documents them and not
> just documents them, build will fail if they are violated.
About this, I am ok.
Thanks.
>
>
> > >
> > > >
> > > > Moreover, you should add a cover letter.
> > > >
> > > > Thanks.
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > > }
> > > > >
> > > > > return 0;
> > > > > --
> > > > > 2.25.1
> > > > >
> > >
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH net-next,2/2] virtio_net: replace RSS key size max check with BUILD_BUG_ON
2026-02-25 9:36 ` Xuan Zhuo
@ 2026-02-25 9:47 ` Michael S. Tsirkin
2026-02-25 9:52 ` Xuan Zhuo
0 siblings, 1 reply; 14+ messages in thread
From: Michael S. Tsirkin @ 2026-02-25 9:47 UTC (permalink / raw)
To: Xuan Zhuo
Cc: Srujana Challa, pabeni, jasowang, eperezma, davem, edumazet, kuba,
ndabilpuram, kshankar, netdev, virtualization
On Wed, Feb 25, 2026 at 05:36:06PM +0800, Xuan Zhuo wrote:
> On Wed, 25 Feb 2026 04:33:57 -0500, "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > On Wed, Feb 25, 2026 at 05:30:33PM +0800, Xuan Zhuo wrote:
> > > On Wed, 25 Feb 2026 04:24:14 -0500, "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > > On Wed, Feb 25, 2026 at 05:11:42PM +0800, Xuan Zhuo wrote:
> > > > > On Tue, 24 Feb 2026 12:28:50 +0530, Srujana Challa <schalla@marvell.com> wrote:
> > > > > > Since NETDEV_RSS_KEY_LEN was increased to 256 in net-next, use
> > > > > > BUILD_BUG_ON to enforce the limit at compile time and remove the
> > > > > > redundant runtime max check.
> > > > > >
> > > > > > Signed-off-by: Srujana Challa <schalla@marvell.com>
> > > > > > ---
> > > > > > drivers/net/virtio_net.c | 8 +-------
> > > > > > 1 file changed, 1 insertion(+), 7 deletions(-)
> > > > > >
> > > > > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> > > > > > index eeefe8abc122..768ad5523dfa 100644
> > > > > > --- a/drivers/net/virtio_net.c
> > > > > > +++ b/drivers/net/virtio_net.c
> > > > > > @@ -6639,13 +6639,7 @@ static int virtnet_validate(struct virtio_device *vdev)
> > > > > > __virtio_clear_bit(vdev, VIRTIO_NET_F_RSS);
> > > > > > __virtio_clear_bit(vdev, VIRTIO_NET_F_HASH_REPORT);
> > > > > > }
> > > > > > - if (key_sz > NETDEV_RSS_KEY_LEN) {
> > > > > > - dev_warn(&vdev->dev,
> > > > > > - "rss_max_key_size=%u exceeds driver limit %u, disabling RSS\n",
> > > > > > - key_sz, NETDEV_RSS_KEY_LEN);
> > > > > > - __virtio_clear_bit(vdev, VIRTIO_NET_F_RSS);
> > > > > > - __virtio_clear_bit(vdev, VIRTIO_NET_F_HASH_REPORT);
> > > > > > - }
> > > > > > + BUILD_BUG_ON(type_max(key_sz) >= NETDEV_RSS_KEY_LEN);
> > > > >
> > > > > Do we really need this check?
> > > > >
> > > > > If I understand correctly, the intention is to cap key_sz at 256. However, since
> > > > > key_sz is of type u8, its maximum value is inherently 255, making this check
> > > > > redundant. This is not only limited by this kernel code, the virtio-net spec
> > > > > defines this.
> > > >
> > > > That's why it's BUILD_BUG_ON. It checks it has the right type.
> > > >
> > > > We never *need* BUILD_BUG_ON by definition, what this does is
> > > > document the assumption.
> > > >
> > > >
> > > > > Moreover, if NETDEV_RSS_KEY_LEN is ever reduced to a value smaller than 256 in
> > > > > the future, this check would no longer enforce the intended limit correctly.
> > > >
> > > > then it would fail build.
> > >
> > > So, does this mean we don't need to account for the case where
> > > NETDEV_RSS_KEY_LEN is 128, but the key_sz reported by the device is 64?
> > >
> > > Thanks.
> > >
> >
> > yes.
>
> Why?
>
> If NETDEV_RSS_KEY_LEN is 128 but the device reports a key_sz of 64, does this
> violate the spec?
not the value of key_sz. If type of key_sz
i actually do not understand the question. this is not what BUILD_BUG_ON
checks.
> > the code makes assumptions but it documents them and not
> > just documents them, build will fail if they are violated.
>
> About this, I am ok.
>
> Thanks.
>
>
> >
> >
> > > >
> > > > >
> > > > > Moreover, you should add a cover letter.
> > > > >
> > > > > Thanks.
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > > }
> > > > > >
> > > > > > return 0;
> > > > > > --
> > > > > > 2.25.1
> > > > > >
> > > >
> >
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH net-next,2/2] virtio_net: replace RSS key size max check with BUILD_BUG_ON
2026-02-25 9:47 ` Michael S. Tsirkin
@ 2026-02-25 9:52 ` Xuan Zhuo
2026-02-25 10:01 ` Michael S. Tsirkin
2026-02-25 10:05 ` Michael S. Tsirkin
0 siblings, 2 replies; 14+ messages in thread
From: Xuan Zhuo @ 2026-02-25 9:52 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: Srujana Challa, pabeni, jasowang, eperezma, davem, edumazet, kuba,
ndabilpuram, kshankar, netdev, virtualization
On Wed, 25 Feb 2026 04:47:22 -0500, "Michael S. Tsirkin" <mst@redhat.com> wrote:
> On Wed, Feb 25, 2026 at 05:36:06PM +0800, Xuan Zhuo wrote:
> > On Wed, 25 Feb 2026 04:33:57 -0500, "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > On Wed, Feb 25, 2026 at 05:30:33PM +0800, Xuan Zhuo wrote:
> > > > On Wed, 25 Feb 2026 04:24:14 -0500, "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > > > On Wed, Feb 25, 2026 at 05:11:42PM +0800, Xuan Zhuo wrote:
> > > > > > On Tue, 24 Feb 2026 12:28:50 +0530, Srujana Challa <schalla@marvell.com> wrote:
> > > > > > > Since NETDEV_RSS_KEY_LEN was increased to 256 in net-next, use
> > > > > > > BUILD_BUG_ON to enforce the limit at compile time and remove the
> > > > > > > redundant runtime max check.
> > > > > > >
> > > > > > > Signed-off-by: Srujana Challa <schalla@marvell.com>
> > > > > > > ---
> > > > > > > drivers/net/virtio_net.c | 8 +-------
> > > > > > > 1 file changed, 1 insertion(+), 7 deletions(-)
> > > > > > >
> > > > > > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> > > > > > > index eeefe8abc122..768ad5523dfa 100644
> > > > > > > --- a/drivers/net/virtio_net.c
> > > > > > > +++ b/drivers/net/virtio_net.c
> > > > > > > @@ -6639,13 +6639,7 @@ static int virtnet_validate(struct virtio_device *vdev)
> > > > > > > __virtio_clear_bit(vdev, VIRTIO_NET_F_RSS);
> > > > > > > __virtio_clear_bit(vdev, VIRTIO_NET_F_HASH_REPORT);
> > > > > > > }
> > > > > > > - if (key_sz > NETDEV_RSS_KEY_LEN) {
> > > > > > > - dev_warn(&vdev->dev,
> > > > > > > - "rss_max_key_size=%u exceeds driver limit %u, disabling RSS\n",
> > > > > > > - key_sz, NETDEV_RSS_KEY_LEN);
> > > > > > > - __virtio_clear_bit(vdev, VIRTIO_NET_F_RSS);
> > > > > > > - __virtio_clear_bit(vdev, VIRTIO_NET_F_HASH_REPORT);
> > > > > > > - }
> > > > > > > + BUILD_BUG_ON(type_max(key_sz) >= NETDEV_RSS_KEY_LEN);
> > > > > >
> > > > > > Do we really need this check?
> > > > > >
> > > > > > If I understand correctly, the intention is to cap key_sz at 256. However, since
> > > > > > key_sz is of type u8, its maximum value is inherently 255, making this check
> > > > > > redundant. This is not only limited by this kernel code, the virtio-net spec
> > > > > > defines this.
> > > > >
> > > > > That's why it's BUILD_BUG_ON. It checks it has the right type.
> > > > >
> > > > > We never *need* BUILD_BUG_ON by definition, what this does is
> > > > > document the assumption.
> > > > >
> > > > >
> > > > > > Moreover, if NETDEV_RSS_KEY_LEN is ever reduced to a value smaller than 256 in
> > > > > > the future, this check would no longer enforce the intended limit correctly.
> > > > >
> > > > > then it would fail build.
> > > >
> > > > So, does this mean we don't need to account for the case where
> > > > NETDEV_RSS_KEY_LEN is 128, but the key_sz reported by the device is 64?
> > > >
> > > > Thanks.
> > > >
> > >
> > > yes.
> >
> > Why?
> >
> > If NETDEV_RSS_KEY_LEN is 128 but the device reports a key_sz of 64, does this
> > violate the spec?
>
> not the value of key_sz. If type of key_sz
>
>
> i actually do not understand the question. this is not what BUILD_BUG_ON
> checks.
So this is the issue. Originally, the code checked whether the value of key_sz
was less than NETDEV_RSS_KEY_LEN. However, switching to a type_max check means
it no longer covers the scenario I described. Therefore, I think this is
unreasonable.
Thanks
>
> > > the code makes assumptions but it documents them and not
> > > just documents them, build will fail if they are violated.
> >
> > About this, I am ok.
> >
> > Thanks.
> >
> >
> > >
> > >
> > > > >
> > > > > >
> > > > > > Moreover, you should add a cover letter.
> > > > > >
> > > > > > Thanks.
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > > }
> > > > > > >
> > > > > > > return 0;
> > > > > > > --
> > > > > > > 2.25.1
> > > > > > >
> > > > >
> > >
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH net-next,2/2] virtio_net: replace RSS key size max check with BUILD_BUG_ON
2026-02-25 9:52 ` Xuan Zhuo
@ 2026-02-25 10:01 ` Michael S. Tsirkin
2026-02-25 10:05 ` Michael S. Tsirkin
1 sibling, 0 replies; 14+ messages in thread
From: Michael S. Tsirkin @ 2026-02-25 10:01 UTC (permalink / raw)
To: Xuan Zhuo
Cc: Srujana Challa, pabeni, jasowang, eperezma, davem, edumazet, kuba,
ndabilpuram, kshankar, netdev, virtualization
On Wed, Feb 25, 2026 at 05:52:29PM +0800, Xuan Zhuo wrote:
> On Wed, 25 Feb 2026 04:47:22 -0500, "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > On Wed, Feb 25, 2026 at 05:36:06PM +0800, Xuan Zhuo wrote:
> > > On Wed, 25 Feb 2026 04:33:57 -0500, "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > > On Wed, Feb 25, 2026 at 05:30:33PM +0800, Xuan Zhuo wrote:
> > > > > On Wed, 25 Feb 2026 04:24:14 -0500, "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > > > > On Wed, Feb 25, 2026 at 05:11:42PM +0800, Xuan Zhuo wrote:
> > > > > > > On Tue, 24 Feb 2026 12:28:50 +0530, Srujana Challa <schalla@marvell.com> wrote:
> > > > > > > > Since NETDEV_RSS_KEY_LEN was increased to 256 in net-next, use
> > > > > > > > BUILD_BUG_ON to enforce the limit at compile time and remove the
> > > > > > > > redundant runtime max check.
> > > > > > > >
> > > > > > > > Signed-off-by: Srujana Challa <schalla@marvell.com>
> > > > > > > > ---
> > > > > > > > drivers/net/virtio_net.c | 8 +-------
> > > > > > > > 1 file changed, 1 insertion(+), 7 deletions(-)
> > > > > > > >
> > > > > > > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> > > > > > > > index eeefe8abc122..768ad5523dfa 100644
> > > > > > > > --- a/drivers/net/virtio_net.c
> > > > > > > > +++ b/drivers/net/virtio_net.c
> > > > > > > > @@ -6639,13 +6639,7 @@ static int virtnet_validate(struct virtio_device *vdev)
> > > > > > > > __virtio_clear_bit(vdev, VIRTIO_NET_F_RSS);
> > > > > > > > __virtio_clear_bit(vdev, VIRTIO_NET_F_HASH_REPORT);
> > > > > > > > }
> > > > > > > > - if (key_sz > NETDEV_RSS_KEY_LEN) {
> > > > > > > > - dev_warn(&vdev->dev,
> > > > > > > > - "rss_max_key_size=%u exceeds driver limit %u, disabling RSS\n",
> > > > > > > > - key_sz, NETDEV_RSS_KEY_LEN);
> > > > > > > > - __virtio_clear_bit(vdev, VIRTIO_NET_F_RSS);
> > > > > > > > - __virtio_clear_bit(vdev, VIRTIO_NET_F_HASH_REPORT);
> > > > > > > > - }
> > > > > > > > + BUILD_BUG_ON(type_max(key_sz) >= NETDEV_RSS_KEY_LEN);
> > > > > > >
> > > > > > > Do we really need this check?
> > > > > > >
> > > > > > > If I understand correctly, the intention is to cap key_sz at 256. However, since
> > > > > > > key_sz is of type u8, its maximum value is inherently 255, making this check
> > > > > > > redundant. This is not only limited by this kernel code, the virtio-net spec
> > > > > > > defines this.
> > > > > >
> > > > > > That's why it's BUILD_BUG_ON. It checks it has the right type.
> > > > > >
> > > > > > We never *need* BUILD_BUG_ON by definition, what this does is
> > > > > > document the assumption.
> > > > > >
> > > > > >
> > > > > > > Moreover, if NETDEV_RSS_KEY_LEN is ever reduced to a value smaller than 256 in
> > > > > > > the future, this check would no longer enforce the intended limit correctly.
> > > > > >
> > > > > > then it would fail build.
> > > > >
> > > > > So, does this mean we don't need to account for the case where
> > > > > NETDEV_RSS_KEY_LEN is 128, but the key_sz reported by the device is 64?
> > > > >
> > > > > Thanks.
> > > > >
> > > >
> > > > yes.
> > >
> > > Why?
> > >
> > > If NETDEV_RSS_KEY_LEN is 128 but the device reports a key_sz of 64, does this
> > > violate the spec?
> >
> > not the value of key_sz. If type of key_sz
> >
> >
> > i actually do not understand the question. this is not what BUILD_BUG_ON
> > checks.
>
> So this is the issue. Originally, the code checked whether the value of key_sz
> was less than NETDEV_RSS_KEY_LEN.
No, and the check was plain wrong:
- if (key_sz > NETDEV_RSS_KEY_LEN) {
-
so if device supports a larger key then .... we disable the feature
completely? Silly.
But the issue is present in net just the same.
So I think the commit log should be rewritten to explain the real issue,
and target net, not net-next.
> However, switching to a type_max check means
> it no longer covers the scenario I described. Therefore, I think this is
> unreasonable.
>
> Thanks
> >
> > > > the code makes assumptions but it documents them and not
> > > > just documents them, build will fail if they are violated.
> > >
> > > About this, I am ok.
> > >
> > > Thanks.
> > >
> > >
> > > >
> > > >
> > > > > >
> > > > > > >
> > > > > > > Moreover, you should add a cover letter.
> > > > > > >
> > > > > > > Thanks.
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > > }
> > > > > > > >
> > > > > > > > return 0;
> > > > > > > > --
> > > > > > > > 2.25.1
> > > > > > > >
> > > > > >
> > > >
> >
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH net-next,2/2] virtio_net: replace RSS key size max check with BUILD_BUG_ON
2026-02-25 9:52 ` Xuan Zhuo
2026-02-25 10:01 ` Michael S. Tsirkin
@ 2026-02-25 10:05 ` Michael S. Tsirkin
1 sibling, 0 replies; 14+ messages in thread
From: Michael S. Tsirkin @ 2026-02-25 10:05 UTC (permalink / raw)
To: Xuan Zhuo
Cc: Srujana Challa, pabeni, jasowang, eperezma, davem, edumazet, kuba,
ndabilpuram, kshankar, netdev, virtualization
On Wed, Feb 25, 2026 at 05:52:29PM +0800, Xuan Zhuo wrote:
> On Wed, 25 Feb 2026 04:47:22 -0500, "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > On Wed, Feb 25, 2026 at 05:36:06PM +0800, Xuan Zhuo wrote:
> > > On Wed, 25 Feb 2026 04:33:57 -0500, "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > > On Wed, Feb 25, 2026 at 05:30:33PM +0800, Xuan Zhuo wrote:
> > > > > On Wed, 25 Feb 2026 04:24:14 -0500, "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > > > > On Wed, Feb 25, 2026 at 05:11:42PM +0800, Xuan Zhuo wrote:
> > > > > > > On Tue, 24 Feb 2026 12:28:50 +0530, Srujana Challa <schalla@marvell.com> wrote:
> > > > > > > > Since NETDEV_RSS_KEY_LEN was increased to 256 in net-next, use
> > > > > > > > BUILD_BUG_ON to enforce the limit at compile time and remove the
> > > > > > > > redundant runtime max check.
> > > > > > > >
> > > > > > > > Signed-off-by: Srujana Challa <schalla@marvell.com>
> > > > > > > > ---
> > > > > > > > drivers/net/virtio_net.c | 8 +-------
> > > > > > > > 1 file changed, 1 insertion(+), 7 deletions(-)
> > > > > > > >
> > > > > > > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> > > > > > > > index eeefe8abc122..768ad5523dfa 100644
> > > > > > > > --- a/drivers/net/virtio_net.c
> > > > > > > > +++ b/drivers/net/virtio_net.c
> > > > > > > > @@ -6639,13 +6639,7 @@ static int virtnet_validate(struct virtio_device *vdev)
> > > > > > > > __virtio_clear_bit(vdev, VIRTIO_NET_F_RSS);
> > > > > > > > __virtio_clear_bit(vdev, VIRTIO_NET_F_HASH_REPORT);
> > > > > > > > }
> > > > > > > > - if (key_sz > NETDEV_RSS_KEY_LEN) {
> > > > > > > > - dev_warn(&vdev->dev,
> > > > > > > > - "rss_max_key_size=%u exceeds driver limit %u, disabling RSS\n",
> > > > > > > > - key_sz, NETDEV_RSS_KEY_LEN);
> > > > > > > > - __virtio_clear_bit(vdev, VIRTIO_NET_F_RSS);
> > > > > > > > - __virtio_clear_bit(vdev, VIRTIO_NET_F_HASH_REPORT);
> > > > > > > > - }
> > > > > > > > + BUILD_BUG_ON(type_max(key_sz) >= NETDEV_RSS_KEY_LEN);
> > > > > > >
> > > > > > > Do we really need this check?
> > > > > > >
> > > > > > > If I understand correctly, the intention is to cap key_sz at 256. However, since
> > > > > > > key_sz is of type u8, its maximum value is inherently 255, making this check
> > > > > > > redundant. This is not only limited by this kernel code, the virtio-net spec
> > > > > > > defines this.
> > > > > >
> > > > > > That's why it's BUILD_BUG_ON. It checks it has the right type.
> > > > > >
> > > > > > We never *need* BUILD_BUG_ON by definition, what this does is
> > > > > > document the assumption.
> > > > > >
> > > > > >
> > > > > > > Moreover, if NETDEV_RSS_KEY_LEN is ever reduced to a value smaller than 256 in
> > > > > > > the future, this check would no longer enforce the intended limit correctly.
> > > > > >
> > > > > > then it would fail build.
> > > > >
> > > > > So, does this mean we don't need to account for the case where
> > > > > NETDEV_RSS_KEY_LEN is 128, but the key_sz reported by the device is 64?
> > > > >
> > > > > Thanks.
> > > > >
> > > >
> > > > yes.
> > >
> > > Why?
> > >
> > > If NETDEV_RSS_KEY_LEN is 128 but the device reports a key_sz of 64, does this
> > > violate the spec?
> >
> > not the value of key_sz. If type of key_sz
> >
> >
> > i actually do not understand the question. this is not what BUILD_BUG_ON
> > checks.
>
> So this is the issue. Originally, the code checked whether the value of key_sz
> was less than NETDEV_RSS_KEY_LEN. However, switching to a type_max check means
> it no longer covers the scenario I described. Therefore, I think this is
> unreasonable.
>
> Thanks
patch 1 is unreasonable i think.
which is why patchsets should have a cover letter btw so
one can reply to just patch 1.
> >
> > > > the code makes assumptions but it documents them and not
> > > > just documents them, build will fail if they are violated.
> > >
> > > About this, I am ok.
> > >
> > > Thanks.
> > >
> > >
> > > >
> > > >
> > > > > >
> > > > > > >
> > > > > > > Moreover, you should add a cover letter.
> > > > > > >
> > > > > > > Thanks.
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > > }
> > > > > > > >
> > > > > > > > return 0;
> > > > > > > > --
> > > > > > > > 2.25.1
> > > > > > > >
> > > > > >
> > > >
> >
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH net-next,2/2] virtio_net: replace RSS key size max check with BUILD_BUG_ON
2026-02-24 6:58 ` [PATCH net-next,2/2] virtio_net: replace RSS key size max check with BUILD_BUG_ON Srujana Challa
2026-02-25 9:11 ` Xuan Zhuo
@ 2026-02-25 14:50 ` David Laight
2026-02-25 14:52 ` Michael S. Tsirkin
1 sibling, 1 reply; 14+ messages in thread
From: David Laight @ 2026-02-25 14:50 UTC (permalink / raw)
To: Srujana Challa
Cc: netdev, virtualization, pabeni, mst, jasowang, xuanzhuo, eperezma,
davem, edumazet, kuba, ndabilpuram, kshankar
On Tue, 24 Feb 2026 12:28:50 +0530
Srujana Challa <schalla@marvell.com> wrote:
> Since NETDEV_RSS_KEY_LEN was increased to 256 in net-next, use
> BUILD_BUG_ON to enforce the limit at compile time and remove the
> redundant runtime max check.
>
> Signed-off-by: Srujana Challa <schalla@marvell.com>
> ---
> drivers/net/virtio_net.c | 8 +-------
> 1 file changed, 1 insertion(+), 7 deletions(-)
>
> diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> index eeefe8abc122..768ad5523dfa 100644
> --- a/drivers/net/virtio_net.c
> +++ b/drivers/net/virtio_net.c
> @@ -6639,13 +6639,7 @@ static int virtnet_validate(struct virtio_device *vdev)
> __virtio_clear_bit(vdev, VIRTIO_NET_F_RSS);
> __virtio_clear_bit(vdev, VIRTIO_NET_F_HASH_REPORT);
> }
> - if (key_sz > NETDEV_RSS_KEY_LEN) {
> - dev_warn(&vdev->dev,
> - "rss_max_key_size=%u exceeds driver limit %u, disabling RSS\n",
> - key_sz, NETDEV_RSS_KEY_LEN);
> - __virtio_clear_bit(vdev, VIRTIO_NET_F_RSS);
> - __virtio_clear_bit(vdev, VIRTIO_NET_F_HASH_REPORT);
> - }
> + BUILD_BUG_ON(type_max(key_sz) >= NETDEV_RSS_KEY_LEN);
type_max is horrid.
I did read the later discussion (but it has fallen out of my brain)
but isn't that check broken and/or backwards anyway?
I'd also question why you are using u8 for a local (I didn't find this
version of the file), it will generate worse code that [unsigned] int.
David
> }
>
> return 0;
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH net-next,2/2] virtio_net: replace RSS key size max check with BUILD_BUG_ON
2026-02-25 14:50 ` David Laight
@ 2026-02-25 14:52 ` Michael S. Tsirkin
0 siblings, 0 replies; 14+ messages in thread
From: Michael S. Tsirkin @ 2026-02-25 14:52 UTC (permalink / raw)
To: David Laight
Cc: Srujana Challa, netdev, virtualization, pabeni, jasowang,
xuanzhuo, eperezma, davem, edumazet, kuba, ndabilpuram, kshankar
On Wed, Feb 25, 2026 at 02:50:27PM +0000, David Laight wrote:
> On Tue, 24 Feb 2026 12:28:50 +0530
> Srujana Challa <schalla@marvell.com> wrote:
>
> > Since NETDEV_RSS_KEY_LEN was increased to 256 in net-next, use
> > BUILD_BUG_ON to enforce the limit at compile time and remove the
> > redundant runtime max check.
> >
> > Signed-off-by: Srujana Challa <schalla@marvell.com>
> > ---
> > drivers/net/virtio_net.c | 8 +-------
> > 1 file changed, 1 insertion(+), 7 deletions(-)
> >
> > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> > index eeefe8abc122..768ad5523dfa 100644
> > --- a/drivers/net/virtio_net.c
> > +++ b/drivers/net/virtio_net.c
> > @@ -6639,13 +6639,7 @@ static int virtnet_validate(struct virtio_device *vdev)
> > __virtio_clear_bit(vdev, VIRTIO_NET_F_RSS);
> > __virtio_clear_bit(vdev, VIRTIO_NET_F_HASH_REPORT);
> > }
> > - if (key_sz > NETDEV_RSS_KEY_LEN) {
> > - dev_warn(&vdev->dev,
> > - "rss_max_key_size=%u exceeds driver limit %u, disabling RSS\n",
> > - key_sz, NETDEV_RSS_KEY_LEN);
> > - __virtio_clear_bit(vdev, VIRTIO_NET_F_RSS);
> > - __virtio_clear_bit(vdev, VIRTIO_NET_F_HASH_REPORT);
> > - }
> > + BUILD_BUG_ON(type_max(key_sz) >= NETDEV_RSS_KEY_LEN);
>
> type_max is horrid.
> I did read the later discussion (but it has fallen out of my brain)
> but isn't that check broken and/or backwards anyway?
it is just trying to say "i check at build time that hardware
key size will never exceed NETDEV_RSS_KEY_LEN just because it's not
large enough".
> I'd also question why you are using u8 for a local (I didn't find this
> version of the file), it will generate worse code that [unsigned] int.
that's hardware format. but yes it should be config->max_key_size or
whatever it is.
> David
>
> > }
> >
> > return 0;
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2026-02-25 14:52 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-24 4:52 [PATCH net,v4,1/2] virtio_net: Improve RSS key size validation and use NETDEV_RSS_KEY_LEN Srujana Challa
2026-02-24 4:52 ` [PATCH net-next,2/2] virtio_net: replace RSS key size max check with BUILD_BUG_ON Srujana Challa
-- strict thread matches above, loose matches on Subject: below --
2026-02-24 6:58 [PATCH net,v4,1/2] virtio_net: Improve RSS key size validation and use NETDEV_RSS_KEY_LEN Srujana Challa
2026-02-24 6:58 ` [PATCH net-next,2/2] virtio_net: replace RSS key size max check with BUILD_BUG_ON Srujana Challa
2026-02-25 9:11 ` Xuan Zhuo
2026-02-25 9:24 ` Michael S. Tsirkin
2026-02-25 9:30 ` Xuan Zhuo
2026-02-25 9:33 ` Michael S. Tsirkin
2026-02-25 9:36 ` Xuan Zhuo
2026-02-25 9:47 ` Michael S. Tsirkin
2026-02-25 9:52 ` Xuan Zhuo
2026-02-25 10:01 ` Michael S. Tsirkin
2026-02-25 10:05 ` Michael S. Tsirkin
2026-02-25 14:50 ` David Laight
2026-02-25 14:52 ` Michael S. Tsirkin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox