CC: [email protected]
CC: [email protected]
TO: "Florian, Fainelli," <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   3d77e6a8804abcc0504c904bd6e5cdf3a5cf8162
commit: 7555020c44db75a0d934dffc0aa6c678b52b2a13 net: dsa: bcm_sf2: Add support 
for matching VLAN TCI
date:   9 weeks ago
:::::: branch date: 12 hours ago
:::::: commit date: 9 weeks ago
config: x86_64-randconfig-s022-20200601 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-13) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.1-243-gc100a7ab-dirty
        git checkout 7555020c44db75a0d934dffc0aa6c678b52b2a13
        # save the attached .config to linux build tree
        make W=1 C=1 ARCH=x86_64 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'

If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <[email protected]>


sparse warnings: (new ones prefixed by >>)

   drivers/net/dsa/bcm_sf2_cfp.c:350:44: sparse: sparse: incorrect type in 
initializer (different base types) @@     expected restricted __be16 [usertype] 
vlan_m_tci @@     got int @@
>> drivers/net/dsa/bcm_sf2_cfp.c:350:44: sparse:     expected restricted __be16 
>> [usertype] vlan_m_tci
   drivers/net/dsa/bcm_sf2_cfp.c:350:44: sparse:     got int
   drivers/net/dsa/bcm_sf2_cfp.c:631:43: sparse: sparse: incorrect type in 
initializer (different base types) @@     expected restricted __be16 [usertype] 
vlan_m_tci @@     got int @@
   drivers/net/dsa/bcm_sf2_cfp.c:631:43: sparse:     expected restricted __be16 
[usertype] vlan_m_tci
   drivers/net/dsa/bcm_sf2_cfp.c:631:43: sparse:     got int

# 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7555020c44db75a0d934dffc0aa6c678b52b2a13
git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git remote update linus
git checkout 7555020c44db75a0d934dffc0aa6c678b52b2a13
vim +350 drivers/net/dsa/bcm_sf2_cfp.c

bc3fc44c12d6a4 Florian Fainelli  2017-10-20  343  
3306145866b62f Florian Fainelli  2017-10-20  344  static int 
bcm_sf2_cfp_ipv4_rule_set(struct bcm_sf2_priv *priv, int port,
3306145866b62f Florian Fainelli  2017-10-20  345                                
     unsigned int port_num,
3306145866b62f Florian Fainelli  2017-10-20  346                                
     unsigned int queue_num,
3306145866b62f Florian Fainelli  2017-10-20  347                                
     struct ethtool_rx_flow_spec *fs)
