Skip to content

DECnet on newer kernels #16

@majenkotech

Description

@majenkotech

Some of the timer functions in the kernel have had their names changed. I have managed to get DECnet working in 6.17.9 (on Arch, btw) by changing:

  • timer_from() to timer_container_of()
  • del_timer() to timer_delete()

Thus:

diff --git a/kernel/dnet_dev.c b/kernel/dnet_dev.c
index 86fff87..7cc8e02 100644
--- a/kernel/dnet_dev.c
+++ b/kernel/dnet_dev.c
@@ -49,7 +49,7 @@ void dn_dev_timer(
   struct timer_list *t
 )
 {
-        struct dn_device *device = from_timer(device, t, timer);
+        struct dn_device *device = timer_container_of(device, t, timer);
 
         /*
          * If we have been asked to unregister this device, shut down the
diff --git a/kernel/dnet_next.c b/kernel/dnet_next.c
index 180a707..f46fa08 100644
--- a/kernel/dnet_next.c
+++ b/kernel/dnet_next.c
@@ -564,7 +564,7 @@ int __init dn_next_init(void)
 
 void __exit dn_next_cleanup(void)
 {
-        del_timer(&dn_next_timer);
+        timer_delete(&dn_next_timer);
         refcount_dec(&loop->refcount);
         dn_next_scan(1);
 
diff --git a/kernel/dnet_node.c b/kernel/dnet_node.c
index 589aa20..1f6693e 100644
--- a/kernel/dnet_node.c
...skipping...
diff --git a/kernel/dnet_dev.c b/kernel/dnet_dev.c
index 86fff87..7cc8e02 100644
--- a/kernel/dnet_dev.c
+++ b/kernel/dnet_dev.c
@@ -49,7 +49,7 @@ void dn_dev_timer(
   struct timer_list *t
 )
 {
-        struct dn_device *device = from_timer(device, t, timer);
+        struct dn_device *device = timer_container_of(device, t, timer);
 
         /*
          * If we have been asked to unregister this device, shut down the
diff --git a/kernel/dnet_next.c b/kernel/dnet_next.c
index 180a707..f46fa08 100644
--- a/kernel/dnet_next.c
+++ b/kernel/dnet_next.c
@@ -564,7 +564,7 @@ int __init dn_next_init(void)
 
 void __exit dn_next_cleanup(void)
 {
-        del_timer(&dn_next_timer);
+        timer_delete(&dn_next_timer);
         refcount_dec(&loop->refcount);
         dn_next_scan(1);
 
diff --git a/kernel/dnet_node.c b/kernel/dnet_node.c
index 589aa20..1f6693e 100644
--- a/kernel/dnet_node.c
+++ b/kernel/dnet_node.c
@@ -359,7 +359,7 @@ int __init dn_node_init(void)
 
 void __exit dn_node_cleanup(void)
 {
-        del_timer(&dn_node_timer);
+        timer_delete(&dn_node_timer);
 
         /*** Flush node db entries ***/
 #ifdef CONFIG_PROC_FS
diff --git a/kernel/dnet_timr.c b/kernel/dnet_timr.c
index 8f2beba..883db47 100644
--- a/kernel/dnet_timr.c
+++ b/kernel/dnet_timr.c
@@ -26,7 +26,7 @@ static void dn_slow_timer(
   struct timer_list *t
 )
 {
-        struct sock *sk = from_timer(sk, t, sk_timer);
+        struct sock *sk = timer_container_of(sk, t, sk_timer);
         struct dn_scp *scp = DN_SK(sk);
 
         bh_lock_sock(sk);

Of course this will need some version-checking magic to decide which function names to use.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions