OSDN Git Service

devlink: use xa_for_each_start() helper in devlink_nl_cmd_port_get_dump_one()
authorJiri Pirko <jiri@nvidia.com>
Fri, 10 Feb 2023 10:01:28 +0000 (11:01 +0100)
committerDavid S. Miller <davem@davemloft.net>
Mon, 13 Feb 2023 09:49:14 +0000 (09:49 +0000)
As xarray has an iterator helper that allows to start from specified
index, use this directly and avoid repeated iteration from 0.

Signed-off-by: Jiri Pirko <jiri@nvidia.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Acked-by: Jakub Kicinski <kuba@kernel.org>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/devlink/leftover.c

index c3c82d5..1f3332a 100644 (file)
@@ -1110,24 +1110,18 @@ devlink_nl_cmd_port_get_dump_one(struct sk_buff *msg, struct devlink *devlink,
        struct devlink_nl_dump_state *state = devlink_dump_state(cb);
        struct devlink_port *devlink_port;
        unsigned long port_index;
-       int idx = 0;
        int err = 0;
 
-       xa_for_each(&devlink->ports, port_index, devlink_port) {
-               if (idx < state->idx) {
-                       idx++;
-                       continue;
-               }
+       xa_for_each_start(&devlink->ports, port_index, devlink_port, state->idx) {
                err = devlink_nl_port_fill(msg, devlink_port,
                                           DEVLINK_CMD_NEW,
                                           NETLINK_CB(cb->skb).portid,
                                           cb->nlh->nlmsg_seq,
                                           NLM_F_MULTI, cb->extack);
                if (err) {
-                       state->idx = idx;
+                       state->idx = port_index;
                        break;
                }
-               idx++;
        }
 
        return err;