]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net: move mp->rx_page_size validation to __net_mp_open_rxq()
authorJakub Kicinski <kuba@kernel.org>
Thu, 22 Jan 2026 00:51:10 +0000 (16:51 -0800)
committerJakub Kicinski <kuba@kernel.org>
Fri, 23 Jan 2026 19:49:02 +0000 (11:49 -0800)
Move mp->rx_page_size validation where the rest of MP input
validation lives. No other caller is modifying mp params so
validation logic in queue restarts is out of place.

Link: https://patch.msgid.link/20260122005113.2476634-4-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/core/netdev_rx_queue.c

index b81cad90ba2ffe77c560723f7c3eba0c83c11cd6..03d7531abb3a8c325a2a81c516207fd7fa182c0c 100644 (file)
@@ -39,11 +39,8 @@ int netdev_rx_queue_restart(struct net_device *dev, unsigned int rxq_idx)
        if (qops->ndo_default_qcfg)
                qops->ndo_default_qcfg(dev, &qcfg);
 
-       if (rxq->mp_params.rx_page_size) {
-               if (!(qops->supported_params & QCFG_RX_PAGE_SIZE))
-                       return -EOPNOTSUPP;
+       if (rxq->mp_params.rx_page_size)
                qcfg.rx_page_size = rxq->mp_params.rx_page_size;
-       }
 
        new_mem = kvzalloc(qops->ndo_queue_mem_size, GFP_KERNEL);
        if (!new_mem)
@@ -115,6 +112,7 @@ int __net_mp_open_rxq(struct net_device *dev, unsigned int rxq_idx,
                      const struct pp_memory_provider_params *p,
                      struct netlink_ext_ack *extack)
 {
+       const struct netdev_queue_mgmt_ops *qops = dev->queue_mgmt_ops;
        struct netdev_rx_queue *rxq;
        int ret;
 
@@ -139,6 +137,10 @@ int __net_mp_open_rxq(struct net_device *dev, unsigned int rxq_idx,
                NL_SET_ERR_MSG(extack, "unable to custom memory provider to device with XDP program attached");
                return -EEXIST;
        }
+       if (p->rx_page_size && !(qops->supported_params & QCFG_RX_PAGE_SIZE)) {
+               NL_SET_ERR_MSG(extack, "device does not support: rx_page_size");
+               return -EOPNOTSUPP;
+       }
 
        rxq = __netif_get_rx_queue(dev, rxq_idx);
        if (rxq->mp_params.mp_ops) {