[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <201902241040.HnDWRCfY%fengguang.wu@intel.com>
Date: Sun, 24 Feb 2019 10:57:06 +0800
From: kbuild test robot <lkp@...el.com>
To: wenxu@...oud.cn
Cc: kbuild-all@...org, nikolay@...ulusnetworks.com,
davem@...emloft.net, netdev@...r.kernel.org
Subject: Re: [PATCH net-next v3] route: Add multipath_hash in flowi_common to
make user-define hash
Hi wenxu,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on net-next/master]
url: https://github.com/0day-ci/linux/commits/wenxu-ucloud-cn/route-Add-multipath_hash-in-flowi_common-to-make-user-define-hash/20190224-075532
reproduce:
# apt-get install sparse
make ARCH=x86_64 allmodconfig
make C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
All warnings (new ones prefixed by >>):
net/ipv4/route.c:771:46: sparse: warning: incorrect type in argument 2 (different base types)
net/ipv4/route.c:771:46: sparse: expected unsigned int [usertype] key
net/ipv4/route.c:771:46: sparse: got restricted __be32 [usertype] new_gw
>> net/ipv4/route.c:1823:35: sparse: warning: incorrect type in initializer (different base types)
net/ipv4/route.c:1823:35: sparse: expected unsigned int [usertype] multipath_hash
net/ipv4/route.c:1823:35: sparse: got restricted __be32 const [usertype] flowic_multipath_hash
net/ipv4/route.c:2746:27: sparse: warning: incorrect type in assignment (different base types)
net/ipv4/route.c:2746:27: sparse: expected restricted __be16 [usertype] len
net/ipv4/route.c:2746:27: sparse: got unsigned long
--
>> include/net/ip_tunnels.h:254:36: sparse: warning: incorrect type in assignment (different base types)
include/net/ip_tunnels.h:254:36: sparse: expected restricted __be32 [usertype] flowic_multipath_hash
include/net/ip_tunnels.h:254:36: sparse: got unsigned int [usertype] tun_inner_hash
>> include/net/ip_tunnels.h:254:36: sparse: warning: incorrect type in assignment (different base types)
include/net/ip_tunnels.h:254:36: sparse: expected restricted __be32 [usertype] flowic_multipath_hash
include/net/ip_tunnels.h:254:36: sparse: got unsigned int [usertype] tun_inner_hash
>> include/net/ip_tunnels.h:254:36: sparse: warning: incorrect type in assignment (different base types)
include/net/ip_tunnels.h:254:36: sparse: expected restricted __be32 [usertype] flowic_multipath_hash
include/net/ip_tunnels.h:254:36: sparse: got unsigned int [usertype] tun_inner_hash
--
>> include/net/ip_tunnels.h:254:36: sparse: warning: incorrect type in assignment (different base types)
include/net/ip_tunnels.h:254:36: sparse: expected restricted __be32 [usertype] flowic_multipath_hash
include/net/ip_tunnels.h:254:36: sparse: got unsigned int [usertype] tun_inner_hash
sparse warnings: (new ones prefixed by >>)
net/ipv4/route.c:771:46: sparse: warning: incorrect type in argument 2 (different base types)
net/ipv4/route.c:771:46: sparse: expected unsigned int [usertype] key
net/ipv4/route.c:771:46: sparse: got restricted __be32 [usertype] new_gw
net/ipv4/route.c:1823:35: sparse: warning: incorrect type in initializer (different base types)
>> net/ipv4/route.c:1823:35: sparse: expected unsigned int [usertype] multipath_hash
>> net/ipv4/route.c:1823:35: sparse: got restricted __be32 const [usertype] flowic_multipath_hash
net/ipv4/route.c:2746:27: sparse: warning: incorrect type in assignment (different base types)
net/ipv4/route.c:2746:27: sparse: expected restricted __be16 [usertype] len
net/ipv4/route.c:2746:27: sparse: got unsigned long
--
include/net/ip_tunnels.h:254:36: sparse: warning: incorrect type in assignment (different base types)
>> include/net/ip_tunnels.h:254:36: sparse: expected restricted __be32 [usertype] flowic_multipath_hash
>> include/net/ip_tunnels.h:254:36: sparse: got unsigned int [usertype] tun_inner_hash
include/net/ip_tunnels.h:254:36: sparse: warning: incorrect type in assignment (different base types)
>> include/net/ip_tunnels.h:254:36: sparse: expected restricted __be32 [usertype] flowic_multipath_hash
>> include/net/ip_tunnels.h:254:36: sparse: got unsigned int [usertype] tun_inner_hash
include/net/ip_tunnels.h:254:36: sparse: warning: incorrect type in assignment (different base types)
>> include/net/ip_tunnels.h:254:36: sparse: expected restricted __be32 [usertype] flowic_multipath_hash
>> include/net/ip_tunnels.h:254:36: sparse: got unsigned int [usertype] tun_inner_hash
--
include/net/ip_tunnels.h:254:36: sparse: warning: incorrect type in assignment (different base types)
>> include/net/ip_tunnels.h:254:36: sparse: expected restricted __be32 [usertype] flowic_multipath_hash
>> include/net/ip_tunnels.h:254:36: sparse: got unsigned int [usertype] tun_inner_hash
vim +1823 net/ipv4/route.c
1818
1819 /* if skb is set it will be used and fl4 can be NULL */
1820 int fib_multipath_hash(const struct net *net, const struct flowi4 *fl4,
1821 const struct sk_buff *skb, struct flow_keys *flkeys)
1822 {
> 1823 u32 multipath_hash = fl4->flowi4_multipath_hash;
1824 struct flow_keys hash_keys;
1825 u32 mhash;
1826
1827 switch (net->ipv4.sysctl_fib_multipath_hash_policy) {
1828 case 0:
1829 memset(&hash_keys, 0, sizeof(hash_keys));
1830 hash_keys.control.addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS;
1831 if (skb) {
1832 ip_multipath_l3_keys(skb, &hash_keys);
1833 } else {
1834 hash_keys.addrs.v4addrs.src = fl4->saddr;
1835 hash_keys.addrs.v4addrs.dst = fl4->daddr;
1836 }
1837 break;
1838 case 1:
1839 /* skb is currently provided only when forwarding */
1840 if (skb) {
1841 unsigned int flag = FLOW_DISSECTOR_F_STOP_AT_ENCAP;
1842 struct flow_keys keys;
1843
1844 /* short-circuit if we already have L4 hash present */
1845 if (skb->l4_hash)
1846 return skb_get_hash_raw(skb) >> 1;
1847
1848 memset(&hash_keys, 0, sizeof(hash_keys));
1849
1850 if (!flkeys) {
1851 skb_flow_dissect_flow_keys(skb, &keys, flag);
1852 flkeys = &keys;
1853 }
1854
1855 hash_keys.control.addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS;
1856 hash_keys.addrs.v4addrs.src = flkeys->addrs.v4addrs.src;
1857 hash_keys.addrs.v4addrs.dst = flkeys->addrs.v4addrs.dst;
1858 hash_keys.ports.src = flkeys->ports.src;
1859 hash_keys.ports.dst = flkeys->ports.dst;
1860 hash_keys.basic.ip_proto = flkeys->basic.ip_proto;
1861 } else {
1862 memset(&hash_keys, 0, sizeof(hash_keys));
1863 hash_keys.control.addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS;
1864 hash_keys.addrs.v4addrs.src = fl4->saddr;
1865 hash_keys.addrs.v4addrs.dst = fl4->daddr;
1866 hash_keys.ports.src = fl4->fl4_sport;
1867 hash_keys.ports.dst = fl4->fl4_dport;
1868 hash_keys.basic.ip_proto = fl4->flowi4_proto;
1869 }
1870 break;
1871 }
1872 mhash = flow_hash_from_keys(&hash_keys);
1873
1874 if (multipath_hash)
1875 mhash = jhash_2words(mhash, multipath_hash, 0);
1876
1877 return mhash >> 1;
1878 }
1879 #endif /* CONFIG_IP_ROUTE_MULTIPATH */
1880
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
Download attachment ".config.gz" of type "application/gzip" (67279 bytes)
Powered by blists - more mailing lists