tree:
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: e7b08814b16b80a0bf76eeca16317f8c2ed23b8c
commit: 3e370952287c55e5fd240cb8bb41ef8acff8829d [4817/14131] net: bcmgenet: add support
for ethtool rxnfc flows
:::::: branch date: 3 days ago
:::::: commit date: 5 weeks ago
config: i386-randconfig-s001-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 3e370952287c55e5fd240cb8bb41ef8acff8829d
# save the attached .config to linux build tree
make W=1 C=1 ARCH=i386 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
drivers/net/ethernet/broadcom/genet/bcmgenet.c:688:24: sparse: sparse: incorrect type
in assignment (different base types) @@ expected unsigned short [usertype] val_16 @@
got restricted __be16 [usertype] @@
drivers/net/ethernet/broadcom/genet/bcmgenet.c:688:24: sparse: expected unsigned
short [usertype] val_16
> drivers/net/ethernet/broadcom/genet/bcmgenet.c:688:24: sparse:
got restricted __be16 [usertype]
drivers/net/ethernet/broadcom/genet/bcmgenet.c:782:5: sparse: sparse: symbol
'bcmgenet_hfb_add_filter' was not declared. Should it be static?
include/linux/netdevice.h:4052:20: sparse: sparse: shift count is negative (-1)
#
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commi...
git remote add linux-next
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
git remote update linux-next
git checkout 3e370952287c55e5fd240cb8bb41ef8acff8829d
vim +688 drivers/net/ethernet/broadcom/genet/bcmgenet.c
3e370952287c55 Doug Berger 2020-04-29 631
3e370952287c55 Doug Berger 2020-04-29 632 static int
bcmgenet_hfb_create_rxnfc_filter(struct bcmgenet_priv *priv,
3e370952287c55 Doug Berger 2020-04-29 633 struct bcmgenet_rxnfc_rule *rule)
3e370952287c55 Doug Berger 2020-04-29 634 {
3e370952287c55 Doug Berger 2020-04-29 635 struct ethtool_rx_flow_spec *fs =
&rule->fs;
3e370952287c55 Doug Berger 2020-04-29 636 int err = 0, offset = 0, f_length = 0;
3e370952287c55 Doug Berger 2020-04-29 637 u16 val_16, mask_16;
3e370952287c55 Doug Berger 2020-04-29 638 u8 val_8, mask_8;
3e370952287c55 Doug Berger 2020-04-29 639 size_t size;
3e370952287c55 Doug Berger 2020-04-29 640 u32 *f_data;
3e370952287c55 Doug Berger 2020-04-29 641
3e370952287c55 Doug Berger 2020-04-29 642 f_data =
kcalloc(priv->hw_params->hfb_filter_size, sizeof(u32),
3e370952287c55 Doug Berger 2020-04-29 643 GFP_KERNEL);
3e370952287c55 Doug Berger 2020-04-29 644 if (!f_data)
3e370952287c55 Doug Berger 2020-04-29 645 return -ENOMEM;
3e370952287c55 Doug Berger 2020-04-29 646
3e370952287c55 Doug Berger 2020-04-29 647 if (fs->flow_type & FLOW_MAC_EXT) {
3e370952287c55 Doug Berger 2020-04-29 648 bcmgenet_hfb_insert_data(f_data, 0,
3e370952287c55 Doug Berger 2020-04-29 649 &fs->h_ext.h_dest,
&fs->m_ext.h_dest,
3e370952287c55 Doug Berger 2020-04-29 650 sizeof(fs->h_ext.h_dest));
3e370952287c55 Doug Berger 2020-04-29 651 }
3e370952287c55 Doug Berger 2020-04-29 652
3e370952287c55 Doug Berger 2020-04-29 653 if (fs->flow_type & FLOW_EXT) {
3e370952287c55 Doug Berger 2020-04-29 654 if (fs->m_ext.vlan_etype ||
3e370952287c55 Doug Berger 2020-04-29 655 fs->m_ext.vlan_tci) {
3e370952287c55 Doug Berger 2020-04-29 656 bcmgenet_hfb_insert_data(f_data, 12,
3e370952287c55 Doug Berger 2020-04-29 657 &fs->h_ext.vlan_etype,
3e370952287c55 Doug Berger 2020-04-29 658 &fs->m_ext.vlan_etype,
3e370952287c55 Doug Berger 2020-04-29 659 sizeof(fs->h_ext.vlan_etype));
3e370952287c55 Doug Berger 2020-04-29 660 bcmgenet_hfb_insert_data(f_data, 14,
3e370952287c55 Doug Berger 2020-04-29 661 &fs->h_ext.vlan_tci,
3e370952287c55 Doug Berger 2020-04-29 662 &fs->m_ext.vlan_tci,
3e370952287c55 Doug Berger 2020-04-29 663 sizeof(fs->h_ext.vlan_tci));
3e370952287c55 Doug Berger 2020-04-29 664 offset += VLAN_HLEN;
3e370952287c55 Doug Berger 2020-04-29 665 f_length += DIV_ROUND_UP(VLAN_HLEN, 2);
3e370952287c55 Doug Berger 2020-04-29 666 }
3e370952287c55 Doug Berger 2020-04-29 667 }
3e370952287c55 Doug Berger 2020-04-29 668
3e370952287c55 Doug Berger 2020-04-29 669 switch (fs->flow_type & ~(FLOW_EXT |
FLOW_MAC_EXT)) {
3e370952287c55 Doug Berger 2020-04-29 670 case ETHER_FLOW:
3e370952287c55 Doug Berger 2020-04-29 671 f_length += DIV_ROUND_UP(ETH_HLEN, 2);
3e370952287c55 Doug Berger 2020-04-29 672 bcmgenet_hfb_insert_data(f_data, 0,
3e370952287c55 Doug Berger 2020-04-29 673 &fs->h_u.ether_spec.h_dest,
3e370952287c55 Doug Berger 2020-04-29 674 &fs->m_u.ether_spec.h_dest,
3e370952287c55 Doug Berger 2020-04-29 675 sizeof(fs->h_u.ether_spec.h_dest));
3e370952287c55 Doug Berger 2020-04-29 676 bcmgenet_hfb_insert_data(f_data, ETH_ALEN,
3e370952287c55 Doug Berger 2020-04-29 677 &fs->h_u.ether_spec.h_source,
3e370952287c55 Doug Berger 2020-04-29 678 &fs->m_u.ether_spec.h_source,
3e370952287c55 Doug Berger 2020-04-29 679
sizeof(fs->h_u.ether_spec.h_source));
3e370952287c55 Doug Berger 2020-04-29 680 bcmgenet_hfb_insert_data(f_data, (2 *
ETH_ALEN) + offset,
3e370952287c55 Doug Berger 2020-04-29 681 &fs->h_u.ether_spec.h_proto,
3e370952287c55 Doug Berger 2020-04-29 682 &fs->m_u.ether_spec.h_proto,
3e370952287c55 Doug Berger 2020-04-29 683 sizeof(fs->h_u.ether_spec.h_proto));
3e370952287c55 Doug Berger 2020-04-29 684 break;
3e370952287c55 Doug Berger 2020-04-29 685 case IP_USER_FLOW:
3e370952287c55 Doug Berger 2020-04-29 686 f_length += DIV_ROUND_UP(ETH_HLEN + 20, 2);
3e370952287c55 Doug Berger 2020-04-29 687 /* Specify IP Ether Type */
3e370952287c55 Doug Berger 2020-04-29 @688 val_16 = htons(ETH_P_IP);
3e370952287c55 Doug Berger 2020-04-29 689 mask_16 = 0xFFFF;
3e370952287c55 Doug Berger 2020-04-29 690 bcmgenet_hfb_insert_data(f_data, (2 *
ETH_ALEN) + offset,
3e370952287c55 Doug Berger 2020-04-29 691 &val_16, &mask_16,
sizeof(val_16));
3e370952287c55 Doug Berger 2020-04-29 692 bcmgenet_hfb_insert_data(f_data, 15 +
offset,
3e370952287c55 Doug Berger 2020-04-29 693 &fs->h_u.usr_ip4_spec.tos,
3e370952287c55 Doug Berger 2020-04-29 694 &fs->m_u.usr_ip4_spec.tos,
3e370952287c55 Doug Berger 2020-04-29 695 sizeof(fs->h_u.usr_ip4_spec.tos));
3e370952287c55 Doug Berger 2020-04-29 696 bcmgenet_hfb_insert_data(f_data, 23 +
offset,
3e370952287c55 Doug Berger 2020-04-29 697 &fs->h_u.usr_ip4_spec.proto,
3e370952287c55 Doug Berger 2020-04-29 698 &fs->m_u.usr_ip4_spec.proto,
3e370952287c55 Doug Berger 2020-04-29 699 sizeof(fs->h_u.usr_ip4_spec.proto));
3e370952287c55 Doug Berger 2020-04-29 700 bcmgenet_hfb_insert_data(f_data, 26 +
offset,
3e370952287c55 Doug Berger 2020-04-29 701 &fs->h_u.usr_ip4_spec.ip4src,
3e370952287c55 Doug Berger 2020-04-29 702 &fs->m_u.usr_ip4_spec.ip4src,
3e370952287c55 Doug Berger 2020-04-29 703
sizeof(fs->h_u.usr_ip4_spec.ip4src));
3e370952287c55 Doug Berger 2020-04-29 704 bcmgenet_hfb_insert_data(f_data, 30 +
offset,
3e370952287c55 Doug Berger 2020-04-29 705 &fs->h_u.usr_ip4_spec.ip4dst,
3e370952287c55 Doug Berger 2020-04-29 706 &fs->m_u.usr_ip4_spec.ip4dst,
3e370952287c55 Doug Berger 2020-04-29 707
sizeof(fs->h_u.usr_ip4_spec.ip4dst));
3e370952287c55 Doug Berger 2020-04-29 708 if (!fs->m_u.usr_ip4_spec.l4_4_bytes)
3e370952287c55 Doug Berger 2020-04-29 709 break;
3e370952287c55 Doug Berger 2020-04-29 710
3e370952287c55 Doug Berger 2020-04-29 711 /* Only supports 20 byte IPv4 header */
3e370952287c55 Doug Berger 2020-04-29 712 val_8 = 0x45;
3e370952287c55 Doug Berger 2020-04-29 713 mask_8 = 0xFF;
3e370952287c55 Doug Berger 2020-04-29 714 bcmgenet_hfb_insert_data(f_data, ETH_HLEN +
offset,
3e370952287c55 Doug Berger 2020-04-29 715 &val_8, &mask_8,
3e370952287c55 Doug Berger 2020-04-29 716 sizeof(val_8));
3e370952287c55 Doug Berger 2020-04-29 717 size =
sizeof(fs->h_u.usr_ip4_spec.l4_4_bytes);
3e370952287c55 Doug Berger 2020-04-29 718 bcmgenet_hfb_insert_data(f_data,
3e370952287c55 Doug Berger 2020-04-29 719 ETH_HLEN + 20 + offset,
3e370952287c55 Doug Berger 2020-04-29 720
&fs->h_u.usr_ip4_spec.l4_4_bytes,
3e370952287c55 Doug Berger 2020-04-29 721
&fs->m_u.usr_ip4_spec.l4_4_bytes,
3e370952287c55 Doug Berger 2020-04-29 722 size);
3e370952287c55 Doug Berger 2020-04-29 723 f_length += DIV_ROUND_UP(size, 2);
3e370952287c55 Doug Berger 2020-04-29 724 break;
3e370952287c55 Doug Berger 2020-04-29 725 }
3e370952287c55 Doug Berger 2020-04-29 726
3e370952287c55 Doug Berger 2020-04-29 727 if (!fs->ring_cookie) {
3e370952287c55 Doug Berger 2020-04-29 728 /* Ring 0 flows can be handled by the
default Descriptor Ring
3e370952287c55 Doug Berger 2020-04-29 729 * We'll map them to ring 0, but
don't enable the filter
3e370952287c55 Doug Berger 2020-04-29 730 */
3e370952287c55 Doug Berger 2020-04-29 731 bcmgenet_hfb_set_filter(priv, f_data,
f_length, 0,
3e370952287c55 Doug Berger 2020-04-29 732 fs->location);
3e370952287c55 Doug Berger 2020-04-29 733 rule->state =
BCMGENET_RXNFC_STATE_DISABLED;
3e370952287c55 Doug Berger 2020-04-29 734 } else {
3e370952287c55 Doug Berger 2020-04-29 735 /* Other Rx rings are direct mapped here */
3e370952287c55 Doug Berger 2020-04-29 736 bcmgenet_hfb_set_filter(priv, f_data,
f_length,
3e370952287c55 Doug Berger 2020-04-29 737 fs->ring_cookie, fs->location);
3e370952287c55 Doug Berger 2020-04-29 738 bcmgenet_hfb_enable_filter(priv,
fs->location);
3e370952287c55 Doug Berger 2020-04-29 739 rule->state =
BCMGENET_RXNFC_STATE_ENABLED;
3e370952287c55 Doug Berger 2020-04-29 740 }
3e370952287c55 Doug Berger 2020-04-29 741
3e370952287c55 Doug Berger 2020-04-29 742 kfree(f_data);
3e370952287c55 Doug Berger 2020-04-29 743
3e370952287c55 Doug Berger 2020-04-29 744 return err;
3e370952287c55 Doug Berger 2020-04-29 745 }
3e370952287c55 Doug Berger 2020-04-29 746
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org