Thread (4 messages) flat view 4 messages, 2 authors, 2021-10-18

Re: [PATCH v3] net: neighbour: introduce EVICT_NOCARRIER table option

From: James Prestwood <hidden>
Date: 2021-10-18 16:30:55

On Sat, 2021-10-16 at 14:12 +0300, Nikolay Aleksandrov wrote:
On 15/10/2021 23:06, James Prestwood wrote:
quoted
This adds an option to ARP/NDISC tables that clears the table on
NOCARRIER events. The default option (1) maintains existing
behavior.

Clearing the ARP cache on NOCARRIER is relatively new, introduced
by:
[snip]
quoted
Signed-off-by: James Prestwood <redacted>
---
 Documentation/networking/ip-sysctl.rst |  9 +++++++++
 include/net/neighbour.h                |  3 ++-
 include/uapi/linux/neighbour.h         |  1 +
 net/core/neighbour.c                   | 18 +++++++++++++-----
 net/ipv4/arp.c                         |  1 +
 net/ipv6/ndisc.c                       |  1 +
 6 files changed, 27 insertions(+), 6 deletions(-)
diff --git a/Documentation/networking/ip-sysctl.rst
b/Documentation/networking/ip-sysctl.rst
index 16b8bf72feaf..e2aced01905a 100644
--- a/Documentation/networking/ip-sysctl.rst
+++ b/Documentation/networking/ip-sysctl.rst
@@ -200,6 +200,15 @@ neigh/default/unres_qlen - INTEGER
 
        Default: 101
 
+neigh/default/evict_nocarrier - BOOLEAN
+       Clears the neighbor cache on NOCARRIER events. This option
is important
+       for wireless devices where the cache should not be cleared
when roaming
+       between access points on the same network. In most cases
this should
+       remain as the default (1).
+
+       - 1 - (default): Clear the neighbor cache on NOCARRIER
events
+       - 0 - Do not clear neighbor cache on NOCARRIER events
+
 mtu_expires - INTEGER
        Time, in seconds, that cached PMTU information is kept.
 
diff --git a/include/net/neighbour.h b/include/net/neighbour.h
index e8e48be66755..71b28f83c3d3 100644
--- a/include/net/neighbour.h
+++ b/include/net/neighbour.h
@@ -54,7 +54,8 @@ enum {
        NEIGH_VAR_ANYCAST_DELAY,
        NEIGH_VAR_PROXY_DELAY,
        NEIGH_VAR_LOCKTIME,
-#define NEIGH_VAR_DATA_MAX (NEIGH_VAR_LOCKTIME + 1)
+       NEIGH_VAR_EVICT_NOCARRIER,
+#define NEIGH_VAR_DATA_MAX (NEIGH_VAR_EVICT_NOCARRIER + 1)
        /* Following are used as a second way to access one of the
above */
        NEIGH_VAR_QUEUE_LEN, /* same data as
NEIGH_VAR_QUEUE_LEN_BYTES */
        NEIGH_VAR_RETRANS_TIME_MS, /* same data as
NEIGH_VAR_RETRANS_TIME */
diff --git a/include/uapi/linux/neighbour.h
b/include/uapi/linux/neighbour.h
index db05fb55055e..4322e5f42646 100644
--- a/include/uapi/linux/neighbour.h
+++ b/include/uapi/linux/neighbour.h
@@ -151,6 +151,7 @@ enum {
        NDTPA_LOCKTIME,                 /* u64, msecs */
        NDTPA_QUEUE_LENBYTES,           /* u32 */
        NDTPA_MCAST_REPROBES,           /* u32 */
+       NDTPA_EVICT_NOCARRIER,          /* u8 */
        NDTPA_PAD,
        __NDTPA_MAX
 };
I think this should be the last attribute (after PAD).
Sure.
Since this is a single patch you don't really need a cover letter,
you can add the version
changes below ---. Also your cover letter says v2 and the patch says
v3.
Ok, I'll move it into the patch itself.

Thanks,
James
Cheers,
 Nik
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help