Messages in this thread | | | Date | Mon, 1 Jun 2020 18:24:34 +0800 | From | kbuild test robot <> | Subject | drivers/net/dsa/bcm_sf2_cfp.c:890:21: sparse: sparse: incorrect type in argument 1 (different base types) |
| |
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 3d77e6a8804abcc0504c904bd6e5cdf3a5cf8162 commit: 8b3abe304c5f1057b7bac70fd5576dfa67e3e2b3 net: dsa: bcm_sf2: Support specifying VLAN tag egress rule 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 8b3abe304c5f1057b7bac70fd5576dfa67e3e2b3 # 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 <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
drivers/net/dsa/bcm_sf2_cfp.c:352: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:352:44: sparse: expected restricted __be16 [usertype] vlan_m_tci drivers/net/dsa/bcm_sf2_cfp.c:352:44: sparse: got int drivers/net/dsa/bcm_sf2_cfp.c:633: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:633:43: sparse: expected restricted __be16 [usertype] vlan_m_tci drivers/net/dsa/bcm_sf2_cfp.c:633:43: sparse: got int drivers/net/dsa/bcm_sf2_cfp.c:890:21: sparse: sparse: cast from restricted __be32 >> drivers/net/dsa/bcm_sf2_cfp.c:890:21: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int [usertype] val @@ got restricted __be32 @@ drivers/net/dsa/bcm_sf2_cfp.c:890:21: sparse: expected unsigned int [usertype] val drivers/net/dsa/bcm_sf2_cfp.c:890:21: sparse: got restricted __be32 drivers/net/dsa/bcm_sf2_cfp.c:890:21: sparse: sparse: cast from restricted __be32 drivers/net/dsa/bcm_sf2_cfp.c:890:21: sparse: sparse: cast from restricted __be32 drivers/net/dsa/bcm_sf2_cfp.c:890:21: sparse: sparse: cast from restricted __be32 drivers/net/dsa/bcm_sf2_cfp.c:890:21: sparse: sparse: cast from restricted __be32 drivers/net/dsa/bcm_sf2_cfp.c:890:21: sparse: sparse: restricted __be32 degrades to integer
vim +890 drivers/net/dsa/bcm_sf2_cfp.c
845 846 static int bcm_sf2_cfp_rule_insert(struct dsa_switch *ds, int port, 847 struct ethtool_rx_flow_spec *fs) 848 { 849 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); 850 s8 cpu_port = dsa_to_port(ds, port)->cpu_dp->index; 851 __u64 ring_cookie = fs->ring_cookie; 852 struct switchdev_obj_port_vlan vlan; 853 unsigned int queue_num, port_num; 854 u16 vid; 855 int ret; 856 857 /* This rule is a Wake-on-LAN filter and we must specifically 858 * target the CPU port in order for it to be working. 859 */ 860 if (ring_cookie == RX_CLS_FLOW_WAKE) 861 ring_cookie = cpu_port * SF2_NUM_EGRESS_QUEUES; 862 863 /* We do not support discarding packets, check that the 864 * destination port is enabled and that we are within the 865 * number of ports supported by the switch 866 */ 867 port_num = ring_cookie / SF2_NUM_EGRESS_QUEUES; 868 869 if (ring_cookie == RX_CLS_FLOW_DISC || 870 !(dsa_is_user_port(ds, port_num) || 871 dsa_is_cpu_port(ds, port_num)) || 872 port_num >= priv->hw_params.num_ports) 873 return -EINVAL; 874 875 /* If the rule is matching a particular VLAN, make sure that we honor 876 * the matching and have it tagged or untagged on the destination port, 877 * we do this on egress with a VLAN entry. The egress tagging attribute 878 * is expected to be provided in h_ext.data[1] bit 0. A 1 means untagged, 879 * a 0 means tagged. 880 */ 881 if (fs->flow_type & FLOW_EXT) { 882 /* We cannot support matching multiple VLAN IDs yet */ 883 if ((be16_to_cpu(fs->m_ext.vlan_tci) & VLAN_VID_MASK) != 884 VLAN_VID_MASK) 885 return -EINVAL; 886 887 vid = be16_to_cpu(fs->h_ext.vlan_tci) & VLAN_VID_MASK; 888 vlan.vid_begin = vid; 889 vlan.vid_end = vid; > 890 if (cpu_to_be32(fs->h_ext.data[1]) & 1) 891 vlan.flags = BRIDGE_VLAN_INFO_UNTAGGED; 892 else 893 vlan.flags = 0; 894 895 ret = ds->ops->port_vlan_prepare(ds, port_num, &vlan); 896 if (ret) 897 return ret; 898 899 ds->ops->port_vlan_add(ds, port_num, &vlan); 900 } 901 902 /* 903 * We have a small oddity where Port 6 just does not have a 904 * valid bit here (so we substract by one). 905 */ 906 queue_num = ring_cookie % SF2_NUM_EGRESS_QUEUES; 907 if (port_num >= 7) 908 port_num -= 1; 909 910 switch (fs->flow_type & ~FLOW_EXT) { 911 case TCP_V4_FLOW: 912 case UDP_V4_FLOW: 913 ret = bcm_sf2_cfp_ipv4_rule_set(priv, port, port_num, 914 queue_num, fs); 915 break; 916 case TCP_V6_FLOW: 917 case UDP_V6_FLOW: 918 ret = bcm_sf2_cfp_ipv6_rule_set(priv, port, port_num, 919 queue_num, fs); 920 break; 921 default: 922 ret = -EINVAL; 923 break; 924 } 925 926 return ret; 927 } 928
--- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org [unhandled content-type:application/gzip] | |