CC: kbuild-...@lists.01.org CC: linux-ker...@vger.kernel.org TO: "Florian, Fainelli," <f.faine...@gmail.com>
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 :::::: branch date: 14 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 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 <l...@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 # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8b3abe304c5f1057b7bac70fd5576dfa67e3e2b3 git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git remote update linus git checkout 8b3abe304c5f1057b7bac70fd5576dfa67e3e2b3 vim +890 drivers/net/dsa/bcm_sf2_cfp.c ba0696c22e7c5b Florian Fainelli 2017-10-20 845 ce24b08a2e6f7c Florian Fainelli 2018-11-06 846 static int bcm_sf2_cfp_rule_insert(struct dsa_switch *ds, int port, 3306145866b62f Florian Fainelli 2017-10-20 847 struct ethtool_rx_flow_spec *fs) 3306145866b62f Florian Fainelli 2017-10-20 848 { 3306145866b62f Florian Fainelli 2017-10-20 849 struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); 68bb8ea8ad0d49 Vivien Didelot 2019-10-21 850 s8 cpu_port = dsa_to_port(ds, port)->cpu_dp->index; 8a75f4f2acd78a Florian Fainelli 2018-08-07 851 __u64 ring_cookie = fs->ring_cookie; 8b3abe304c5f10 Florian Fainelli 2020-03-30 852 struct switchdev_obj_port_vlan vlan; 3306145866b62f Florian Fainelli 2017-10-20 853 unsigned int queue_num, port_num; 8b3abe304c5f10 Florian Fainelli 2020-03-30 854 u16 vid; ce24b08a2e6f7c Florian Fainelli 2018-11-06 855 int ret; ae7a5aff783c79 Florian Fainelli 2018-11-06 856 8a75f4f2acd78a Florian Fainelli 2018-08-07 857 /* This rule is a Wake-on-LAN filter and we must specifically 8a75f4f2acd78a Florian Fainelli 2018-08-07 858 * target the CPU port in order for it to be working. 8a75f4f2acd78a Florian Fainelli 2018-08-07 859 */ 8a75f4f2acd78a Florian Fainelli 2018-08-07 860 if (ring_cookie == RX_CLS_FLOW_WAKE) 8a75f4f2acd78a Florian Fainelli 2018-08-07 861 ring_cookie = cpu_port * SF2_NUM_EGRESS_QUEUES; 8a75f4f2acd78a Florian Fainelli 2018-08-07 862 3306145866b62f Florian Fainelli 2017-10-20 863 /* We do not support discarding packets, check that the 3306145866b62f Florian Fainelli 2017-10-20 864 * destination port is enabled and that we are within the 3306145866b62f Florian Fainelli 2017-10-20 865 * number of ports supported by the switch 3306145866b62f Florian Fainelli 2017-10-20 866 */ 8a75f4f2acd78a Florian Fainelli 2018-08-07 867 port_num = ring_cookie / SF2_NUM_EGRESS_QUEUES; 3306145866b62f Florian Fainelli 2017-10-20 868 8a75f4f2acd78a Florian Fainelli 2018-08-07 869 if (ring_cookie == RX_CLS_FLOW_DISC || 2104bc0ab0eee8 Florian Fainelli 2018-08-03 870 !(dsa_is_user_port(ds, port_num) || 2104bc0ab0eee8 Florian Fainelli 2018-08-03 871 dsa_is_cpu_port(ds, port_num)) || 3306145866b62f Florian Fainelli 2017-10-20 872 port_num >= priv->hw_params.num_ports) 3306145866b62f Florian Fainelli 2017-10-20 873 return -EINVAL; 8b3abe304c5f10 Florian Fainelli 2020-03-30 874 8b3abe304c5f10 Florian Fainelli 2020-03-30 875 /* If the rule is matching a particular VLAN, make sure that we honor 8b3abe304c5f10 Florian Fainelli 2020-03-30 876 * the matching and have it tagged or untagged on the destination port, 8b3abe304c5f10 Florian Fainelli 2020-03-30 877 * we do this on egress with a VLAN entry. The egress tagging attribute 8b3abe304c5f10 Florian Fainelli 2020-03-30 878 * is expected to be provided in h_ext.data[1] bit 0. A 1 means untagged, 8b3abe304c5f10 Florian Fainelli 2020-03-30 879 * a 0 means tagged. 8b3abe304c5f10 Florian Fainelli 2020-03-30 880 */ 8b3abe304c5f10 Florian Fainelli 2020-03-30 881 if (fs->flow_type & FLOW_EXT) { 8b3abe304c5f10 Florian Fainelli 2020-03-30 882 /* We cannot support matching multiple VLAN IDs yet */ 8b3abe304c5f10 Florian Fainelli 2020-03-30 883 if ((be16_to_cpu(fs->m_ext.vlan_tci) & VLAN_VID_MASK) != 8b3abe304c5f10 Florian Fainelli 2020-03-30 884 VLAN_VID_MASK) 8b3abe304c5f10 Florian Fainelli 2020-03-30 885 return -EINVAL; 8b3abe304c5f10 Florian Fainelli 2020-03-30 886 8b3abe304c5f10 Florian Fainelli 2020-03-30 887 vid = be16_to_cpu(fs->h_ext.vlan_tci) & VLAN_VID_MASK; 8b3abe304c5f10 Florian Fainelli 2020-03-30 888 vlan.vid_begin = vid; 8b3abe304c5f10 Florian Fainelli 2020-03-30 889 vlan.vid_end = vid; 8b3abe304c5f10 Florian Fainelli 2020-03-30 @890 if (cpu_to_be32(fs->h_ext.data[1]) & 1) 8b3abe304c5f10 Florian Fainelli 2020-03-30 891 vlan.flags = BRIDGE_VLAN_INFO_UNTAGGED; 8b3abe304c5f10 Florian Fainelli 2020-03-30 892 else 8b3abe304c5f10 Florian Fainelli 2020-03-30 893 vlan.flags = 0; 8b3abe304c5f10 Florian Fainelli 2020-03-30 894 8b3abe304c5f10 Florian Fainelli 2020-03-30 895 ret = ds->ops->port_vlan_prepare(ds, port_num, &vlan); 8b3abe304c5f10 Florian Fainelli 2020-03-30 896 if (ret) 8b3abe304c5f10 Florian Fainelli 2020-03-30 897 return ret; 8b3abe304c5f10 Florian Fainelli 2020-03-30 898 8b3abe304c5f10 Florian Fainelli 2020-03-30 899 ds->ops->port_vlan_add(ds, port_num, &vlan); 8b3abe304c5f10 Florian Fainelli 2020-03-30 900 } 8b3abe304c5f10 Florian Fainelli 2020-03-30 901 3306145866b62f Florian Fainelli 2017-10-20 902 /* 3306145866b62f Florian Fainelli 2017-10-20 903 * We have a small oddity where Port 6 just does not have a 3306145866b62f Florian Fainelli 2017-10-20 904 * valid bit here (so we substract by one). 3306145866b62f Florian Fainelli 2017-10-20 905 */ 8a75f4f2acd78a Florian Fainelli 2018-08-07 906 queue_num = ring_cookie % SF2_NUM_EGRESS_QUEUES; 3306145866b62f Florian Fainelli 2017-10-20 907 if (port_num >= 7) 3306145866b62f Florian Fainelli 2017-10-20 908 port_num -= 1; 3306145866b62f Florian Fainelli 2017-10-20 909 ba0696c22e7c5b Florian Fainelli 2017-10-20 910 switch (fs->flow_type & ~FLOW_EXT) { ba0696c22e7c5b Florian Fainelli 2017-10-20 911 case TCP_V4_FLOW: ba0696c22e7c5b Florian Fainelli 2017-10-20 912 case UDP_V4_FLOW: ba0696c22e7c5b Florian Fainelli 2017-10-20 913 ret = bcm_sf2_cfp_ipv4_rule_set(priv, port, port_num, ba0696c22e7c5b Florian Fainelli 2017-10-20 914 queue_num, fs); ba0696c22e7c5b Florian Fainelli 2017-10-20 915 break; ba0696c22e7c5b Florian Fainelli 2017-10-20 916 case TCP_V6_FLOW: ba0696c22e7c5b Florian Fainelli 2017-10-20 917 case UDP_V6_FLOW: ba0696c22e7c5b Florian Fainelli 2017-10-20 918 ret = bcm_sf2_cfp_ipv6_rule_set(priv, port, port_num, ba0696c22e7c5b Florian Fainelli 2017-10-20 919 queue_num, fs); ba0696c22e7c5b Florian Fainelli 2017-10-20 920 break; ba0696c22e7c5b Florian Fainelli 2017-10-20 921 default: ae7a5aff783c79 Florian Fainelli 2018-11-06 922 ret = -EINVAL; ba0696c22e7c5b Florian Fainelli 2017-10-20 923 break; ba0696c22e7c5b Florian Fainelli 2017-10-20 924 } 3306145866b62f Florian Fainelli 2017-10-20 925 ce24b08a2e6f7c Florian Fainelli 2018-11-06 926 return ret; ce24b08a2e6f7c Florian Fainelli 2018-11-06 927 } ce24b08a2e6f7c Florian Fainelli 2018-11-06 928 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- kbuild@lists.01.org To unsubscribe send an email to kbuild-le...@lists.01.org