net: devmem: add ring parameter filtering
authorTaehee Yoo <ap420073@gmail.com>
Tue, 14 Jan 2025 14:28:45 +0000 (14:28 +0000)
committerJakub Kicinski <kuba@kernel.org>
Wed, 15 Jan 2025 22:42:11 +0000 (14:42 -0800)
If driver doesn't support ring parameter or tcp-data-split configuration
is not sufficient, the devmem should not be set up.
Before setup the devmem, tcp-data-split should be ON and hds-thresh
value should be 0.

Tested-by: Stanislav Fomichev <sdf@fomichev.me>
Reviewed-by: Mina Almasry <almasrymina@google.com>
Signed-off-by: Taehee Yoo <ap420073@gmail.com>
Link: https://patch.msgid.link/20250114142852.3364986-4-ap420073@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/core/devmem.c

index 0b6ed75..c971b8a 100644 (file)
@@ -8,6 +8,7 @@
  */
 
 #include <linux/dma-buf.h>
+#include <linux/ethtool_netlink.h>
 #include <linux/genalloc.h>
 #include <linux/mm.h>
 #include <linux/netdevice.h>
@@ -140,6 +141,16 @@ int net_devmem_bind_dmabuf_to_queue(struct net_device *dev, u32 rxq_idx,
                return -ERANGE;
        }
 
+       if (dev->ethtool->hds_config != ETHTOOL_TCP_DATA_SPLIT_ENABLED) {
+               NL_SET_ERR_MSG(extack, "tcp-data-split is disabled");
+               return -EINVAL;
+       }
+
+       if (dev->ethtool->hds_thresh) {
+               NL_SET_ERR_MSG(extack, "hds-thresh is not zero");
+               return -EINVAL;
+       }
+
        rxq = __netif_get_rx_queue(dev, rxq_idx);
        if (rxq->mp_params.mp_priv) {
                NL_SET_ERR_MSG(extack, "designated queue already memory provider bound");