From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f52.google.com (mail-pj1-f52.google.com [209.85.216.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4ED203D0932 for ; Wed, 1 Jul 2026 08:16:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.52 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782893778; cv=none; b=g/eGQgPfwWw4zYBUBlbY1mOuFWY7k3eoFF4uFlhJ8Du1u7lQF5YjQuWr/xqiN3EZTY7ZVy5e+8E/kPl4iViCBAoWqLDXV1q/NdINIdmC7UZJ0SVpasAS/TiZCWt8LdZPpWUFoTYwl29c1OGUlLSs0/pQwb66tHGkt8CtoN41W5M= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782893778; c=relaxed/simple; bh=fyGt+jc0oNFM66yYaLF0Z5hcoJwFRhon7H7nHQ471Cw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=C7eGcjAI+f4KAlKv3DWGN7GeD6pECMU1DU6/bYVKM4pQ9te370bS1HDWVNtF8vozGTJMT892oD+0euin4c/liFb/L5txxgBwV31Zgj2rNw1QpHbfj/ywrf1KJn2WDOceklDagZwaEaYh5ONPufJNRiWNrs0oqEwDmsu3KfvXqkc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=QfeAAHJ7; arc=none smtp.client-ip=209.85.216.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="QfeAAHJ7" Received: by mail-pj1-f52.google.com with SMTP id 98e67ed59e1d1-37d82f3a244so171427a91.2 for ; Wed, 01 Jul 2026 01:16:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782893776; x=1783498576; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wY5L1SkTbcuC0ovvgAOdSZ2ZO/9WR1lWjpj1amt2bl0=; b=QfeAAHJ7NMbK2bl/m94Dg/7fkks782SjWku1iD7sd9bmpLCC5cXczylP8F1fJr2zDJ U4UzfI97TPEEZNSuwwkcH/HngFuCIze1ckm3N4rXfY4z7VDT1BM4eFRl49RoynVQAiH0 WdyIthnokvwOqGcGYUYXsnZ7jVP82b2Akz0+MgXty68h1kez79u6APZIsrltgBqgBIL0 JKPWC2Ds26jm3BTgXjJf4YXi2LV5F1K4jziJxP6LDzfpOELyBnG+xAwFvKrazCXRr2Hr fcNA28rsyf8mGUiF+o5phlemakuDIz+uOIrbkwCRu+PsmfISlC2z6RiRkkqKoibz2yKD BiSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782893776; x=1783498576; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=wY5L1SkTbcuC0ovvgAOdSZ2ZO/9WR1lWjpj1amt2bl0=; b=M9LFJKVKiYdFcRsirem4FltNHMqAsvB69umTAYJZRbLjOMbk5KUnBp2Drx4ej4sDNq vNWYoPmXHtWF+EEgEqELtpVJqCaqmXZiRMK///QMN0hZYqtbuAwlDkc88ndMbKDG4/aB bHQ3hKAbEzCM4cejZ9MC56ZPI7sFHqfGBqCKLg8FIWxifQ2bmSKa1kNuIXfgi7xmejNO P3nhl7r2ArtdPCp+nwbjidBLVA/QqqeDxT7OjEG6bhQZIjJnZfxhoqyQYlXuRgJv+uQp ptnq954ZfquVxbqOt5Roqj05Y+fTbKROXOyagcyaSvgtw59RoYUOPqBtQQDiv4Yr5Hsh FOwQ== X-Gm-Message-State: AOJu0YzAP1uu+LytOwck0jgyOGW39y/+ukf+YSqcTUe4QrmaAC4+5gja RFicnWoC+XOZCSx35+yx1boUkltX65pHPTPY1XqSi4572za8dk4O3+xc X-Gm-Gg: AfdE7cmWCzVuCBbCUFg0BKc3MvXnhCBQ/r0oSZ06yzrgwqz3Tlmvmd2sJExK0iHwsdd 3SoBGKefFv/6J4ExFrdxvlWU9Eepfn1DS4mTS4vRq4bjkQ/JnYRsRGHP443MLqIIBd7/IlC/UZl 9PvSjFAX6d2lTLYDsu+hyoYH9BnES/i9laHRmGCUJnURnDWTTw7cxSPQMPt/cF6iKyBVaxS5Ljy 6aImCImCtgBWwBLaPeJynOc8PtwjUnA7riFeYyUEk6AZnQd+yz8YhX/CpfY/612Ww6J3sQsniPm 2SEXPlKNLDbsBArN3XaN9c8ZRPAchQiC25B7VLd2IYa9XjqCphma3M4EhQaUu2N6z+1KEMXFEl/ AUFU4P48acXF2fq3d56eDn3sn0A9OA4g3X0ZM13/98qfkhGnSs8Y35NfE/5uvQ7fLtE8+SY+wUm /zAKEk2aNg3gWx0BBRaBJA0UJgI3E= X-Received: by 2002:a17:90b:4fd2:b0:37e:a09:2640 with SMTP id 98e67ed59e1d1-380aa0fd3e9mr706679a91.7.1782893776546; Wed, 01 Jul 2026 01:16:16 -0700 (PDT) Received: from amd.com ([165.204.156.251]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3809641c894sm1364627a91.11.2026.07.01.01.16.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Jul 2026 01:16:15 -0700 (PDT) From: Paritosh Potukuchi X-Google-Original-From: Paritosh Potukuchi To: netdev@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Paritosh Potukuchi , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Kuniyuki Iwashima , Ido Schimmel , Petr Machata Subject: [PATCH v2 1/2] net: neighbour: add neigh_parms_lookup_dev() helper Date: Wed, 1 Jul 2026 08:15:59 +0000 Message-ID: <20260701081602.3185086-2-paritosh.potukuchi@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260701081602.3185086-1-paritosh.potukuchi@amd.com> References: <20260701081602.3185086-1-paritosh.potukuchi@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Provide a helper to lookup neigh_parms associated with a given (neigh_table, net_device) pair. The existing lookup_neigh_parms() helper is internal to the neighbour subsystem and cannot be used by other subsystems. Some stacked/virtual devices like bond require access to the underlying device's neigh_parms. neigh_parms_lookup_dev() is designed to be a wrapper around lookup_neigh_parms(). The function provides controlled access to per device neigh_parms. The caller is expected to hold rcu_read_lock(). This does not break any existing functionality. Signed-off-by: Paritosh Potukuchi --- include/net/neighbour.h | 2 ++ net/core/neighbour.c | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/include/net/neighbour.h b/include/net/neighbour.h index 8860cc2175fc..1b3b06eda886 100644 --- a/include/net/neighbour.h +++ b/include/net/neighbour.h @@ -438,6 +438,8 @@ int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p, proc_handler *proc_handler); void neigh_sysctl_unregister(struct neigh_parms *p); +struct neigh_parms *neigh_parms_lookup_dev(struct neigh_table *tbl, struct net_device *dev); + static inline void __neigh_parms_put(struct neigh_parms *parms) { refcount_dec(&parms->refcnt); diff --git a/net/core/neighbour.c b/net/core/neighbour.c index 1349c0eedb64..6d32c2668af3 100644 --- a/net/core/neighbour.c +++ b/net/core/neighbour.c @@ -1757,6 +1757,14 @@ static inline struct neigh_parms *lookup_neigh_parms(struct neigh_table *tbl, return NULL; } +/* Caller must hold rcu_read_lock()*/ + +struct neigh_parms *neigh_parms_lookup_dev(struct neigh_table *tbl, struct net_device *dev) +{ + return lookup_neigh_parms(tbl, dev_net(dev), dev->ifindex); +} +EXPORT_SYMBOL(neigh_parms_lookup_dev); + struct neigh_parms *neigh_parms_alloc(struct net_device *dev, struct neigh_table *tbl) { -- 2.43.0