]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
selftests: drv-net: ncdevmem: explicitly set HDS threshold to 0
authorJakub Kicinski <kuba@kernel.org>
Mon, 25 Aug 2025 18:04:47 +0000 (11:04 -0700)
committerJakub Kicinski <kuba@kernel.org>
Wed, 27 Aug 2025 00:35:28 +0000 (17:35 -0700)
Make sure we set HDS threshold to 0 if the device supports changing it.
It's required for ZC.

Acked-by: Stanislav Fomichev <sdf@fomichev.me>
Link: https://patch.msgid.link/20250825180447.2252977-6-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/drivers/net/hw/ncdevmem.c

index 5fe55939f0e3b3cbf5d54c4c57586302f26617df..8dc9511d046f1fbcaa4bd346c63e9bd79822e6ca 100644 (file)
@@ -464,6 +464,8 @@ static void restore_ring_config(const struct ethtool_rings_get_rsp *config)
        ethtool_rings_set_req_set_header_dev_index(req, ifindex);
        ethtool_rings_set_req_set_tcp_data_split(req,
                                                ETHTOOL_TCP_DATA_SPLIT_UNKNOWN);
+       if (config->_present.hds_thresh)
+               ethtool_rings_set_req_set_hds_thresh(req, config->hds_thresh);
 
        ret = ethtool_rings_set(ys, req);
        if (ret < 0)
@@ -490,7 +492,8 @@ static void restore_ring_config(const struct ethtool_rings_get_rsp *config)
        ynl_sock_destroy(ys);
 }
 
-static int configure_headersplit(bool on)
+static int
+configure_headersplit(const struct ethtool_rings_get_rsp *old, bool on)
 {
        struct ethtool_rings_get_req *get_req;
        struct ethtool_rings_get_rsp *get_rsp;
@@ -507,13 +510,15 @@ static int configure_headersplit(bool on)
 
        req = ethtool_rings_set_req_alloc();
        ethtool_rings_set_req_set_header_dev_index(req, ifindex);
-       if (on)
+       if (on) {
                ethtool_rings_set_req_set_tcp_data_split(req,
                                                ETHTOOL_TCP_DATA_SPLIT_ENABLED);
-       else
+               if (old->_present.hds_thresh)
+                       ethtool_rings_set_req_set_hds_thresh(req, 0);
+       } else {
                ethtool_rings_set_req_set_tcp_data_split(req,
                                                ETHTOOL_TCP_DATA_SPLIT_UNKNOWN);
-
+       }
        ret = ethtool_rings_set(ys, req);
        if (ret < 0)
                fprintf(stderr, "YNL failed: %s\n", ys->err.msg);
@@ -850,7 +855,7 @@ static int do_server(struct memory_buffer *mem)
                return -1;
        }
 
-       if (configure_headersplit(1)) {
+       if (configure_headersplit(ring_config, 1)) {
                pr_err("Failed to enable TCP header split");
                goto err_free_ring_config;
        }
@@ -1074,7 +1079,7 @@ int run_devmem_tests(void)
                goto err_free_ring_config;
        }
 
-       if (configure_headersplit(1)) {
+       if (configure_headersplit(ring_config, 1)) {
                pr_err("Failed to configure header split");
                goto err_reset_rss;
        }
@@ -1090,7 +1095,7 @@ int run_devmem_tests(void)
                goto err_unbind;
        }
 
-       if (configure_headersplit(0)) {
+       if (configure_headersplit(ring_config, 0)) {
                pr_err("Failed to configure header split");
                goto err_reset_headersplit;
        }
@@ -1106,7 +1111,7 @@ int run_devmem_tests(void)
                goto err_unbind;
        }
 
-       if (configure_headersplit(1)) {
+       if (configure_headersplit(ring_config, 1)) {
                pr_err("Failed to configure header split");
                goto err_reset_headersplit;
        }