CC: [email protected] CC: [email protected] CC: Intel Wired LAN <[email protected]> CC: [email protected] TO: Kiran Patil <[email protected]> CC: Tony Nguyen <[email protected]> CC: Amritha Nambiar <[email protected]> CC: Sudheer Mogilappagari <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue.git 10GbE head: bece72b74c2352f70a0ee501a3e7b05d92a82e41 commit: bece72b74c2352f70a0ee501a3e7b05d92a82e41 [12/12] ice: Add tc-flower filter support for channel :::::: branch date: 2 days ago :::::: commit date: 2 days ago config: x86_64-randconfig-c007-20211017 (attached as .config) compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 746dd6a700931988dd9021d3d04718f1929885a5) 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 # https://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue.git/commit/?id=bece72b74c2352f70a0ee501a3e7b05d92a82e41 git remote add tnguy-next-queue https://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue.git git fetch --no-tags tnguy-next-queue 10GbE git checkout bece72b74c2352f70a0ee501a3e7b05d92a82e41 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 clang-analyzer If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> clang-analyzer warnings: (new ones prefixed by >>) include/linux/list.h:715:13: note: expanded from macro 'list_for_each_entry_safe' for (pos = list_first_entry(head, typeof(*pos), member), \ ^ include/linux/list.h:522:2: note: expanded from macro 'list_first_entry' list_entry((ptr)->next, type, member) ^ include/linux/list.h:511:2: note: expanded from macro 'list_entry' container_of(ptr, type, member) ^ include/linux/kernel.h:495:61: note: expanded from macro 'container_of' BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \ ^ fs/cifs/file.c:1633:3: note: Taking false branch list_for_each_entry_safe(li, tmp, &cfile->llist->locks, llist) { ^ include/linux/list.h:715:13: note: expanded from macro 'list_for_each_entry_safe' for (pos = list_first_entry(head, typeof(*pos), member), \ ^ include/linux/list.h:522:2: note: expanded from macro 'list_first_entry' list_entry((ptr)->next, type, member) ^ include/linux/list.h:511:2: note: expanded from macro 'list_entry' container_of(ptr, type, member) ^ note: (skipping 2 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) include/linux/compiler_types.h:322:2: note: expanded from macro 'compiletime_assert' _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) ^ include/linux/compiler_types.h:310:2: note: expanded from macro '_compiletime_assert' __compiletime_assert(condition, msg, prefix, suffix) ^ include/linux/compiler_types.h:302:3: note: expanded from macro '__compiletime_assert' if (!(condition)) \ ^ fs/cifs/file.c:1633:3: note: Loop condition is false. Exiting loop list_for_each_entry_safe(li, tmp, &cfile->llist->locks, llist) { ^ include/linux/list.h:715:13: note: expanded from macro 'list_for_each_entry_safe' for (pos = list_first_entry(head, typeof(*pos), member), \ ^ include/linux/list.h:522:2: note: expanded from macro 'list_first_entry' list_entry((ptr)->next, type, member) ^ include/linux/list.h:511:2: note: expanded from macro 'list_entry' container_of(ptr, type, member) ^ note: (skipping 2 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all) include/linux/compiler_types.h:322:2: note: expanded from macro 'compiletime_assert' _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) ^ include/linux/compiler_types.h:310:2: note: expanded from macro '_compiletime_assert' __compiletime_assert(condition, msg, prefix, suffix) ^ include/linux/compiler_types.h:300:2: note: expanded from macro '__compiletime_assert' do { \ ^ fs/cifs/file.c:1633:3: note: Use of memory after it is freed list_for_each_entry_safe(li, tmp, &cfile->llist->locks, llist) { ^ include/linux/list.h:716:7: note: expanded from macro 'list_for_each_entry_safe' n = list_next_entry(pos, member); \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/list.h:555:2: note: expanded from macro 'list_next_entry' list_entry((pos)->member.next, typeof(*(pos)), member) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/list.h:511:2: note: expanded from macro 'list_entry' container_of(ptr, type, member) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/kernel.h:494:25: note: expanded from macro 'container_of' void *__mptr = (void *)(ptr); \ ^~~~~ fs/cifs/file.c:4846:3: warning: Value stored to 'rc' is never read [clang-analyzer-deadcode.DeadStores] rc = filemap_fdatawrite(inode->i_mapping); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/cifs/file.c:4846:3: note: Value stored to 'rc' is never read rc = filemap_fdatawrite(inode->i_mapping); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/cifs/file.c:4885:3: warning: Value stored to 'rc' is never read [clang-analyzer-deadcode.DeadStores] rc = tcon->ses->server->ops->oplock_response(tcon, &cfile->fid, ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/cifs/file.c:4885:3: note: Value stored to 'rc' is never read rc = tcon->ses->server->ops->oplock_response(tcon, &cfile->fid, ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Suppressed 3 warnings (3 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 6 warnings generated. drivers/net/ethernet/intel/ice/ice_ethtool.c:2528:2: warning: Value stored to 'dev' is never read [clang-analyzer-deadcode.DeadStores] dev = ice_pf_to_dev(pf); ^ drivers/net/ethernet/intel/ice/ice_ethtool.c:2528:2: note: Value stored to 'dev' is never read drivers/net/ethernet/intel/ice/ice_ethtool.c:2572:2: warning: Value stored to 'dev' is never read [clang-analyzer-deadcode.DeadStores] dev = ice_pf_to_dev(pf); ^ drivers/net/ethernet/intel/ice/ice_ethtool.c:2572:2: note: Value stored to 'dev' is never read Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 4 warnings generated. Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 5 warnings generated. >> drivers/net/ethernet/intel/ice/ice_tc_lib.c:336:2: warning: Value stored to >> 'dev' is never read [clang-analyzer-deadcode.DeadStores] dev = ice_pf_to_dev(pf); ^ drivers/net/ethernet/intel/ice/ice_tc_lib.c:336:2: note: Value stored to 'dev' is never read Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 4 warnings generated. Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 5 warnings generated. drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c:1388:2: warning: Value stored to 'dev' is never read [clang-analyzer-deadcode.DeadStores] dev = ice_pf_to_dev(pf); ^ drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c:1388:2: note: Value stored to 'dev' is never read Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 4 warnings generated. Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 14 warnings generated. drivers/net/ethernet/intel/ice/ice_virtchnl_fdir.c:327:2: warning: Value stored to 'dev' is never read [clang-analyzer-deadcode.DeadStores] dev = ice_pf_to_dev(pf); ^ drivers/net/ethernet/intel/ice/ice_virtchnl_fdir.c:327:2: note: Value stored to 'dev' is never read drivers/net/ethernet/intel/ice/ice_virtchnl_fdir.c:486:17: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores] struct device *dev = ice_pf_to_dev(vf->pf); ^~~ drivers/net/ethernet/intel/ice/ice_virtchnl_fdir.c:486:17: note: Value stored to 'dev' during its initialization is never read struct device *dev = ice_pf_to_dev(vf->pf); ^~~ drivers/net/ethernet/intel/ice/ice_virtchnl_fdir.c:530:17: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores] struct device *dev = ice_pf_to_dev(vf->pf); ^~~ drivers/net/ethernet/intel/ice/ice_virtchnl_fdir.c:530:17: note: Value stored to 'dev' during its initialization is never read struct device *dev = ice_pf_to_dev(vf->pf); ^~~ drivers/net/ethernet/intel/ice/ice_virtchnl_fdir.c:764:2: warning: Value stored to 'dev' is never read [clang-analyzer-deadcode.DeadStores] dev = ice_pf_to_dev(pf); ^ drivers/net/ethernet/intel/ice/ice_virtchnl_fdir.c:764:2: note: Value stored to 'dev' is never read drivers/net/ethernet/intel/ice/ice_virtchnl_fdir.c:1007:17: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores] struct device *dev = ice_pf_to_dev(vf->pf); ^~~ drivers/net/ethernet/intel/ice/ice_virtchnl_fdir.c:1007:17: note: Value stored to 'dev' during its initialization is never read struct device *dev = ice_pf_to_dev(vf->pf); ^~~ drivers/net/ethernet/intel/ice/ice_virtchnl_fdir.c:1229:17: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores] struct device *dev = ice_pf_to_dev(vf->pf); ^~~ drivers/net/ethernet/intel/ice/ice_virtchnl_fdir.c:1229:17: note: Value stored to 'dev' during its initialization is never read struct device *dev = ice_pf_to_dev(vf->pf); ^~~ drivers/net/ethernet/intel/ice/ice_virtchnl_fdir.c:1618:2: warning: Value stored to 'dev' is never read [clang-analyzer-deadcode.DeadStores] dev = ice_pf_to_dev(pf); ^ drivers/net/ethernet/intel/ice/ice_virtchnl_fdir.c:1618:2: note: Value stored to 'dev' is never read drivers/net/ethernet/intel/ice/ice_virtchnl_fdir.c:1622:2: warning: Value stored to 'fd_size' is never read [clang-analyzer-deadcode.DeadStores] fd_size = rd32(hw, VSIQF_FD_SIZE(vsi_num)); ^ drivers/net/ethernet/intel/ice/ice_virtchnl_fdir.c:1622:2: note: Value stored to 'fd_size' is never read drivers/net/ethernet/intel/ice/ice_virtchnl_fdir.c:1623:2: warning: Value stored to 'fd_cnt' is never read [clang-analyzer-deadcode.DeadStores] fd_cnt = rd32(hw, VSIQF_FD_CNT(vsi_num)); ^ drivers/net/ethernet/intel/ice/ice_virtchnl_fdir.c:1623:2: note: Value stored to 'fd_cnt' is never read drivers/net/ethernet/intel/ice/ice_virtchnl_fdir.c:1924:17: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores] struct device *dev = ice_pf_to_dev(vf->pf); ^~~ drivers/net/ethernet/intel/ice/ice_virtchnl_fdir.c:1924:17: note: Value stored to 'dev' during its initialization is never read struct device *dev = ice_pf_to_dev(vf->pf); ^~~ Suppressed 4 warnings (4 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 3 warnings generated. Suppressed 3 warnings (3 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 5 warnings generated. include/linux/skbuff.h:1429:9: warning: Access to field 'head' results in a dereference of a null pointer (loaded from variable 'skb') [clang-analyzer-core.NullDereference] return skb->head + skb->end; ^ drivers/staging/qlge/qlge_main.c:4648:9: note: Calling 'qlge_clean_inbound_rx_ring' return qlge_clean_inbound_rx_ring(rx_ring, budget); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/staging/qlge/qlge_main.c:2144:9: note: Assuming 'prod' is not equal to field 'cnsmr_idx' while (prod != rx_ring->cnsmr_idx) { ^~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/staging/qlge/qlge_main.c:2144:2: note: Loop condition is true. Entering loop body while (prod != rx_ring->cnsmr_idx) { ^ drivers/staging/qlge/qlge_main.c:2145:3: note: Assuming the condition is false netif_printk(qdev, rx_status, KERN_DEBUG, qdev->ndev, ^ include/linux/netdevice.h:5366:6: note: expanded from macro 'netif_printk' if (netif_msg_##type(priv)) \ ^~~~~~~~~~~~~~~~~~~~~~ note: expanded from here include/linux/netdevice.h:4388:33: note: expanded from macro 'netif_msg_rx_status' #define netif_msg_rx_status(p) ((p)->msg_enable & NETIF_MSG_RX_STATUS) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/staging/qlge/qlge_main.c:2145:3: note: Taking false branch netif_printk(qdev, rx_status, KERN_DEBUG, qdev->ndev, ^ vim +/dev +336 drivers/net/ethernet/intel/ice/ice_tc_lib.c 0d08a441fb1a5c Kiran Patil 2021-08-06 309 bece72b74c2352 Kiran Patil 2021-10-15 310 /** bece72b74c2352 Kiran Patil 2021-10-15 311 * ice_add_tc_flower_adv_fltr - add appropriate filter rules bece72b74c2352 Kiran Patil 2021-10-15 312 * @vsi: Pointer to VSI bece72b74c2352 Kiran Patil 2021-10-15 313 * @tc_fltr: Pointer to TC flower filter structure bece72b74c2352 Kiran Patil 2021-10-15 314 * bece72b74c2352 Kiran Patil 2021-10-15 315 * based on filter parameters using Advance recipes supported bece72b74c2352 Kiran Patil 2021-10-15 316 * by OS package. bece72b74c2352 Kiran Patil 2021-10-15 317 */ bece72b74c2352 Kiran Patil 2021-10-15 318 static int bece72b74c2352 Kiran Patil 2021-10-15 319 ice_add_tc_flower_adv_fltr(struct ice_vsi *vsi, bece72b74c2352 Kiran Patil 2021-10-15 320 struct ice_tc_flower_fltr *tc_fltr) bece72b74c2352 Kiran Patil 2021-10-15 321 { bece72b74c2352 Kiran Patil 2021-10-15 322 struct ice_tc_flower_lyr_2_4_hdrs *headers = &tc_fltr->outer_headers; bece72b74c2352 Kiran Patil 2021-10-15 323 struct ice_adv_rule_info rule_info = {0}; bece72b74c2352 Kiran Patil 2021-10-15 324 struct ice_rule_query_data rule_added; bece72b74c2352 Kiran Patil 2021-10-15 325 struct ice_adv_lkup_elem *list; bece72b74c2352 Kiran Patil 2021-10-15 326 struct ice_pf *pf = vsi->back; bece72b74c2352 Kiran Patil 2021-10-15 327 struct ice_hw *hw = &pf->hw; bece72b74c2352 Kiran Patil 2021-10-15 328 u32 flags = tc_fltr->flags; bece72b74c2352 Kiran Patil 2021-10-15 329 struct ice_vsi *ch_vsi; bece72b74c2352 Kiran Patil 2021-10-15 330 struct device *dev; bece72b74c2352 Kiran Patil 2021-10-15 331 u16 lkups_cnt = 0; bece72b74c2352 Kiran Patil 2021-10-15 332 u16 l4_proto = 0; bece72b74c2352 Kiran Patil 2021-10-15 333 int ret = 0; bece72b74c2352 Kiran Patil 2021-10-15 334 u16 i = 0; bece72b74c2352 Kiran Patil 2021-10-15 335 bece72b74c2352 Kiran Patil 2021-10-15 @336 dev = ice_pf_to_dev(pf); bece72b74c2352 Kiran Patil 2021-10-15 337 if (ice_is_safe_mode(pf)) { bece72b74c2352 Kiran Patil 2021-10-15 338 NL_SET_ERR_MSG_MOD(tc_fltr->extack, "Unable to add filter because driver is in safe mode"); bece72b74c2352 Kiran Patil 2021-10-15 339 return -EOPNOTSUPP; bece72b74c2352 Kiran Patil 2021-10-15 340 } bece72b74c2352 Kiran Patil 2021-10-15 341 bece72b74c2352 Kiran Patil 2021-10-15 342 if (!flags || (flags & (ICE_TC_FLWR_FIELD_ENC_DEST_IPV4 | bece72b74c2352 Kiran Patil 2021-10-15 343 ICE_TC_FLWR_FIELD_ENC_SRC_IPV4 | bece72b74c2352 Kiran Patil 2021-10-15 344 ICE_TC_FLWR_FIELD_ENC_DEST_IPV6 | bece72b74c2352 Kiran Patil 2021-10-15 345 ICE_TC_FLWR_FIELD_ENC_SRC_IPV6 | bece72b74c2352 Kiran Patil 2021-10-15 346 ICE_TC_FLWR_FIELD_ENC_SRC_L4_PORT))) { bece72b74c2352 Kiran Patil 2021-10-15 347 NL_SET_ERR_MSG_MOD(tc_fltr->extack, "Unsupported encap field(s)"); bece72b74c2352 Kiran Patil 2021-10-15 348 return -EOPNOTSUPP; bece72b74c2352 Kiran Patil 2021-10-15 349 } bece72b74c2352 Kiran Patil 2021-10-15 350 bece72b74c2352 Kiran Patil 2021-10-15 351 /* get the channel (aka ADQ VSI) */ bece72b74c2352 Kiran Patil 2021-10-15 352 if (tc_fltr->dest_vsi) bece72b74c2352 Kiran Patil 2021-10-15 353 ch_vsi = tc_fltr->dest_vsi; bece72b74c2352 Kiran Patil 2021-10-15 354 else bece72b74c2352 Kiran Patil 2021-10-15 355 ch_vsi = vsi->tc_map_vsi[tc_fltr->action.tc_class]; bece72b74c2352 Kiran Patil 2021-10-15 356 bece72b74c2352 Kiran Patil 2021-10-15 357 lkups_cnt = ice_tc_count_lkups(flags, headers, tc_fltr); bece72b74c2352 Kiran Patil 2021-10-15 358 list = kcalloc(lkups_cnt, sizeof(*list), GFP_ATOMIC); bece72b74c2352 Kiran Patil 2021-10-15 359 if (!list) bece72b74c2352 Kiran Patil 2021-10-15 360 return -ENOMEM; bece72b74c2352 Kiran Patil 2021-10-15 361 bece72b74c2352 Kiran Patil 2021-10-15 362 i = ice_tc_fill_rules(hw, flags, tc_fltr, list, &rule_info, &l4_proto); bece72b74c2352 Kiran Patil 2021-10-15 363 if (i != lkups_cnt) { bece72b74c2352 Kiran Patil 2021-10-15 364 ret = -EINVAL; bece72b74c2352 Kiran Patil 2021-10-15 365 goto exit; bece72b74c2352 Kiran Patil 2021-10-15 366 } bece72b74c2352 Kiran Patil 2021-10-15 367 bece72b74c2352 Kiran Patil 2021-10-15 368 rule_info.sw_act.fltr_act = tc_fltr->action.fltr_act; bece72b74c2352 Kiran Patil 2021-10-15 369 if (tc_fltr->action.tc_class >= ICE_CHNL_START_TC) { bece72b74c2352 Kiran Patil 2021-10-15 370 if (!ch_vsi) { bece72b74c2352 Kiran Patil 2021-10-15 371 NL_SET_ERR_MSG_MOD(tc_fltr->extack, "Unable to add filter because specified destination doesn't exist"); bece72b74c2352 Kiran Patil 2021-10-15 372 ret = -EINVAL; bece72b74c2352 Kiran Patil 2021-10-15 373 goto exit; bece72b74c2352 Kiran Patil 2021-10-15 374 } bece72b74c2352 Kiran Patil 2021-10-15 375 bece72b74c2352 Kiran Patil 2021-10-15 376 rule_info.sw_act.fltr_act = ICE_FWD_TO_VSI; bece72b74c2352 Kiran Patil 2021-10-15 377 rule_info.sw_act.vsi_handle = ch_vsi->idx; bece72b74c2352 Kiran Patil 2021-10-15 378 rule_info.priority = 7; bece72b74c2352 Kiran Patil 2021-10-15 379 rule_info.sw_act.src = hw->pf_id; bece72b74c2352 Kiran Patil 2021-10-15 380 rule_info.rx = true; bece72b74c2352 Kiran Patil 2021-10-15 381 dev_dbg(dev, "add switch rule for TC:%u vsi_idx:%u, lkups_cnt:%u\n", bece72b74c2352 Kiran Patil 2021-10-15 382 tc_fltr->action.tc_class, bece72b74c2352 Kiran Patil 2021-10-15 383 rule_info.sw_act.vsi_handle, lkups_cnt); bece72b74c2352 Kiran Patil 2021-10-15 384 } else { bece72b74c2352 Kiran Patil 2021-10-15 385 rule_info.sw_act.flag |= ICE_FLTR_TX; bece72b74c2352 Kiran Patil 2021-10-15 386 rule_info.sw_act.src = vsi->idx; bece72b74c2352 Kiran Patil 2021-10-15 387 rule_info.rx = false; bece72b74c2352 Kiran Patil 2021-10-15 388 } bece72b74c2352 Kiran Patil 2021-10-15 389 bece72b74c2352 Kiran Patil 2021-10-15 390 /* specify the cookie as filter_rule_id */ bece72b74c2352 Kiran Patil 2021-10-15 391 rule_info.fltr_rule_id = tc_fltr->cookie; bece72b74c2352 Kiran Patil 2021-10-15 392 bece72b74c2352 Kiran Patil 2021-10-15 393 ret = ice_add_adv_rule(hw, list, lkups_cnt, &rule_info, &rule_added); bece72b74c2352 Kiran Patil 2021-10-15 394 if (ret == -EEXIST) { bece72b74c2352 Kiran Patil 2021-10-15 395 NL_SET_ERR_MSG_MOD(tc_fltr->extack, bece72b74c2352 Kiran Patil 2021-10-15 396 "Unable to add filter because it already exist"); bece72b74c2352 Kiran Patil 2021-10-15 397 ret = -EINVAL; bece72b74c2352 Kiran Patil 2021-10-15 398 goto exit; bece72b74c2352 Kiran Patil 2021-10-15 399 } else if (ret) { bece72b74c2352 Kiran Patil 2021-10-15 400 NL_SET_ERR_MSG_MOD(tc_fltr->extack, bece72b74c2352 Kiran Patil 2021-10-15 401 "Unable to add filter due to error"); bece72b74c2352 Kiran Patil 2021-10-15 402 ret = -EIO; bece72b74c2352 Kiran Patil 2021-10-15 403 goto exit; bece72b74c2352 Kiran Patil 2021-10-15 404 } bece72b74c2352 Kiran Patil 2021-10-15 405 bece72b74c2352 Kiran Patil 2021-10-15 406 /* store the output params, which are needed later for removing bece72b74c2352 Kiran Patil 2021-10-15 407 * advanced switch filter bece72b74c2352 Kiran Patil 2021-10-15 408 */ bece72b74c2352 Kiran Patil 2021-10-15 409 tc_fltr->rid = rule_added.rid; bece72b74c2352 Kiran Patil 2021-10-15 410 tc_fltr->rule_id = rule_added.rule_id; bece72b74c2352 Kiran Patil 2021-10-15 411 if (tc_fltr->action.tc_class > 0 && ch_vsi) { bece72b74c2352 Kiran Patil 2021-10-15 412 /* For PF ADQ, VSI type is set as ICE_VSI_CHNL, and bece72b74c2352 Kiran Patil 2021-10-15 413 * for PF ADQ filter, it is not yet set in tc_fltr, bece72b74c2352 Kiran Patil 2021-10-15 414 * hence store the dest_vsi ptr in tc_fltr bece72b74c2352 Kiran Patil 2021-10-15 415 */ bece72b74c2352 Kiran Patil 2021-10-15 416 if (ch_vsi->type == ICE_VSI_CHNL) bece72b74c2352 Kiran Patil 2021-10-15 417 tc_fltr->dest_vsi = ch_vsi; bece72b74c2352 Kiran Patil 2021-10-15 418 /* keep track of advanced switch filter for bece72b74c2352 Kiran Patil 2021-10-15 419 * destination VSI (channel VSI) bece72b74c2352 Kiran Patil 2021-10-15 420 */ bece72b74c2352 Kiran Patil 2021-10-15 421 ch_vsi->num_chnl_fltr++; bece72b74c2352 Kiran Patil 2021-10-15 422 /* in this case, dest_id is VSI handle (sw handle) */ bece72b74c2352 Kiran Patil 2021-10-15 423 tc_fltr->dest_id = rule_added.vsi_handle; bece72b74c2352 Kiran Patil 2021-10-15 424 bece72b74c2352 Kiran Patil 2021-10-15 425 /* keeps track of channel filters for PF VSI */ bece72b74c2352 Kiran Patil 2021-10-15 426 if (vsi->type == ICE_VSI_PF && bece72b74c2352 Kiran Patil 2021-10-15 427 (flags & (ICE_TC_FLWR_FIELD_DST_MAC | bece72b74c2352 Kiran Patil 2021-10-15 428 ICE_TC_FLWR_FIELD_ENC_DST_MAC))) bece72b74c2352 Kiran Patil 2021-10-15 429 pf->num_dmac_chnl_fltrs++; bece72b74c2352 Kiran Patil 2021-10-15 430 } bece72b74c2352 Kiran Patil 2021-10-15 431 dev_dbg(dev, "added switch rule (lkups_cnt %u, flags 0x%x) for TC %u, rid %u, rule_id %u, vsi_idx %u\n", bece72b74c2352 Kiran Patil 2021-10-15 432 lkups_cnt, flags, bece72b74c2352 Kiran Patil 2021-10-15 433 tc_fltr->action.tc_class, rule_added.rid, bece72b74c2352 Kiran Patil 2021-10-15 434 rule_added.rule_id, rule_added.vsi_handle); bece72b74c2352 Kiran Patil 2021-10-15 435 exit: bece72b74c2352 Kiran Patil 2021-10-15 436 kfree(list); bece72b74c2352 Kiran Patil 2021-10-15 437 return ret; bece72b74c2352 Kiran Patil 2021-10-15 438 } bece72b74c2352 Kiran Patil 2021-10-15 439 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
