drivers/staging/octeon/ethernet-tx.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
Use the new api DECLARE_TASKLET instead of DECLARE_TASKLET_OLD
introduced in commit 12cc923f1ccc ("tasklet: Introduce new
initialization API").
Signed-off-by: Abhishek Tamboli <abhishektamboli9@gmail.com>
---
drivers/staging/octeon/ethernet-tx.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/staging/octeon/ethernet-tx.c b/drivers/staging/octeon/ethernet-tx.c
index bbf33b88bb7c..ae1bac99b461 100644
--- a/drivers/staging/octeon/ethernet-tx.c
+++ b/drivers/staging/octeon/ethernet-tx.c
@@ -40,8 +40,8 @@
#define GET_SKBUFF_QOS(skb) 0
#endif
-static void cvm_oct_tx_do_cleanup(unsigned long arg);
-static DECLARE_TASKLET_OLD(cvm_oct_tx_cleanup_tasklet, cvm_oct_tx_do_cleanup);
+static void cvm_oct_tx_do_cleanup(struct tasklet_struct clean);
+static DECLARE_TASKLET(cvm_oct_tx_cleanup_tasklet, cvm_oct_tx_do_cleanup);
/* Maximum number of SKBs to try to free per xmit packet. */
#define MAX_SKB_TO_FREE (MAX_OUT_QUEUE_DEPTH * 2)
@@ -670,7 +670,7 @@ void cvm_oct_tx_shutdown_dev(struct net_device *dev)
}
}
-static void cvm_oct_tx_do_cleanup(unsigned long arg)
+static void cvm_oct_tx_do_cleanup(struct tasklet_struct clean)
{
int port;
--
2.34.1
Hi Abhishek,
kernel test robot noticed the following build errors:
[auto build test ERROR on staging/staging-testing]
url: https://github.com/intel-lab-lkp/linux/commits/Abhishek-Tamboli/staging-octeon-Use-new-initialization-api-for-tasklet/20240913-012448
base: staging/staging-testing
patch link: https://lore.kernel.org/r/20240912172231.369566-1-abhishektamboli9%40gmail.com
patch subject: [PATCH] staging: octeon: Use new initialization api for tasklet
config: hexagon-allmodconfig (https://download.01.org/0day-ci/archive/20240913/202409132323.MbFMwNBU-lkp@intel.com/config)
compiler: clang version 20.0.0git (https://github.com/llvm/llvm-project bf684034844c660b778f0eba103582f582b710c9)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240913/202409132323.MbFMwNBU-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202409132323.MbFMwNBU-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from drivers/staging/octeon/ethernet-tx.c:10:
In file included from include/linux/netdevice.h:38:
In file included from include/net/net_namespace.h:43:
In file included from include/linux/skbuff.h:17:
In file included from include/linux/bvec.h:10:
In file included from include/linux/highmem.h:10:
In file included from include/linux/mm.h:2228:
include/linux/vmstat.h:514:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
514 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
| ~~~~~~~~~~~ ^ ~~~
In file included from drivers/staging/octeon/ethernet-tx.c:10:
In file included from include/linux/netdevice.h:38:
In file included from include/net/net_namespace.h:43:
In file included from include/linux/skbuff.h:17:
In file included from include/linux/bvec.h:10:
In file included from include/linux/highmem.h:12:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:14:
In file included from arch/hexagon/include/asm/io.h:328:
include/asm-generic/io.h:548:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
548 | val = __raw_readb(PCI_IOBASE + addr);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:561:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
561 | val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr));
| ~~~~~~~~~~ ^
include/uapi/linux/byteorder/little_endian.h:37:51: note: expanded from macro '__le16_to_cpu'
37 | #define __le16_to_cpu(x) ((__force __u16)(__le16)(x))
| ^
In file included from drivers/staging/octeon/ethernet-tx.c:10:
In file included from include/linux/netdevice.h:38:
In file included from include/net/net_namespace.h:43:
In file included from include/linux/skbuff.h:17:
In file included from include/linux/bvec.h:10:
In file included from include/linux/highmem.h:12:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:14:
In file included from arch/hexagon/include/asm/io.h:328:
include/asm-generic/io.h:574:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
574 | val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
| ~~~~~~~~~~ ^
include/uapi/linux/byteorder/little_endian.h:35:51: note: expanded from macro '__le32_to_cpu'
35 | #define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
| ^
In file included from drivers/staging/octeon/ethernet-tx.c:10:
In file included from include/linux/netdevice.h:38:
In file included from include/net/net_namespace.h:43:
In file included from include/linux/skbuff.h:17:
In file included from include/linux/bvec.h:10:
In file included from include/linux/highmem.h:12:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:14:
In file included from arch/hexagon/include/asm/io.h:328:
include/asm-generic/io.h:585:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
585 | __raw_writeb(value, PCI_IOBASE + addr);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:595:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
595 | __raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:605:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
605 | __raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
| ~~~~~~~~~~ ^
>> drivers/staging/octeon/ethernet-tx.c:44:52: error: incompatible function pointer types initializing 'void (*)(struct tasklet_struct *)' with an expression of type 'void (struct tasklet_struct)' [-Wincompatible-function-pointer-types]
44 | static DECLARE_TASKLET(cvm_oct_tx_cleanup_tasklet, cvm_oct_tx_do_cleanup);
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/interrupt.h:665:14: note: expanded from macro 'DECLARE_TASKLET'
665 | .callback = _callback, \
| ^~~~~~~~~
7 warnings and 1 error generated.
vim +44 drivers/staging/octeon/ethernet-tx.c
42
43 static void cvm_oct_tx_do_cleanup(struct tasklet_struct clean);
> 44 static DECLARE_TASKLET(cvm_oct_tx_cleanup_tasklet, cvm_oct_tx_do_cleanup);
45
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Hi Abhishek,
kernel test robot noticed the following build errors:
[auto build test ERROR on staging/staging-testing]
url: https://github.com/intel-lab-lkp/linux/commits/Abhishek-Tamboli/staging-octeon-Use-new-initialization-api-for-tasklet/20240913-012448
base: staging/staging-testing
patch link: https://lore.kernel.org/r/20240912172231.369566-1-abhishektamboli9%40gmail.com
patch subject: [PATCH] staging: octeon: Use new initialization api for tasklet
config: m68k-allmodconfig (https://download.01.org/0day-ci/archive/20240913/202409132123.Kfncs3AN-lkp@intel.com/config)
compiler: m68k-linux-gcc (GCC) 14.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240913/202409132123.Kfncs3AN-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202409132123.Kfncs3AN-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from include/linux/kernel_stat.h:8,
from include/linux/cgroup.h:25,
from include/net/netprio_cgroup.h:11,
from include/linux/netdevice.h:42,
from drivers/staging/octeon/ethernet-tx.c:10:
>> drivers/staging/octeon/ethernet-tx.c:44:52: error: initialization of 'void (*)(struct tasklet_struct *)' from incompatible pointer type 'void (*)(struct tasklet_struct)' [-Wincompatible-pointer-types]
44 | static DECLARE_TASKLET(cvm_oct_tx_cleanup_tasklet, cvm_oct_tx_do_cleanup);
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/interrupt.h:665:21: note: in definition of macro 'DECLARE_TASKLET'
665 | .callback = _callback, \
| ^~~~~~~~~
drivers/staging/octeon/ethernet-tx.c:44:52: note: (near initialization for 'cvm_oct_tx_cleanup_tasklet.<anonymous>.callback')
44 | static DECLARE_TASKLET(cvm_oct_tx_cleanup_tasklet, cvm_oct_tx_do_cleanup);
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/interrupt.h:665:21: note: in definition of macro 'DECLARE_TASKLET'
665 | .callback = _callback, \
| ^~~~~~~~~
vim +44 drivers/staging/octeon/ethernet-tx.c
> 10 #include <linux/netdevice.h>
11 #include <linux/etherdevice.h>
12 #include <linux/ip.h>
13 #include <linux/ratelimit.h>
14 #include <linux/string.h>
15 #include <linux/interrupt.h>
16 #include <net/dst.h>
17 #ifdef CONFIG_XFRM
18 #include <linux/xfrm.h>
19 #include <net/xfrm.h>
20 #endif /* CONFIG_XFRM */
21
22 #include <linux/atomic.h>
23 #include <net/sch_generic.h>
24
25 #include "octeon-ethernet.h"
26 #include "ethernet-defines.h"
27 #include "ethernet-tx.h"
28 #include "ethernet-util.h"
29
30 #define CVM_OCT_SKB_CB(skb) ((u64 *)((skb)->cb))
31
32 /*
33 * You can define GET_SKBUFF_QOS() to override how the skbuff output
34 * function determines which output queue is used. The default
35 * implementation always uses the base queue for the port. If, for
36 * example, you wanted to use the skb->priority field, define
37 * GET_SKBUFF_QOS as: #define GET_SKBUFF_QOS(skb) ((skb)->priority)
38 */
39 #ifndef GET_SKBUFF_QOS
40 #define GET_SKBUFF_QOS(skb) 0
41 #endif
42
43 static void cvm_oct_tx_do_cleanup(struct tasklet_struct clean);
> 44 static DECLARE_TASKLET(cvm_oct_tx_cleanup_tasklet, cvm_oct_tx_do_cleanup);
45
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Hi Abhishek,
On 12 Sep 24 22:52, Abhishek Tamboli wrote:
> Use the new api DECLARE_TASKLET instead of DECLARE_TASKLET_OLD
> introduced in commit 12cc923f1ccc ("tasklet: Introduce new
> initialization API").
>
> Signed-off-by: Abhishek Tamboli <abhishektamboli9@gmail.com>
> ---
> drivers/staging/octeon/ethernet-tx.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/staging/octeon/ethernet-tx.c b/drivers/staging/octeon/ethernet-tx.c
> index bbf33b88bb7c..ae1bac99b461 100644
> --- a/drivers/staging/octeon/ethernet-tx.c
> +++ b/drivers/staging/octeon/ethernet-tx.c
> @@ -40,8 +40,8 @@
> #define GET_SKBUFF_QOS(skb) 0
> #endif
>
> -static void cvm_oct_tx_do_cleanup(unsigned long arg);
> -static DECLARE_TASKLET_OLD(cvm_oct_tx_cleanup_tasklet, cvm_oct_tx_do_cleanup);
> +static void cvm_oct_tx_do_cleanup(struct tasklet_struct clean);
> +static DECLARE_TASKLET(cvm_oct_tx_cleanup_tasklet, cvm_oct_tx_do_cleanup);
This fails to compile for me:
In file included from ./include/linux/kernel_stat.h:8,
from ./include/linux/cgroup.h:25,
from ./include/net/netprio_cgroup.h:11,
from ./include/linux/netdevice.h:42,
from drivers/staging/octeon/ethernet-tx.c:10:
drivers/staging/octeon/ethernet-tx.c:44:52: error: initialization of ‘void (*)(struct tasklet_struct *)’ from incompatible pointer type ‘void (*)(struct tasklet_struct)’ [-Wincompatible-pointer-types]
44 | static DECLARE_TASKLET(cvm_oct_tx_cleanup_tasklet, cvm_oct_tx_do_cleanup);
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/interrupt.h:665:21: note: in definition of macro ‘DECLARE_TASKLET’
665 | .callback = _callback, \
| ^~~~~~~~~
drivers/staging/octeon/ethernet-tx.c:44:52: note: (near initialization for ‘cvm_oct_tx_cleanup_tasklet.<anonymous>.callback’)
44 | static DECLARE_TASKLET(cvm_oct_tx_cleanup_tasklet, cvm_oct_tx_do_cleanup);
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/interrupt.h:665:21: note: in definition of macro ‘DECLARE_TASKLET’
665 | .callback = _callback, \
| ^~~~~~~~~
CC mm/memfd.o
CC fs/proc/fd.o
CC fs/jbd2/transaction.o
CC drivers/firmware/efi/libstub/gop.o
make[5]: *** [scripts/Makefile.build:244: drivers/staging/octeon/ethernet-tx.o] Error 1
make[4]: *** [scripts/Makefile.build:485: drivers/staging/octeon] Error 2
make[3]: *** [scripts/Makefile.build:485: drivers/staging] Error 2
>
> /* Maximum number of SKBs to try to free per xmit packet. */
> #define MAX_SKB_TO_FREE (MAX_OUT_QUEUE_DEPTH * 2)
> @@ -670,7 +670,7 @@ void cvm_oct_tx_shutdown_dev(struct net_device *dev)
> }
> }
>
> -static void cvm_oct_tx_do_cleanup(unsigned long arg)
> +static void cvm_oct_tx_do_cleanup(struct tasklet_struct clean)
> {
> int port;
>
> --
> 2.34.1
>
Hi Ricardo, > > This fails to compile for me: > > In file included from ./include/linux/kernel_stat.h:8, > from ./include/linux/cgroup.h:25, > from ./include/net/netprio_cgroup.h:11, > from ./include/linux/netdevice.h:42, > from drivers/staging/octeon/ethernet-tx.c:10: > drivers/staging/octeon/ethernet-tx.c:44:52: error: initialization of ‘void (*)(struct tasklet_struct *)’ from incompatible pointer type ‘void (*)(struct tasklet_struct)’ [-Wincompatible-pointer-types] > 44 | static DECLARE_TASKLET(cvm_oct_tx_cleanup_tasklet, cvm_oct_tx_do_cleanup); > | ^~~~~~~~~~~~~~~~~~~~~ > ./include/linux/interrupt.h:665:21: note: in definition of macro ‘DECLARE_TASKLET’ > 665 | .callback = _callback, \ > | ^~~~~~~~~ > drivers/staging/octeon/ethernet-tx.c:44:52: note: (near initialization for ‘cvm_oct_tx_cleanup_tasklet.<anonymous>.callback’) > 44 | static DECLARE_TASKLET(cvm_oct_tx_cleanup_tasklet, cvm_oct_tx_do_cleanup); > | ^~~~~~~~~~~~~~~~~~~~~ > ./include/linux/interrupt.h:665:21: note: in definition of macro ‘DECLARE_TASKLET’ > 665 | .callback = _callback, \ > | ^~~~~~~~~ > CC mm/memfd.o > CC fs/proc/fd.o > CC fs/jbd2/transaction.o > CC drivers/firmware/efi/libstub/gop.o > make[5]: *** [scripts/Makefile.build:244: drivers/staging/octeon/ethernet-tx.o] Error 1 > make[4]: *** [scripts/Makefile.build:485: drivers/staging/octeon] Error 2 > make[3]: *** [scripts/Makefile.build:485: drivers/staging] Error 2 Thank you for pointing out the issue. I’ll be more cautious to avoid such issues in the future and will resubmit the patch. Regards, Abhishek
© 2016 - 2026 Red Hat, Inc.