diff mbox series

[RFC,net-next,09/22] rtnetlink: Add RTNH_F_TRAP flag

Message ID 20200908091037.2709823-10-idosch@idosch.org
State RFC
Delegated to: David Miller
Headers show
Series nexthop: Add support for nexthop objects offload | expand

Commit Message

Ido Schimmel Sept. 8, 2020, 9:10 a.m. UTC
From: Ido Schimmel <idosch@nvidia.com>

The flag indicates to user space that the nexthop is not programmed to
forward packets in hardware, but rather to trap them.

The flag will be used in subsequent patches by netdevsim to test nexthop
objects programming to device drivers and in the future by mlxsw as
well.

Signed-off-by: Ido Schimmel <idosch@nvidia.com>
---
 include/uapi/linux/rtnetlink.h | 6 ++++--
 net/ipv4/fib_semantics.c       | 2 ++
 2 files changed, 6 insertions(+), 2 deletions(-)

Comments

David Ahern Sept. 8, 2020, 3:02 p.m. UTC | #1
On 9/8/20 3:10 AM, Ido Schimmel wrote:
> From: Ido Schimmel <idosch@nvidia.com>
> 
> The flag indicates to user space that the nexthop is not programmed to
> forward packets in hardware, but rather to trap them.

please elaborate in the commit message on what 'trap' is doing. I most
likely will forget a few years from now.

> 
> The flag will be used in subsequent patches by netdevsim to test nexthop
> objects programming to device drivers and in the future by mlxsw as
> well.
> 
> Signed-off-by: Ido Schimmel <idosch@nvidia.com>
> ---
>  include/uapi/linux/rtnetlink.h | 6 ++++--
>  net/ipv4/fib_semantics.c       | 2 ++
>  2 files changed, 6 insertions(+), 2 deletions(-)
> 

Reviewed-by: David Ahern <dsahern@gmail.com>
Ido Schimmel Sept. 11, 2020, 3:26 p.m. UTC | #2
On Tue, Sep 08, 2020 at 09:02:33AM -0600, David Ahern wrote:
> On 9/8/20 3:10 AM, Ido Schimmel wrote:
> > From: Ido Schimmel <idosch@nvidia.com>
> > 
> > The flag indicates to user space that the nexthop is not programmed to
> > forward packets in hardware, but rather to trap them.
> 
> please elaborate in the commit message on what 'trap' is doing. I most
> likely will forget a few years from now.

Reworded to:

"
rtnetlink: Add RTNH_F_TRAP flag

The flag indicates to user space that the nexthop is not programmed to
forward packets in hardware, but rather to trap them to the CPU. This is
needed, for example, when the MAC of the nexthop neighbour is not
resolved and packets should reach the CPU to trigger neighbour
resolution.

The flag will be used in subsequent patches by netdevsim to test nexthop
objects programming to device drivers and in the future by mlxsw as
well.

Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Reviewed-by: David Ahern <dsahern@gmail.com>
"

> 
> > 
> > The flag will be used in subsequent patches by netdevsim to test nexthop
> > objects programming to device drivers and in the future by mlxsw as
> > well.
> > 
> > Signed-off-by: Ido Schimmel <idosch@nvidia.com>
> > ---
> >  include/uapi/linux/rtnetlink.h | 6 ++++--
> >  net/ipv4/fib_semantics.c       | 2 ++
> >  2 files changed, 6 insertions(+), 2 deletions(-)
> > 
> 
> Reviewed-by: David Ahern <dsahern@gmail.com>
David Ahern Sept. 11, 2020, 3:54 p.m. UTC | #3
On 9/11/20 9:26 AM, Ido Schimmel wrote:
> Reworded to:
> 
> "
> rtnetlink: Add RTNH_F_TRAP flag
> 
> The flag indicates to user space that the nexthop is not programmed to
> forward packets in hardware, but rather to trap them to the CPU. This is
> needed, for example, when the MAC of the nexthop neighbour is not
> resolved and packets should reach the CPU to trigger neighbour
> resolution.
> 
> The flag will be used in subsequent patches by netdevsim to test nexthop
> objects programming to device drivers and in the future by mlxsw as
> well.
> 
> Signed-off-by: Ido Schimmel <idosch@nvidia.com>
> Reviewed-by: David Ahern <dsahern@gmail.com>
> "

works for me. thanks
diff mbox series

Patch

diff --git a/include/uapi/linux/rtnetlink.h b/include/uapi/linux/rtnetlink.h
index 9b814c92de12..0ca2057d3269 100644
--- a/include/uapi/linux/rtnetlink.h
+++ b/include/uapi/linux/rtnetlink.h
@@ -396,11 +396,13 @@  struct rtnexthop {
 #define RTNH_F_DEAD		1	/* Nexthop is dead (used by multipath)	*/
 #define RTNH_F_PERVASIVE	2	/* Do recursive gateway lookup	*/
 #define RTNH_F_ONLINK		4	/* Gateway is forced on link	*/
-#define RTNH_F_OFFLOAD		8	/* offloaded route */
+#define RTNH_F_OFFLOAD		8	/* Nexthop is offloaded */
 #define RTNH_F_LINKDOWN		16	/* carrier-down on nexthop */
 #define RTNH_F_UNRESOLVED	32	/* The entry is unresolved (ipmr) */
+#define RTNH_F_TRAP		64	/* Nexthop is trapping packets */
 
-#define RTNH_COMPARE_MASK	(RTNH_F_DEAD | RTNH_F_LINKDOWN | RTNH_F_OFFLOAD)
+#define RTNH_COMPARE_MASK	(RTNH_F_DEAD | RTNH_F_LINKDOWN | \
+				 RTNH_F_OFFLOAD | RTNH_F_TRAP)
 
 /* Macros to handle hexthops */
 
diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c
index 1f75dc686b6b..f70b9a0c4957 100644
--- a/net/ipv4/fib_semantics.c
+++ b/net/ipv4/fib_semantics.c
@@ -1644,6 +1644,8 @@  int fib_nexthop_info(struct sk_buff *skb, const struct fib_nh_common *nhc,
 	*flags |= (nhc->nhc_flags & RTNH_F_ONLINK);
 	if (nhc->nhc_flags & RTNH_F_OFFLOAD)
 		*flags |= RTNH_F_OFFLOAD;
+	if (nhc->nhc_flags & RTNH_F_TRAP)
+		*flags |= RTNH_F_TRAP;
 
 	if (!skip_oif && nhc->nhc_dev &&
 	    nla_put_u32(skb, RTA_OIF, nhc->nhc_dev->ifindex))