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]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to