[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <202303250154.HsaEs3hh-lkp@intel.com>
Date: Sat, 25 Mar 2023 01:16:43 +0800
From: kernel test robot <lkp@...el.com>
To: edward.cree@....com, linux-net-drivers@....com,
davem@...emloft.net, kuba@...nel.org, pabeni@...hat.com,
edumazet@...gle.com
Cc: llvm@...ts.linux.dev, oe-kbuild-all@...ts.linux.dev,
Edward Cree <ecree.xilinx@...il.com>, netdev@...r.kernel.org,
habetsm.xilinx@...il.com, michal.swiatkowski@...ux.intel.com
Subject: Re: [PATCH net-next v2 5/6] sfc: add code to register and unregister
encap matches
Hi,
I love your patch! Perhaps something to improve:
[auto build test WARNING on net-next/main]
url: https://github.com/intel-lab-lkp/linux/commits/edward-cree-amd-com/sfc-document-TC-to-EF100-MAE-action-translation-concepts/20230324-044845
patch link: https://lore.kernel.org/r/57c4e599df3fff7bf678c1813445bd6016c6db79.1679603051.git.ecree.xilinx%40gmail.com
patch subject: [PATCH net-next v2 5/6] sfc: add code to register and unregister encap matches
config: arm-randconfig-r025-20230322 (https://download.01.org/0day-ci/archive/20230325/202303250154.HsaEs3hh-lkp@intel.com/config)
compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project 67409911353323ca5edf2049ef0df54132fa1ca7)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install arm cross compiling tool for clang build
# apt-get install binutils-arm-linux-gnueabi
# https://github.com/intel-lab-lkp/linux/commit/48db650a79ec4f4091360a2c1363d1cac6235707
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review edward-cree-amd-com/sfc-document-TC-to-EF100-MAE-action-translation-concepts/20230324-044845
git checkout 48db650a79ec4f4091360a2c1363d1cac6235707
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash drivers/net/ethernet/sfc/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@...el.com>
| Link: https://lore.kernel.org/oe-kbuild-all/202303250154.HsaEs3hh-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/net/ethernet/sfc/tc.c:414:43: warning: variable 'ipv6' is uninitialized when used here [-Wuninitialized]
rc = efx_mae_check_encap_match_caps(efx, ipv6, extack);
^~~~
drivers/net/ethernet/sfc/tc.c:356:11: note: initialize the variable 'ipv6' to silence this warning
bool ipv6;
^
= 0
1 warning generated.
vim +/ipv6 +414 drivers/net/ethernet/sfc/tc.c
348
349 __always_unused
350 static int efx_tc_flower_record_encap_match(struct efx_nic *efx,
351 struct efx_tc_match *match,
352 enum efx_encap_type type,
353 struct netlink_ext_ack *extack)
354 {
355 struct efx_tc_encap_match *encap, *old;
356 bool ipv6;
357 int rc;
358
359 /* We require that the socket-defining fields (IP addrs and UDP dest
360 * port) are present and exact-match. Other fields are currently not
361 * allowed. This meets what OVS will ask for, and means that we don't
362 * need to handle difficult checks for overlapping matches as could
363 * come up if we allowed masks or varying sets of match fields.
364 */
365 if (match->mask.enc_dst_ip | match->mask.enc_src_ip) {
366 if (!IS_ALL_ONES(match->mask.enc_dst_ip)) {
367 NL_SET_ERR_MSG_MOD(extack,
368 "Egress encap match is not exact on dst IP address");
369 return -EOPNOTSUPP;
370 }
371 if (!IS_ALL_ONES(match->mask.enc_src_ip)) {
372 NL_SET_ERR_MSG_MOD(extack,
373 "Egress encap match is not exact on src IP address");
374 return -EOPNOTSUPP;
375 }
376 #ifdef CONFIG_IPV6
377 if (!ipv6_addr_any(&match->mask.enc_dst_ip6) ||
378 !ipv6_addr_any(&match->mask.enc_src_ip6)) {
379 NL_SET_ERR_MSG_MOD(extack,
380 "Egress encap match on both IPv4 and IPv6, don't understand");
381 return -EOPNOTSUPP;
382 }
383 } else {
384 ipv6 = true;
385 if (!efx_ipv6_addr_all_ones(&match->mask.enc_dst_ip6)) {
386 NL_SET_ERR_MSG_MOD(extack,
387 "Egress encap match is not exact on dst IP address");
388 return -EOPNOTSUPP;
389 }
390 if (!efx_ipv6_addr_all_ones(&match->mask.enc_src_ip6)) {
391 NL_SET_ERR_MSG_MOD(extack,
392 "Egress encap match is not exact on src IP address");
393 return -EOPNOTSUPP;
394 }
395 #endif
396 }
397 if (!IS_ALL_ONES(match->mask.enc_dport)) {
398 NL_SET_ERR_MSG_MOD(extack, "Egress encap match is not exact on dst UDP port");
399 return -EOPNOTSUPP;
400 }
401 if (match->mask.enc_sport) {
402 NL_SET_ERR_MSG_MOD(extack, "Egress encap match on src UDP port not supported");
403 return -EOPNOTSUPP;
404 }
405 if (match->mask.enc_ip_tos) {
406 NL_SET_ERR_MSG_MOD(extack, "Egress encap match on IP ToS not supported");
407 return -EOPNOTSUPP;
408 }
409 if (match->mask.enc_ip_ttl) {
410 NL_SET_ERR_MSG_MOD(extack, "Egress encap match on IP TTL not supported");
411 return -EOPNOTSUPP;
412 }
413
> 414 rc = efx_mae_check_encap_match_caps(efx, ipv6, extack);
415 if (rc) {
416 NL_SET_ERR_MSG_FMT_MOD(extack, "MAE hw reports no support for IPv%d encap matches",
417 ipv6 ? 6 : 4);
418 return -EOPNOTSUPP;
419 }
420
421 encap = kzalloc(sizeof(*encap), GFP_USER);
422 if (!encap)
423 return -ENOMEM;
424 encap->src_ip = match->value.enc_src_ip;
425 encap->dst_ip = match->value.enc_dst_ip;
426 #ifdef CONFIG_IPV6
427 encap->src_ip6 = match->value.enc_src_ip6;
428 encap->dst_ip6 = match->value.enc_dst_ip6;
429 #endif
430 encap->udp_dport = match->value.enc_dport;
431 encap->tun_type = type;
432 old = rhashtable_lookup_get_insert_fast(&efx->tc->encap_match_ht,
433 &encap->linkage,
434 efx_tc_encap_match_ht_params);
435 if (old) {
436 /* don't need our new entry */
437 kfree(encap);
438 if (old->tun_type != type) {
439 NL_SET_ERR_MSG_FMT_MOD(extack,
440 "Egress encap match with conflicting tun_type %u != %u",
441 old->tun_type, type);
442 return -EEXIST;
443 }
444 if (!refcount_inc_not_zero(&old->ref))
445 return -EAGAIN;
446 /* existing entry found */
447 encap = old;
448 } else {
449 rc = efx_mae_register_encap_match(efx, encap);
450 if (rc) {
451 NL_SET_ERR_MSG_MOD(extack, "Failed to record egress encap match in HW");
452 goto fail;
453 }
454 refcount_set(&encap->ref, 1);
455 }
456 match->encap = encap;
457 return 0;
458 fail:
459 rhashtable_remove_fast(&efx->tc->encap_match_ht, &encap->linkage,
460 efx_tc_encap_match_ht_params);
461 kfree(encap);
462 return rc;
463 }
464
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests
Powered by blists - more mailing lists