From: Paritosh Potukuchi <paritoshpotukuchi@gmail.com>
To: Kuniyuki Iwashima <kuniyu@google.com>
Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
kuba@kernel.org, edumazet@google.com, andrew+netdev@lunn.ch,
jv@jvosburgh.net, davem@davemloft.net, pabeni@redhat.com,
paritosh.potukuchi@amd.com
Subject: Re: [PATCH v2 2/2] bonding: reuse neigh_setup from slave neigh_parms
Date: Mon, 6 Jul 2026 10:07:35 +0000 [thread overview]
Message-ID: <20260706100735.1852213-1-paritosh.potukuchi@amd.com> (raw)
In-Reply-To: <CAAVpQUChEhWDxVPXOOQQcPMBLNocCACKNiX6AZwy5O-3+wgbtw@mail.gmail.com>
Hi Kuniyuki,
>The real user is qeth_l3_main.c only and it's not compiled
>on 99% host.
>We usually bail out at if (!slave_ops->ndo_neigh_setup),
>which is called after your neigh_parms_lookup_dev(), and
>there is no need to do O(n) traversal.
>With 2K netns, it could incur unnecessary 4K traversal (lo
>+ another dev) for each neigh creation, which is done under
>RTNL or from interrupt context.
>So, it will be a problem.
That makes sense. Thanks for the insight.
>It does not help. Just populating fields does not change the
>loop detection logic.
True. Just populating fields would not suffice. Do you think
it would a good solution to modify the ndo_neigh_setup
function?
Currently it takes a (netdev, parms) pair as an argument.
The way the ndo_neigh_setup is being used , both in stacked/
virtual devices and slave devices, is to expose the underlying
netdev's local neigh_setup function, through the parms argument.
There is a TODO in the bond_main.c file that suggests the
following:
/* TODO: find another way [1] to implement this.
* Passing a zeroed structure is fragile,
* but at least we do not pass garbage.
*
* [1] One way would be that ndo_neigh_setup() never touch
* struct neigh_parms, but propagate the new neigh_setup()
* back to ___neigh_create() / neigh_parms_alloc()
*/
As the TODO suggests, would it be a good idea to modify the
ndo_neigh_setup function to be able to return the netdev's
local neigh_setup function.
This would solve the problem of passing a dummy parms structure.
typedef int (*neigh_setup_fn_t)(struct neighbour *);
static neigh_setup_fn_t ndo_neigh_setup(struct net_device *dev)
{
return qeth_l3_neigh_setup_noarp;
}
Though the problem with this approach is that ndo_neigh_setup
loses the flexibility to modify other fields in the parms
structure.
What is your opinion on this?
prev parent reply other threads:[~2026-07-06 10:07 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-01 8:15 [PATCH v2 0/2] Add and use neigh_parms_lookup_dev() Paritosh Potukuchi
2026-07-01 8:15 ` [PATCH v2 1/2] net: neighbour: add neigh_parms_lookup_dev() helper Paritosh Potukuchi
2026-07-01 8:16 ` [PATCH v2 2/2] bonding: reuse neigh_setup from slave neigh_parms Paritosh Potukuchi
2026-07-03 6:38 ` Kuniyuki Iwashima
2026-07-03 9:47 ` Paritosh Potukuchi
2026-07-04 1:43 ` Kuniyuki Iwashima
2026-07-06 10:07 ` Paritosh Potukuchi [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260706100735.1852213-1-paritosh.potukuchi@amd.com \
--to=paritoshpotukuchi@gmail.com \
--cc=andrew+netdev@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=jv@jvosburgh.net \
--cc=kuba@kernel.org \
--cc=kuniyu@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=paritosh.potukuchi@amd.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.