tree: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git master head: 36d2f761b5aa688567b6aebdc6d68e73682275d4 commit: 2ce9c93eaca6c67e3fa8828a471738a32cd66770 [1941/1953] qede: Ingress tc flower offload (drop action) support. reproduce: # apt-get install sparse git checkout 2ce9c93eaca6c67e3fa8828a471738a32cd66770 make ARCH=x86_64 allmodconfig make C=1 CF=-D__CHECK_ENDIAN__
sparse warnings: (new ones prefixed by >>) include/linux/overflow.h:220:13: sparse: undefined identifier '__builtin_mul_overflow' include/linux/overflow.h:220:13: sparse: incorrect type in conditional include/linux/overflow.h:220:13: got void >> drivers/net/ethernet/qlogic/qede/qede_filter.c:2048:38: sparse: restricted >> __be16 degrades to integer drivers/net/ethernet/qlogic/qede/qede_filter.c:2049:38: sparse: restricted __be16 degrades to integer >> drivers/net/ethernet/qlogic/qede/qede_filter.c:2115:38: sparse: restricted >> __be32 degrades to integer drivers/net/ethernet/qlogic/qede/qede_filter.c:2116:38: sparse: restricted __be32 degrades to integer include/linux/overflow.h:220:13: sparse: call with no type! vim +2048 drivers/net/ethernet/qlogic/qede/qede_filter.c 2032 2033 static int 2034 qede_tc_parse_ports(struct qede_dev *edev, 2035 struct tc_cls_flower_offload *f, 2036 struct qede_arfs_tuple *t) 2037 { 2038 if (dissector_uses_key(f->dissector, FLOW_DISSECTOR_KEY_PORTS)) { 2039 struct flow_dissector_key_ports *key, *mask; 2040 2041 key = skb_flow_dissector_target(f->dissector, 2042 FLOW_DISSECTOR_KEY_PORTS, 2043 f->key); 2044 mask = skb_flow_dissector_target(f->dissector, 2045 FLOW_DISSECTOR_KEY_PORTS, 2046 f->mask); 2047 > 2048 if ((key->src && mask->src != U16_MAX) || 2049 (key->dst && mask->dst != U16_MAX)) { 2050 DP_NOTICE(edev, "Do not support ports masks\n"); 2051 return -EINVAL; 2052 } 2053 2054 t->src_port = key->src; 2055 t->dst_port = key->dst; 2056 } 2057 2058 return 0; 2059 } 2060 2061 static int 2062 qede_tc_parse_v6_common(struct qede_dev *edev, 2063 struct tc_cls_flower_offload *f, 2064 struct qede_arfs_tuple *t) 2065 { 2066 struct in6_addr zero_addr, addr; 2067 2068 memset(&zero_addr, 0, sizeof(addr)); 2069 memset(&addr, 0xff, sizeof(addr)); 2070 2071 if (dissector_uses_key(f->dissector, FLOW_DISSECTOR_KEY_IPV6_ADDRS)) { 2072 struct flow_dissector_key_ipv6_addrs *key, *mask; 2073 2074 key = skb_flow_dissector_target(f->dissector, 2075 FLOW_DISSECTOR_KEY_IPV6_ADDRS, 2076 f->key); 2077 mask = skb_flow_dissector_target(f->dissector, 2078 FLOW_DISSECTOR_KEY_IPV6_ADDRS, 2079 f->mask); 2080 2081 if ((memcmp(&key->src, &zero_addr, sizeof(addr)) && 2082 memcmp(&mask->src, &addr, sizeof(addr))) || 2083 (memcmp(&key->dst, &zero_addr, sizeof(addr)) && 2084 memcmp(&mask->dst, &addr, sizeof(addr)))) { 2085 DP_NOTICE(edev, 2086 "Do not support IPv6 address prefix/mask\n"); 2087 return -EINVAL; 2088 } 2089 2090 memcpy(&t->src_ipv6, &key->src, sizeof(addr)); 2091 memcpy(&t->dst_ipv6, &key->dst, sizeof(addr)); 2092 } 2093 2094 if (qede_tc_parse_ports(edev, f, t)) 2095 return -EINVAL; 2096 2097 return qede_set_v6_tuple_to_profile(edev, t, &zero_addr); 2098 } 2099 2100 static int 2101 qede_tc_parse_v4_common(struct qede_dev *edev, 2102 struct tc_cls_flower_offload *f, 2103 struct qede_arfs_tuple *t) 2104 { 2105 if (dissector_uses_key(f->dissector, FLOW_DISSECTOR_KEY_IPV4_ADDRS)) { 2106 struct flow_dissector_key_ipv4_addrs *key, *mask; 2107 2108 key = skb_flow_dissector_target(f->dissector, 2109 FLOW_DISSECTOR_KEY_IPV4_ADDRS, 2110 f->key); 2111 mask = skb_flow_dissector_target(f->dissector, 2112 FLOW_DISSECTOR_KEY_IPV4_ADDRS, 2113 f->mask); 2114 > 2115 if ((key->src && mask->src != U32_MAX) || 2116 (key->dst && mask->dst != U32_MAX)) { 2117 DP_NOTICE(edev, "Do not support ipv4 prefix/masks\n"); 2118 return -EINVAL; 2119 } 2120 2121 t->src_ipv4 = key->src; 2122 t->dst_ipv4 = key->dst; 2123 } 2124 2125 if (qede_tc_parse_ports(edev, f, t)) 2126 return -EINVAL; 2127 2128 return qede_set_v4_tuple_to_profile(edev, t); 2129 } 2130 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation