diff mbox series

net: hsr: Setup and delete proxy prune timer only when RedBox is enabled

Message ID 20240514091306.229444-1-lukma@denx.de (mailing list archive)
State Rejected
Delegated to: Netdev Maintainers
Headers show
Series net: hsr: Setup and delete proxy prune timer only when RedBox is enabled | expand

Checks

Context Check Description
netdev/series_format warning Single patches do not need cover letters; Target tree name not specified in the subject
netdev/tree_selection success Guessed tree name to be net-next
netdev/ynl success Generated files up to date; no warnings/errors; no diff in generated;
netdev/fixes_present success Fixes tag not required for -next series
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 925 this patch: 925
netdev/build_tools success No tools touched, skip
netdev/cc_maintainers success CCed 7 of 7 maintainers
netdev/build_clang success Errors and warnings before: 936 this patch: 936
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/deprecated_api success None detected
netdev/check_selftest success No net selftest shell script
netdev/verify_fixes success No Fixes tag
netdev/build_allmodconfig_warn success Errors and warnings before: 936 this patch: 936
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 24 lines checked
netdev/build_clang_rust success No Rust files in patch. Skipping build
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0
netdev/contest success net-next-2024-05-17--00-00 (tests: 1034)

Commit Message

Lukasz Majewski May 14, 2024, 9:13 a.m. UTC
The timer for removing entries in the ProxyNodeTable shall be only active
when the HSR driver works as RedBox (HSR-SAN).

Moreover, the obsolete del_timer_sync() is replaced with
timer_delete_sync().

This patch improves fix from commit 3c668cef61ad
("net: hsr: init prune_proxy_timer sooner") as the prune node
timer shall be setup only when HSR RedBox is supported in the node.

Signed-off-by: Lukasz Majewski <lukma@denx.de>
---
 net/hsr/hsr_device.c  | 2 +-
 net/hsr/hsr_netlink.c | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

Comments

Sebastian Andrzej Siewior May 15, 2024, 6:41 a.m. UTC | #1
On 2024-05-14 11:13:06 [+0200], Lukasz Majewski wrote:
> The timer for removing entries in the ProxyNodeTable shall be only active
> when the HSR driver works as RedBox (HSR-SAN).
> 
> Moreover, the obsolete del_timer_sync() is replaced with
> timer_delete_sync().
> 
> This patch improves fix from commit 3c668cef61ad
> ("net: hsr: init prune_proxy_timer sooner") as the prune node
> timer shall be setup only when HSR RedBox is supported in the node.

Is it problematic to init/ delete the timer in non-redbox mode? It looks
easier and it is not a hotpath.

> Signed-off-by: Lukasz Majewski <lukma@denx.de>

Sebastian
Lukasz Majewski May 15, 2024, 7:09 a.m. UTC | #2
Hi Sebastian,

> On 2024-05-14 11:13:06 [+0200], Lukasz Majewski wrote:
> > The timer for removing entries in the ProxyNodeTable shall be only
> > active when the HSR driver works as RedBox (HSR-SAN).
> > 
> > Moreover, the obsolete del_timer_sync() is replaced with
> > timer_delete_sync().
> > 
> > This patch improves fix from commit 3c668cef61ad
> > ("net: hsr: init prune_proxy_timer sooner") as the prune node
> > timer shall be setup only when HSR RedBox is supported in the node.
> >  
> 
> Is it problematic to init/ delete the timer in non-redbox mode? It
> looks easier and it is not a hotpath.

My concern is only with resource allocation - when RedBox is not
enabled the resources for this particular, not used timer are allocated
anyway.

If this can be omitted - then we can drop the patch.

> 
> > Signed-off-by: Lukasz Majewski <lukma@denx.de>  
> 
> Sebastian




Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH,      Managing Director: Erika Unter
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de
Sebastian Andrzej Siewior May 15, 2024, 7:14 a.m. UTC | #3
On 2024-05-15 09:09:04 [+0200], Lukasz Majewski wrote:
> Hi Sebastian,
Hi Lukasz,

> My concern is only with resource allocation - when RedBox is not
> enabled the resources for this particular, not used timer are allocated
> anyway.

timer_setup() does not allocate any resources. The initialisation is
pure static assignment. The timer subsystem does not look at this timer
until mod_timer() is invoked (or something similar).

> If this can be omitted - then we can drop the patch.
> 
> Best regards,
> 
> Lukasz Majewski

Sebastian
Lukasz Majewski May 15, 2024, 7:50 a.m. UTC | #4
Hi Sebastian,

> On 2024-05-15 09:09:04 [+0200], Lukasz Majewski wrote:
> > Hi Sebastian,  
> Hi Lukasz,
> 
> > My concern is only with resource allocation - when RedBox is not
> > enabled the resources for this particular, not used timer are
> > allocated anyway.  
> 
> timer_setup() does not allocate any resources. The initialisation is
> pure static assignment. The timer subsystem does not look at this
> timer until mod_timer() is invoked (or something similar).

Thanks for the clarification.

Considering the above - please just drop this patch.

> 
> > If this can be omitted - then we can drop the patch.
> > 
> > Best regards,
> > 
> > Lukasz Majewski  
> 
> Sebastian




Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH,      Managing Director: Erika Unter
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de
diff mbox series

Patch

diff --git a/net/hsr/hsr_device.c b/net/hsr/hsr_device.c
index e6904288d40d..d234e4134a9d 100644
--- a/net/hsr/hsr_device.c
+++ b/net/hsr/hsr_device.c
@@ -589,7 +589,6 @@  int hsr_dev_finalize(struct net_device *hsr_dev, struct net_device *slave[2],
 
 	timer_setup(&hsr->announce_timer, hsr_announce, 0);
 	timer_setup(&hsr->prune_timer, hsr_prune_nodes, 0);
-	timer_setup(&hsr->prune_proxy_timer, hsr_prune_proxy_nodes, 0);
 
 	ether_addr_copy(hsr->sup_multicast_addr, def_multicast_addr);
 	hsr->sup_multicast_addr[ETH_ALEN - 1] = multicast_spec;
@@ -629,6 +628,7 @@  int hsr_dev_finalize(struct net_device *hsr_dev, struct net_device *slave[2],
 
 		hsr->redbox = true;
 		ether_addr_copy(hsr->macaddress_redbox, interlink->dev_addr);
+		timer_setup(&hsr->prune_proxy_timer, hsr_prune_proxy_nodes, 0);
 		mod_timer(&hsr->prune_proxy_timer,
 			  jiffies + msecs_to_jiffies(PRUNE_PROXY_PERIOD));
 	}
diff --git a/net/hsr/hsr_netlink.c b/net/hsr/hsr_netlink.c
index 898f18c6da53..c1bd1e6eb955 100644
--- a/net/hsr/hsr_netlink.c
+++ b/net/hsr/hsr_netlink.c
@@ -129,8 +129,9 @@  static void hsr_dellink(struct net_device *dev, struct list_head *head)
 	struct hsr_priv *hsr = netdev_priv(dev);
 
 	del_timer_sync(&hsr->prune_timer);
-	del_timer_sync(&hsr->prune_proxy_timer);
 	del_timer_sync(&hsr->announce_timer);
+	if (hsr->redbox)
+		timer_delete_sync(&hsr->prune_proxy_timer);
 
 	hsr_debugfs_term(hsr);
 	hsr_del_ports(hsr);