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]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
