Hi Xiaoliang, [FYI, it's a private test report for your RFC patch.] [auto build test ERROR on net-next/master] url: https://github.com/0day-ci/linux/commits/Xiaoliang-Yang/net-dsa-felix-frame-preemption-support/20201020-121555 base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 105faa8742437c28815b2a3eb8314ebc5fd9288c config: x86_64-allyesconfig (attached as .config) compiler: gcc-9 (Debian 9.3.0-15) 9.3.0 reproduce (this is a W=1 build): # https://github.com/0day-ci/linux/commit/2841111365cae71822d7e9164bf71b651ca6bed2 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Xiaoliang-Yang/net-dsa-felix-frame-preemption-support/20201020-121555 git checkout 2841111365cae71822d7e9164bf71b651ca6bed2 # save the attached .config to linux build tree make W=1 ARCH=x86_64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All error/warnings (new ones prefixed by >>): In file included from include/soc/mscc/ocelot.h:12, from include/soc/mscc/ocelot_vcap.h:9, from drivers/net/dsa/ocelot/felix_vsc9959.c:7: include/net/dsa.h:506:18: warning: 'struct ethtool_fp' declared inside parameter list will not be visible outside of this definition or declaration 506 | struct ethtool_fp *fpcmd); | ^~~~~~~~~~ include/net/dsa.h:512:18: warning: 'struct ethtool_fp' declared inside parameter list will not be visible outside of this definition or declaration 512 | struct ethtool_fp *fpcmd); | ^~~~~~~~~~ In file included from drivers/net/dsa/ocelot/felix_vsc9959.c:18: drivers/net/dsa/ocelot/felix.h:41:16: warning: 'struct ethtool_fp' declared inside parameter list will not be visible outside of this definition or declaration 41 | struct ethtool_fp *fpcmd); | ^~~~~~~~~~ drivers/net/dsa/ocelot/felix.h:43:16: warning: 'struct ethtool_fp' declared inside parameter list will not be visible outside of this definition or declaration 43 | struct ethtool_fp *fpcmd); | ^~~~~~~~~~ >> drivers/net/dsa/ocelot/felix_vsc9959.c:1314:19: warning: 'struct tc_preempt_qopt_offload' declared inside parameter list will not be visible outside of this definition or declaration 1314 | struct tc_preempt_qopt_offload *qopt) | ^~~~~~~~~~~~~~~~~~~~~~~ drivers/net/dsa/ocelot/felix_vsc9959.c: In function 'vsc9959_port_preempt_queues': >> drivers/net/dsa/ocelot/felix_vsc9959.c:1316:20: error: dereferencing pointer to incomplete type 'struct tc_preempt_qopt_offload' 1316 | u8 p_queues = qopt->preemptible_queues; | ^~ drivers/net/dsa/ocelot/felix_vsc9959.c: In function 'vsc9959_port_setup_tc': >> drivers/net/dsa/ocelot/felix_vsc9959.c:1338:7: error: 'TC_SETUP_PREEMPT' undeclared (first use in this function); did you mean 'TC_SETUP_FT'? 1338 | case TC_SETUP_PREEMPT: | ^~~~~~~~~~~~~~~~ | TC_SETUP_FT drivers/net/dsa/ocelot/felix_vsc9959.c:1338:7: note: each undeclared identifier is reported only once for each function it appears in drivers/net/dsa/ocelot/felix_vsc9959.c: At top level: drivers/net/dsa/ocelot/felix_vsc9959.c:1346:16: warning: 'struct ethtool_fp' declared inside parameter list will not be visible outside of this definition or declaration 1346 | struct ethtool_fp *fpcmd) | ^~~~~~~~~~ drivers/net/dsa/ocelot/felix_vsc9959.c: In function 'vsc9959_port_set_preempt': drivers/net/dsa/ocelot/felix_vsc9959.c:1349:25: error: dereferencing pointer to incomplete type 'struct ethtool_fp' 1349 | int mm_fragsize = fpcmd->min_frag_size_mult; | ^~ drivers/net/dsa/ocelot/felix_vsc9959.c: At top level: drivers/net/dsa/ocelot/felix_vsc9959.c:1372:16: warning: 'struct ethtool_fp' declared inside parameter list will not be visible outside of this definition or declaration 1372 | struct ethtool_fp *fpcmd) | ^~~~~~~~~~ drivers/net/dsa/ocelot/felix_vsc9959.c: In function 'vsc9959_port_get_preempt': drivers/net/dsa/ocelot/felix_vsc9959.c:1379:7: error: dereferencing pointer to incomplete type 'struct ethtool_fp' 1379 | fpcmd->enabled = (val ? 0 : 1); | ^~ drivers/net/dsa/ocelot/felix_vsc9959.c: At top level: drivers/net/dsa/ocelot/felix_vsc9959.c:1435:22: error: initialization of 'int (*)(struct ocelot *, int, struct ethtool_fp *)' from incompatible pointer type 'int (*)(struct ocelot *, int, struct ethtool_fp *)' [-Werror=incompatible-pointer-types] 1435 | .port_set_preempt = vsc9959_port_set_preempt, | ^~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/dsa/ocelot/felix_vsc9959.c:1435:22: note: (near initialization for 'felix_info_vsc9959.port_set_preempt') drivers/net/dsa/ocelot/felix_vsc9959.c:1436:22: error: initialization of 'int (*)(struct ocelot *, int, struct ethtool_fp *)' from incompatible pointer type 'int (*)(struct ocelot *, int, struct ethtool_fp *)' [-Werror=incompatible-pointer-types] 1436 | .port_get_preempt = vsc9959_port_get_preempt, | ^~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/dsa/ocelot/felix_vsc9959.c:1436:22: note: (near initialization for 'felix_info_vsc9959.port_get_preempt') cc1: some warnings being treated as errors vim +1316 drivers/net/dsa/ocelot/felix_vsc9959.c 1312 1313 static int vsc9959_port_preempt_queues(struct ocelot *ocelot, int port, > 1314 struct tc_preempt_qopt_offload *qopt) 1315 { > 1316 u8 p_queues = qopt->preemptible_queues; 1317 1318 ocelot_rmw_rix(ocelot, 1319 QSYS_PREEMPTION_CFG_P_QUEUES(p_queues), 1320 QSYS_PREEMPTION_CFG_P_QUEUES_M, 1321 QSYS_PREEMPTION_CFG, 1322 port); 1323 1324 return 0; 1325 } 1326 1327 static int vsc9959_port_setup_tc(struct dsa_switch *ds, int port, 1328 enum tc_setup_type type, 1329 void *type_data) 1330 { 1331 struct ocelot *ocelot = ds->priv; 1332 1333 switch (type) { 1334 case TC_SETUP_QDISC_TAPRIO: 1335 return vsc9959_qos_port_tas_set(ocelot, port, type_data); 1336 case TC_SETUP_QDISC_CBS: 1337 return vsc9959_qos_port_cbs_set(ds, port, type_data); > 1338 case TC_SETUP_PREEMPT: 1339 return vsc9959_port_preempt_queues(ocelot, port, type_data); 1340 default: 1341 return -EOPNOTSUPP; 1342 } 1343 } 1344 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org