3306145866b62f Florian Fainelli  2017-10-20  348  {
e4f7ef54cbd8c8 Pablo Neira Ayuso 2019-02-02  349        struct 
ethtool_rx_flow_spec_input input = {};
7555020c44db75 Florian Fainelli  2020-03-30 @350        __be16 vlan_tci = 0 , 
vlan_m_tci = 0xffff;
3306145866b62f Florian Fainelli  2017-10-20  351        const struct 
cfp_udf_layout *layout;
3306145866b62f Florian Fainelli  2017-10-20  352        unsigned int slice_num, 
rule_index;
e4f7ef54cbd8c8 Pablo Neira Ayuso 2019-02-02  353        struct 
ethtool_rx_flow_rule *flow;
e4f7ef54cbd8c8 Pablo Neira Ayuso 2019-02-02  354        struct 
flow_match_ipv4_addrs ipv4;
e4f7ef54cbd8c8 Pablo Neira Ayuso 2019-02-02  355        struct flow_match_ports 
ports;
e4f7ef54cbd8c8 Pablo Neira Ayuso 2019-02-02  356        struct flow_match_ip ip;
3306145866b62f Florian Fainelli  2017-10-20  357        u8 ip_proto, ip_frag;
3306145866b62f Florian Fainelli  2017-10-20  358        u8 num_udf;
3306145866b62f Florian Fainelli  2017-10-20  359        u32 reg;
3306145866b62f Florian Fainelli  2017-10-20  360        int ret;
7318166cacad15 Florian Fainelli  2017-01-30  361  
7318166cacad15 Florian Fainelli  2017-01-30  362        switch (fs->flow_type & 
~FLOW_EXT) {
7318166cacad15 Florian Fainelli  2017-01-30  363        case TCP_V4_FLOW:
7318166cacad15 Florian Fainelli  2017-01-30  364                ip_proto = 
IPPROTO_TCP;
7318166cacad15 Florian Fainelli  2017-01-30  365                break;
7318166cacad15 Florian Fainelli  2017-01-30  366        case UDP_V4_FLOW:
7318166cacad15 Florian Fainelli  2017-01-30  367                ip_proto = 
IPPROTO_UDP;
7318166cacad15 Florian Fainelli  2017-01-30  368                break;
7318166cacad15 Florian Fainelli  2017-01-30  369        default:
7318166cacad15 Florian Fainelli  2017-01-30  370                return -EINVAL;
7318166cacad15 Florian Fainelli  2017-01-30  371        }
7318166cacad15 Florian Fainelli  2017-01-30  372  
7c3125f0a6ebc1 Florian Fainelli  2019-12-20  373        ip_frag = 
!!(be32_to_cpu(fs->h_ext.data[0]) & 1);
3306145866b62f Florian Fainelli  2017-10-20  374  
7555020c44db75 Florian Fainelli  2020-03-30  375        /* Extract VLAN TCI */
7555020c44db75 Florian Fainelli  2020-03-30  376        if (fs->flow_type & 
FLOW_EXT) {
7555020c44db75 Florian Fainelli  2020-03-30  377                vlan_tci = 
fs->h_ext.vlan_tci;
7555020c44db75 Florian Fainelli  2020-03-30  378                vlan_m_tci = 
fs->m_ext.vlan_tci;
7555020c44db75 Florian Fainelli  2020-03-30  379        }
7555020c44db75 Florian Fainelli  2020-03-30  380  
3306145866b62f Florian Fainelli  2017-10-20  381        /* Locate the first 
rule available */
3306145866b62f Florian Fainelli  2017-10-20  382        if (fs->location == 
RX_CLS_LOC_ANY)
3306145866b62f Florian Fainelli  2017-10-20  383                rule_index = 
find_first_zero_bit(priv->cfp.used,
43a5e00f38fe89 Florian Fainelli  2018-05-15  384                                
                 priv->num_cfp_rules);
3306145866b62f Florian Fainelli  2017-10-20  385        else
3306145866b62f Florian Fainelli  2017-10-20  386                rule_index = 
fs->location;
3306145866b62f Florian Fainelli  2017-10-20  387  
43a5e00f38fe89 Florian Fainelli  2018-05-15  388        if (rule_index > 
bcm_sf2_cfp_rule_size(priv))
43a5e00f38fe89 Florian Fainelli  2018-05-15  389                return -ENOSPC;
43a5e00f38fe89 Florian Fainelli  2018-05-15  390  
e4f7ef54cbd8c8 Pablo Neira Ayuso 2019-02-02  391        input.fs = fs;
e4f7ef54cbd8c8 Pablo Neira Ayuso 2019-02-02  392        flow = 
ethtool_rx_flow_rule_create(&input);
e4f7ef54cbd8c8 Pablo Neira Ayuso 2019-02-02  393        if (IS_ERR(flow))
e4f7ef54cbd8c8 Pablo Neira Ayuso 2019-02-02  394                return 
PTR_ERR(flow);
e4f7ef54cbd8c8 Pablo Neira Ayuso 2019-02-02  395  
e4f7ef54cbd8c8 Pablo Neira Ayuso 2019-02-02  396        
flow_rule_match_ipv4_addrs(flow->rule, &ipv4);
e4f7ef54cbd8c8 Pablo Neira Ayuso 2019-02-02  397        
flow_rule_match_ports(flow->rule, &ports);
e4f7ef54cbd8c8 Pablo Neira Ayuso 2019-02-02  398        
flow_rule_match_ip(flow->rule, &ip);
e4f7ef54cbd8c8 Pablo Neira Ayuso 2019-02-02  399  
7318166cacad15 Florian Fainelli  2017-01-30  400        layout = 
&udf_tcpip4_layout;
5d80bcbb631ce0 Florian Fainelli  2017-10-20  401        /* We only use one UDF 
slice for now */
5d80bcbb631ce0 Florian Fainelli  2017-10-20  402        slice_num = 
bcm_sf2_get_slice_number(layout, 0);
e4f7ef54cbd8c8 Pablo Neira Ayuso 2019-02-02  403        if (slice_num == 
UDF_NUM_SLICES) {
e4f7ef54cbd8c8 Pablo Neira Ayuso 2019-02-02  404                ret = -EINVAL;
e4f7ef54cbd8c8 Pablo Neira Ayuso 2019-02-02  405                goto 
out_err_flow_rule;
e4f7ef54cbd8c8 Pablo Neira Ayuso 2019-02-02  406        }
5d80bcbb631ce0 Florian Fainelli  2017-10-20  407  
5d80bcbb631ce0 Florian Fainelli  2017-10-20  408        num_udf = 
bcm_sf2_get_num_udf_slices(layout->udfs[slice_num].slices);
7318166cacad15 Florian Fainelli  2017-01-30  409  
7318166cacad15 Florian Fainelli  2017-01-30  410        /* Apply the UDF layout 
for this filter */
5d80bcbb631ce0 Florian Fainelli  2017-10-20  411        
bcm_sf2_cfp_udf_set(priv, layout, slice_num);
7318166cacad15 Florian Fainelli  2017-01-30  412  
7318166cacad15 Florian Fainelli  2017-01-30  413        /* Apply to all packets 
received through this port */
7318166cacad15 Florian Fainelli  2017-01-30  414        core_writel(priv, 
BIT(port), CORE_CFP_DATA_PORT(7));
7318166cacad15 Florian Fainelli  2017-01-30  415  
3306145866b62f Florian Fainelli  2017-10-20  416        /* Source port map 
match */
3306145866b62f Florian Fainelli  2017-10-20  417        core_writel(priv, 0xff, 
CORE_CFP_MASK_PORT(7));
3306145866b62f Florian Fainelli  2017-10-20  418  
7318166cacad15 Florian Fainelli  2017-01-30  419        /* S-Tag status         
[31:30]
7318166cacad15 Florian Fainelli  2017-01-30  420         * C-Tag status         
[29:28]
7318166cacad15 Florian Fainelli  2017-01-30  421         * L2 framing           
[27:26]
7318166cacad15 Florian Fainelli  2017-01-30  422         * L3 framing           
[25:24]
7318166cacad15 Florian Fainelli  2017-01-30  423         * IP ToS               
[23:16]
7318166cacad15 Florian Fainelli  2017-01-30  424         * IP proto             
[15:08]
7318166cacad15 Florian Fainelli  2017-01-30  425         * IP Fragm             
[7]
7318166cacad15 Florian Fainelli  2017-01-30  426         * Non 1st frag         
[6]
7318166cacad15 Florian Fainelli  2017-01-30  427         * IP Authen            
[5]
7318166cacad15 Florian Fainelli  2017-01-30  428         * TTL range            
[4:3]
7318166cacad15 Florian Fainelli  2017-01-30  429         * PPPoE session        
[2]
7318166cacad15 Florian Fainelli  2017-01-30  430         * Reserved             
[1]
7318166cacad15 Florian Fainelli  2017-01-30  431         * UDF_Valid[8]         
[0]
7318166cacad15 Florian Fainelli  2017-01-30  432         */
e4f7ef54cbd8c8 Pablo Neira Ayuso 2019-02-02  433        core_writel(priv, 
ip.key->tos << IPTOS_SHIFT |
5d80bcbb631ce0 Florian Fainelli  2017-10-20  434                    ip_proto << 
IPPROTO_SHIFT | ip_frag << IP_FRAG_SHIFT |
5d80bcbb631ce0 Florian Fainelli  2017-10-20  435                    
udf_upper_bits(num_udf),
7318166cacad15 Florian Fainelli  2017-01-30  436                    
CORE_CFP_DATA_PORT(6));
7318166cacad15 Florian Fainelli  2017-01-30  437  
bc3fc44c12d6a4 Florian Fainelli  2017-10-20  438        /* Mask with the 
specific layout for IPv4 packets */
bc3fc44c12d6a4 Florian Fainelli  2017-10-20  439        core_writel(priv, 
layout->udfs[slice_num].mask_value |
bc3fc44c12d6a4 Florian Fainelli  2017-10-20  440                    
udf_upper_bits(num_udf), CORE_CFP_MASK_PORT(6));
bc3fc44c12d6a4 Florian Fainelli  2017-10-20  441  
bc3fc44c12d6a4 Florian Fainelli  2017-10-20  442        /* Program the match 
and the mask */
7555020c44db75 Florian Fainelli  2020-03-30  443        
bcm_sf2_cfp_slice_ipv4(priv, ipv4.key, ports.key, vlan_tci,
7555020c44db75 Florian Fainelli  2020-03-30  444                               
slice_num, num_udf, false);
7555020c44db75 Florian Fainelli  2020-03-30  445        
bcm_sf2_cfp_slice_ipv4(priv, ipv4.mask, ports.mask, vlan_m_tci,
7555020c44db75 Florian Fainelli  2020-03-30  446                               
SLICE_NUM_MASK, num_udf, true);
7318166cacad15 Florian Fainelli  2017-01-30  447  
7318166cacad15 Florian Fainelli  2017-01-30  448        /* Insert into TCAM now 
*/
7318166cacad15 Florian Fainelli  2017-01-30  449        
bcm_sf2_cfp_rule_addr_set(priv, rule_index);
7318166cacad15 Florian Fainelli  2017-01-30  450  
7318166cacad15 Florian Fainelli  2017-01-30  451        ret = 
bcm_sf2_cfp_op(priv, OP_SEL_WRITE | TCAM_SEL);
7318166cacad15 Florian Fainelli  2017-01-30  452        if (ret) {
7318166cacad15 Florian Fainelli  2017-01-30  453                pr_err("TCAM 
entry at addr %d failed\n", rule_index);
e4f7ef54cbd8c8 Pablo Neira Ayuso 2019-02-02  454                goto 
out_err_flow_rule;
7318166cacad15 Florian Fainelli  2017-01-30  455        }
7318166cacad15 Florian Fainelli  2017-01-30  456  
3306145866b62f Florian Fainelli  2017-10-20  457        /* Insert into Action 
and policer RAMs now */
db78ed2737b860 Florian Fainelli  2019-02-06  458        ret = 
bcm_sf2_cfp_act_pol_set(priv, rule_index, port, port_num,
ba0696c22e7c5b Florian Fainelli  2017-10-20  459                                
      queue_num, true);
3306145866b62f Florian Fainelli  2017-10-20  460        if (ret)
e4f7ef54cbd8c8 Pablo Neira Ayuso 2019-02-02  461                goto 
out_err_flow_rule;
7318166cacad15 Florian Fainelli  2017-01-30  462  
7318166cacad15 Florian Fainelli  2017-01-30  463        /* Turn on CFP for this 
rule now */
7318166cacad15 Florian Fainelli  2017-01-30  464        reg = core_readl(priv, 
CORE_CFP_CTL_REG);
7318166cacad15 Florian Fainelli  2017-01-30  465        reg |= BIT(port);
7318166cacad15 Florian Fainelli  2017-01-30  466        core_writel(priv, reg, 
CORE_CFP_CTL_REG);
7318166cacad15 Florian Fainelli  2017-01-30  467  
7318166cacad15 Florian Fainelli  2017-01-30  468        /* Flag the rule as 
being used and return it */
7318166cacad15 Florian Fainelli  2017-01-30  469        set_bit(rule_index, 
priv->cfp.used);
ba0696c22e7c5b Florian Fainelli  2017-10-20  470        set_bit(rule_index, 
priv->cfp.unique);
7318166cacad15 Florian Fainelli  2017-01-30  471        fs->location = 
rule_index;
7318166cacad15 Florian Fainelli  2017-01-30  472  
7318166cacad15 Florian Fainelli  2017-01-30  473        return 0;
e4f7ef54cbd8c8 Pablo Neira Ayuso 2019-02-02  474  
e4f7ef54cbd8c8 Pablo Neira Ayuso 2019-02-02  475  out_err_flow_rule:
e4f7ef54cbd8c8 Pablo Neira Ayuso 2019-02-02  476        
ethtool_rx_flow_rule_destroy(flow);
e4f7ef54cbd8c8 Pablo Neira Ayuso 2019-02-02  477        return ret;
7318166cacad15 Florian Fainelli  2017-01-30  478  }
7318166cacad15 Florian Fainelli  2017-01-30  479  

---
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