Hi Paolo, Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on net-next/master] url: https://github.com/0day-ci/linux/commits/Paolo-Abeni/net-caif-avoid-using-qdisc_qlen/20190409-164620 config: x86_64-randconfig-x001-201914 (attached as .config) compiler: gcc-7 (Debian 7.3.0-1) 7.3.0 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 All warnings (new ones prefixed by >>): In file included from include/asm-generic/bug.h:5:0, from arch/x86/include/asm/bug.h:83, from include/linux/bug.h:5, from include/linux/mmdebug.h:5, from include/linux/mm.h:9, from net/socket.c:61: include/net/sch_generic.h: In function 'qdisc_all_tx_empty': include/net/sch_generic.h:743:8: error: implicit declaration of function 'qdisc_is_empty'; did you mean 'ida_is_empty'? [-Werror=implicit-function-declaration] if (!qdisc_is_empty(q)) { ^ include/linux/compiler.h:58:30: note: in definition of macro '__trace_if' if (__builtin_constant_p(!!(cond)) ? !!(cond) : \ ^~~~ >> include/net/sch_generic.h:743:3: note: in expansion of macro 'if' if (!qdisc_is_empty(q)) { ^~ In file included from include/linux/filter.h:24:0, from include/net/sock.h:64, from include/net/cls_cgroup.h:19, from net/socket.c:99: include/net/sch_generic.h: At top level: include/net/sch_generic.h:818:20: error: conflicting types for 'qdisc_is_empty' static inline bool qdisc_is_empty(const struct Qdisc *qdisc) ^~~~~~~~~~~~~~ In file included from include/asm-generic/bug.h:5:0, from arch/x86/include/asm/bug.h:83, from include/linux/bug.h:5, from include/linux/mmdebug.h:5, from include/linux/mm.h:9, from net/socket.c:61: include/net/sch_generic.h:743:8: note: previous implicit declaration of 'qdisc_is_empty' was here if (!qdisc_is_empty(q)) { ^ include/linux/compiler.h:58:30: note: in definition of macro '__trace_if' if (__builtin_constant_p(!!(cond)) ? !!(cond) : \ ^~~~ >> include/net/sch_generic.h:743:3: note: in expansion of macro 'if' if (!qdisc_is_empty(q)) { ^~ cc1: some warnings being treated as errors -- In file included from include/linux/kernel.h:11:0, from include/linux/uio.h:12, from include/linux/socket.h:8, from include/uapi/linux/in.h:24, from include/linux/in.h:23, from include/linux/dccp.h:6, from net//dccp/proto.c:12: include/net/sch_generic.h: In function 'qdisc_all_tx_empty': include/net/sch_generic.h:743:8: error: implicit declaration of function 'qdisc_is_empty'; did you mean 'ida_is_empty'? [-Werror=implicit-function-declaration] if (!qdisc_is_empty(q)) { ^ include/linux/compiler.h:58:30: note: in definition of macro '__trace_if' if (__builtin_constant_p(!!(cond)) ? !!(cond) : \ ^~~~ >> include/net/sch_generic.h:743:3: note: in expansion of macro 'if' if (!qdisc_is_empty(q)) { ^~ In file included from include/linux/filter.h:24:0, from include/net/sock.h:64, from include/net/inet_sock.h:26, from include/net/inet_connection_sock.h:24, from include/linux/dccp.h:13, from net//dccp/proto.c:12: include/net/sch_generic.h: At top level: include/net/sch_generic.h:818:20: error: conflicting types for 'qdisc_is_empty' static inline bool qdisc_is_empty(const struct Qdisc *qdisc) ^~~~~~~~~~~~~~ In file included from include/linux/kernel.h:11:0, from include/linux/uio.h:12, from include/linux/socket.h:8, from include/uapi/linux/in.h:24, from include/linux/in.h:23, from include/linux/dccp.h:6, from net//dccp/proto.c:12: include/net/sch_generic.h:743:8: note: previous implicit declaration of 'qdisc_is_empty' was here if (!qdisc_is_empty(q)) { ^ include/linux/compiler.h:58:30: note: in definition of macro '__trace_if' if (__builtin_constant_p(!!(cond)) ? !!(cond) : \ ^~~~ >> include/net/sch_generic.h:743:3: note: in expansion of macro 'if' if (!qdisc_is_empty(q)) { ^~ In file included from net//dccp/trace.h:84:0, from net//dccp/proto.c:42: include/trace/define_trace.h:89:42: fatal error: ./trace.h: No such file or directory #include TRACE_INCLUDE(TRACE_INCLUDE_FILE) ^ cc1: some warnings being treated as errors compilation terminated. vim +/if +743 include/net/sch_generic.h 5aa709954 David S. Miller 2008-07-08 732 3e745dd69 David S. Miller 2008-07-08 733 /* Are all TX queues of the device empty? */ 3e745dd69 David S. Miller 2008-07-08 734 static inline bool qdisc_all_tx_empty(const struct net_device *dev) 3e745dd69 David S. Miller 2008-07-08 735 { e8a0464cc David S. Miller 2008-07-17 736 unsigned int i; 46e5da40a John Fastabend 2014-09-12 737 46e5da40a John Fastabend 2014-09-12 738 rcu_read_lock(); e8a0464cc David S. Miller 2008-07-17 739 for (i = 0; i < dev->num_tx_queues; i++) { e8a0464cc David S. Miller 2008-07-17 740 struct netdev_queue *txq = netdev_get_tx_queue(dev, i); 46e5da40a John Fastabend 2014-09-12 741 const struct Qdisc *q = rcu_dereference(txq->qdisc); 3e745dd69 David S. Miller 2008-07-08 742 630dee66e Paolo Abeni 2019-04-08 @743 if (!qdisc_is_empty(q)) { 46e5da40a John Fastabend 2014-09-12 744 rcu_read_unlock(); e8a0464cc David S. Miller 2008-07-17 745 return false; e8a0464cc David S. Miller 2008-07-17 746 } 46e5da40a John Fastabend 2014-09-12 747 } 46e5da40a John Fastabend 2014-09-12 748 rcu_read_unlock(); e8a0464cc David S. Miller 2008-07-17 749 return true; 3e745dd69 David S. Miller 2008-07-08 750 } 3e745dd69 David S. Miller 2008-07-08 751 :::::: The code at line 743 was first introduced by commit :::::: 630dee66e06a4ec68b87f0d1a9959b54b42f8959 net: sched: prefer qdisc_is_empty() over direct qlen access :::::: TO: Paolo Abeni <pab...@redhat.com> :::::: CC: 0day robot <l...@intel.com> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
.config.gz
Description: application/gzip