All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com
Subject: drivers/net/ethernet/sgi/ioc3-eth.c:1017:59: sparse: sparse: incorrect type in argument 5 (different base types)
Date: Sun, 26 Mar 2023 06:02:12 +0800	[thread overview]
Message-ID: <202303260548.Bs8zMiwH-lkp@intel.com> (raw)

:::::: 
:::::: Manual check reason: "low confidence bisect report"
:::::: 

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: "Maciej W. Rozycki" <macro@orcam.me.uk>
CC: Thomas Bogendoerfer <tsbogend@alpha.franken.de>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   da8e7da11e4ba758caf4c149cc8d8cd555aefe5f
commit: 84aa85108b1b8af0d1d310e76975f421c5975e66 MIPS: Rewrite `csum_tcpudp_nofold' in plain C
date:   10 months ago
:::::: branch date: 81 minutes ago
:::::: commit date: 10 months ago
config: mips-randconfig-s042-20230326 (https://download.01.org/0day-ci/archive/20230326/202303260548.Bs8zMiwH-lkp@intel.com/config)
compiler: mips64el-linux-gcc (GCC) 12.1.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # apt-get install sparse
        # sparse version: v0.6.4-39-gce1a6720-dirty
        # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=84aa85108b1b8af0d1d310e76975f421c5975e66
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 84aa85108b1b8af0d1d310e76975f421c5975e66
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=mips olddefconfig
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=mips SHELL=/bin/bash drivers/net/ethernet/sgi/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Link: https://lore.kernel.org/r/202303260548.Bs8zMiwH-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
   drivers/net/ethernet/sgi/ioc3-eth.c:1247:35: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *mem @@     got unsigned int * @@
   drivers/net/ethernet/sgi/ioc3-eth.c:1247:35: sparse:     expected void volatile [noderef] __iomem *mem
   drivers/net/ethernet/sgi/ioc3-eth.c:1247:35: sparse:     got unsigned int *
   drivers/net/ethernet/sgi/ioc3-eth.c:1248:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] __iomem *mem @@     got unsigned int * @@
   drivers/net/ethernet/sgi/ioc3-eth.c:1248:24: sparse:     expected void const volatile [noderef] __iomem *mem
   drivers/net/ethernet/sgi/ioc3-eth.c:1248:24: sparse:     got unsigned int *
   drivers/net/ethernet/sgi/ioc3-eth.c:1251:35: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *mem @@     got unsigned int * @@
   drivers/net/ethernet/sgi/ioc3-eth.c:1251:35: sparse:     expected void volatile [noderef] __iomem *mem
   drivers/net/ethernet/sgi/ioc3-eth.c:1251:35: sparse:     got unsigned int *
   drivers/net/ethernet/sgi/ioc3-eth.c:1252:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] __iomem *mem @@     got unsigned int * @@
   drivers/net/ethernet/sgi/ioc3-eth.c:1252:24: sparse:     expected void const volatile [noderef] __iomem *mem
   drivers/net/ethernet/sgi/ioc3-eth.c:1252:24: sparse:     got unsigned int *
   drivers/net/ethernet/sgi/ioc3-eth.c:1269:37: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *mem @@     got unsigned int * @@
   drivers/net/ethernet/sgi/ioc3-eth.c:1269:37: sparse:     expected void volatile [noderef] __iomem *mem
   drivers/net/ethernet/sgi/ioc3-eth.c:1269:37: sparse:     got unsigned int *
   drivers/net/ethernet/sgi/ioc3-eth.c:1270:37: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *mem @@     got unsigned int * @@
   drivers/net/ethernet/sgi/ioc3-eth.c:1270:37: sparse:     expected void volatile [noderef] __iomem *mem
   drivers/net/ethernet/sgi/ioc3-eth.c:1270:37: sparse:     got unsigned int *
   drivers/net/ethernet/sgi/ioc3-eth.c:999:35: sparse: sparse: cast to restricted __be16
   drivers/net/ethernet/sgi/ioc3-eth.c:1016:45: sparse: sparse: restricted __be16 degrades to integer
   drivers/net/ethernet/sgi/ioc3-eth.c:1017:60: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected restricted __wsum [usertype] csum @@     got unsigned int [assigned] [usertype] ehsum @@
   drivers/net/ethernet/sgi/ioc3-eth.c:1017:60: sparse:     expected restricted __wsum [usertype] csum
   drivers/net/ethernet/sgi/ioc3-eth.c:1017:60: sparse:     got unsigned int [assigned] [usertype] ehsum
>> drivers/net/ethernet/sgi/ioc3-eth.c:1017:59: sparse: sparse: incorrect type in argument 5 (different base types) @@     expected restricted __wsum [usertype] isum @@     got restricted __sum16 @@
   drivers/net/ethernet/sgi/ioc3-eth.c:1017:59: sparse:     expected restricted __wsum [usertype] isum
   drivers/net/ethernet/sgi/ioc3-eth.c:1017:59: sparse:     got restricted __sum16
   drivers/net/ethernet/sgi/ioc3-eth.c:1015:22: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] csum @@     got restricted __wsum @@
   drivers/net/ethernet/sgi/ioc3-eth.c:1015:22: sparse:     expected unsigned int [usertype] csum
   drivers/net/ethernet/sgi/ioc3-eth.c:1015:22: sparse:     got restricted __wsum
   drivers/net/ethernet/sgi/ioc3-eth.c:1025:45: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __sum16 [usertype] check @@     got unsigned int [assigned] [usertype] csum @@
   drivers/net/ethernet/sgi/ioc3-eth.c:1025:45: sparse:     expected restricted __sum16 [usertype] check
   drivers/net/ethernet/sgi/ioc3-eth.c:1025:45: sparse:     got unsigned int [assigned] [usertype] csum
   drivers/net/ethernet/sgi/ioc3-eth.c:1029:45: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __sum16 [usertype] check @@     got unsigned int [assigned] [usertype] csum @@
   drivers/net/ethernet/sgi/ioc3-eth.c:1029:45: sparse:     expected restricted __sum16 [usertype] check
   drivers/net/ethernet/sgi/ioc3-eth.c:1029:45: sparse:     got unsigned int [assigned] [usertype] csum
   drivers/net/ethernet/sgi/ioc3-eth.c:1051:27: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] cmd @@     got restricted __be32 [usertype] @@
   drivers/net/ethernet/sgi/ioc3-eth.c:1051:27: sparse:     expected unsigned int [usertype] cmd
   drivers/net/ethernet/sgi/ioc3-eth.c:1051:27: sparse:     got restricted __be32 [usertype]
   drivers/net/ethernet/sgi/ioc3-eth.c:1052:30: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] bufcnt @@     got restricted __be32 [usertype] @@
   drivers/net/ethernet/sgi/ioc3-eth.c:1052:30: sparse:     expected unsigned int [usertype] bufcnt
   drivers/net/ethernet/sgi/ioc3-eth.c:1052:30: sparse:     got restricted __be32 [usertype]
   drivers/net/ethernet/sgi/ioc3-eth.c:1059:30: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] cmd @@     got restricted __be32 [usertype] @@
   drivers/net/ethernet/sgi/ioc3-eth.c:1059:30: sparse:     expected unsigned int [usertype] cmd
   drivers/net/ethernet/sgi/ioc3-eth.c:1059:30: sparse:     got restricted __be32 [usertype]
   drivers/net/ethernet/sgi/ioc3-eth.c:1061:30: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] bufcnt @@     got restricted __be32 [usertype] @@
   drivers/net/ethernet/sgi/ioc3-eth.c:1061:30: sparse:     expected unsigned int [usertype] bufcnt
   drivers/net/ethernet/sgi/ioc3-eth.c:1061:30: sparse:     got restricted __be32 [usertype]
   drivers/net/ethernet/sgi/ioc3-eth.c:1071:30: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned long long [usertype] p1 @@     got restricted __be64 [usertype] @@
   drivers/net/ethernet/sgi/ioc3-eth.c:1071:30: sparse:     expected unsigned long long [usertype] p1
   drivers/net/ethernet/sgi/ioc3-eth.c:1071:30: sparse:     got restricted __be64 [usertype]
   drivers/net/ethernet/sgi/ioc3-eth.c:1072:30: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned long long [usertype] p2 @@     got restricted __be64 [usertype] @@
   drivers/net/ethernet/sgi/ioc3-eth.c:1072:30: sparse:     expected unsigned long long [usertype] p2
   drivers/net/ethernet/sgi/ioc3-eth.c:1072:30: sparse:     got restricted __be64 [usertype]
   drivers/net/ethernet/sgi/ioc3-eth.c:1077:27: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] cmd @@     got restricted __be32 [usertype] @@
   drivers/net/ethernet/sgi/ioc3-eth.c:1077:27: sparse:     expected unsigned int [usertype] cmd
   drivers/net/ethernet/sgi/ioc3-eth.c:1077:27: sparse:     got restricted __be32 [usertype]
   drivers/net/ethernet/sgi/ioc3-eth.c:1078:30: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] bufcnt @@     got restricted __be32 [usertype] @@
   drivers/net/ethernet/sgi/ioc3-eth.c:1078:30: sparse:     expected unsigned int [usertype] bufcnt
   drivers/net/ethernet/sgi/ioc3-eth.c:1078:30: sparse:     got restricted __be32 [usertype]
   drivers/net/ethernet/sgi/ioc3-eth.c:1082:30: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned long long [usertype] p1 @@     got restricted __be64 [usertype] @@
   drivers/net/ethernet/sgi/ioc3-eth.c:1082:30: sparse:     expected unsigned long long [usertype] p1
   drivers/net/ethernet/sgi/ioc3-eth.c:1082:30: sparse:     got restricted __be64 [usertype]
   drivers/net/ethernet/sgi/ioc3-eth.c:1090:33: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *mem @@     got unsigned int * @@
   drivers/net/ethernet/sgi/ioc3-eth.c:1090:33: sparse:     expected void volatile [noderef] __iomem *mem
   drivers/net/ethernet/sgi/ioc3-eth.c:1090:33: sparse:     got unsigned int *
   drivers/net/ethernet/sgi/ioc3-eth.c:747:29: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *mem @@     got unsigned int * @@
   drivers/net/ethernet/sgi/ioc3-eth.c:747:29: sparse:     expected void volatile [noderef] __iomem *mem
   drivers/net/ethernet/sgi/ioc3-eth.c:747:29: sparse:     got unsigned int *
   drivers/net/ethernet/sgi/ioc3-eth.c:748:36: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *mem @@     got unsigned int * @@
   drivers/net/ethernet/sgi/ioc3-eth.c:748:36: sparse:     expected void volatile [noderef] __iomem *mem
   drivers/net/ethernet/sgi/ioc3-eth.c:748:36: sparse:     got unsigned int *
   drivers/net/ethernet/sgi/ioc3-eth.c:749:33: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *mem @@     got unsigned int * @@
   drivers/net/ethernet/sgi/ioc3-eth.c:749:33: sparse:     expected void volatile [noderef] __iomem *mem
   drivers/net/ethernet/sgi/ioc3-eth.c:749:33: sparse:     got unsigned int *
   drivers/net/ethernet/sgi/ioc3-eth.c:750:47: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *mem @@     got unsigned int * @@
   drivers/net/ethernet/sgi/ioc3-eth.c:750:47: sparse:     expected void volatile [noderef] __iomem *mem
   drivers/net/ethernet/sgi/ioc3-eth.c:750:47: sparse:     got unsigned int *
   drivers/net/ethernet/sgi/ioc3-eth.c:757:29: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *mem @@     got unsigned int * @@
   drivers/net/ethernet/sgi/ioc3-eth.c:757:29: sparse:     expected void volatile [noderef] __iomem *mem
   drivers/net/ethernet/sgi/ioc3-eth.c:757:29: sparse:     got unsigned int *
   drivers/net/ethernet/sgi/ioc3-eth.c:758:36: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *mem @@     got unsigned int * @@
   drivers/net/ethernet/sgi/ioc3-eth.c:758:36: sparse:     expected void volatile [noderef] __iomem *mem
   drivers/net/ethernet/sgi/ioc3-eth.c:758:36: sparse:     got unsigned int *
   drivers/net/ethernet/sgi/ioc3-eth.c:759:33: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *mem @@     got unsigned int * @@
   drivers/net/ethernet/sgi/ioc3-eth.c:759:33: sparse:     expected void volatile [noderef] __iomem *mem
   drivers/net/ethernet/sgi/ioc3-eth.c:759:33: sparse:     got unsigned int *
   drivers/net/ethernet/sgi/ioc3-eth.c:760:33: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *mem @@     got unsigned int * @@
   drivers/net/ethernet/sgi/ioc3-eth.c:760:33: sparse:     expected void volatile [noderef] __iomem *mem
   drivers/net/ethernet/sgi/ioc3-eth.c:760:33: sparse:     got unsigned int *
   drivers/net/ethernet/sgi/ioc3-eth.c:761:16: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] __iomem *mem @@     got unsigned int * @@
   drivers/net/ethernet/sgi/ioc3-eth.c:761:16: sparse:     expected void const volatile [noderef] __iomem *mem
   drivers/net/ethernet/sgi/ioc3-eth.c:761:16: sparse:     got unsigned int *
   drivers/net/ethernet/sgi/ioc3-eth.c:765:27: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *mem @@     got unsigned int * @@
   drivers/net/ethernet/sgi/ioc3-eth.c:765:27: sparse:     expected void volatile [noderef] __iomem *mem
   drivers/net/ethernet/sgi/ioc3-eth.c:765:27: sparse:     got unsigned int *
   drivers/net/ethernet/sgi/ioc3-eth.c:768:50: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *mem @@     got unsigned int * @@
   drivers/net/ethernet/sgi/ioc3-eth.c:768:50: sparse:     expected void volatile [noderef] __iomem *mem
   drivers/net/ethernet/sgi/ioc3-eth.c:768:50: sparse:     got unsigned int *
   drivers/net/ethernet/sgi/ioc3-eth.c:769:16: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] __iomem *mem @@     got unsigned int * @@
   drivers/net/ethernet/sgi/ioc3-eth.c:769:16: sparse:     expected void const volatile [noderef] __iomem *mem
   drivers/net/ethernet/sgi/ioc3-eth.c:769:16: sparse:     got unsigned int *
   drivers/net/ethernet/sgi/ioc3-eth.c:723:27: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *mem @@     got unsigned int * @@
   drivers/net/ethernet/sgi/ioc3-eth.c:723:27: sparse:     expected void volatile [noderef] __iomem *mem
   drivers/net/ethernet/sgi/ioc3-eth.c:723:27: sparse:     got unsigned int *
   drivers/net/ethernet/sgi/ioc3-eth.c:724:16: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] __iomem *mem @@     got unsigned int * @@
   drivers/net/ethernet/sgi/ioc3-eth.c:724:16: sparse:     expected void const volatile [noderef] __iomem *mem
   drivers/net/ethernet/sgi/ioc3-eth.c:724:16: sparse:     got unsigned int *
   drivers/net/ethernet/sgi/ioc3-eth.c:726:20: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *mem @@     got unsigned int * @@
   drivers/net/ethernet/sgi/ioc3-eth.c:726:20: sparse:     expected void volatile [noderef] __iomem *mem
   drivers/net/ethernet/sgi/ioc3-eth.c:726:20: sparse:     got unsigned int *
   drivers/net/ethernet/sgi/ioc3-eth.c:727:16: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] __iomem *mem @@     got unsigned int * @@
   drivers/net/ethernet/sgi/ioc3-eth.c:727:16: sparse:     expected void const volatile [noderef] __iomem *mem
   drivers/net/ethernet/sgi/ioc3-eth.c:727:16: sparse:     got unsigned int *
   drivers/net/ethernet/sgi/ioc3-eth.c:730:28: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *mem @@     got unsigned int * @@
   drivers/net/ethernet/sgi/ioc3-eth.c:730:28: sparse:     expected void volatile [noderef] __iomem *mem
   drivers/net/ethernet/sgi/ioc3-eth.c:730:28: sparse:     got unsigned int *
   drivers/net/ethernet/sgi/ioc3-eth.c:731:16: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] __iomem *mem @@     got unsigned int * @@
   drivers/net/ethernet/sgi/ioc3-eth.c:731:16: sparse:     expected void const volatile [noderef] __iomem *mem
   drivers/net/ethernet/sgi/ioc3-eth.c:731:16: sparse:     got unsigned int *
   drivers/net/ethernet/sgi/ioc3-eth.c:732:21: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *mem @@     got unsigned int * @@
   drivers/net/ethernet/sgi/ioc3-eth.c:732:21: sparse:     expected void volatile [noderef] __iomem *mem
   drivers/net/ethernet/sgi/ioc3-eth.c:732:21: sparse:     got unsigned int *
   drivers/net/ethernet/sgi/ioc3-eth.c:733:20: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] __iomem *mem @@     got unsigned int * @@
   drivers/net/ethernet/sgi/ioc3-eth.c:733:20: sparse:     expected void volatile [noderef] __iomem *mem

vim +1017 drivers/net/ethernet/sgi/ioc3-eth.c

^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16   979  
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16   980  
28d304efb88f18 drivers/net/ethernet/sgi/ioc3-eth.c YueHaibing               2018-09-21   981  static netdev_tx_t ioc3_start_xmit(struct sk_buff *skb, struct net_device *dev)
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16   982  {
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16   983  	struct ioc3_private *ip = netdev_priv(dev);
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16   984  	struct ioc3_etxd *desc;
cbe7d51745f933 drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30   985  	unsigned long data;
cbe7d51745f933 drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30   986  	unsigned int len;
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16   987  	int produce;
c1b6a3d85d3f2a drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30   988  	u32 w0 = 0;
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16   989  
c1b6a3d85d3f2a drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30   990  	/* IOC3 has a fairly simple minded checksumming hardware which simply
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16   991  	 * adds up the 1's complement checksum for the entire packet and
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16   992  	 * inserts it at an offset which can be specified in the descriptor
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16   993  	 * into the transmit packet.  This means we have to compensate for the
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16   994  	 * MAC header which should not be summed and the TCP/UDP pseudo headers
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16   995  	 * manually.
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16   996  	 */
84fa7933a33f80 drivers/net/ioc3-eth.c              Patrick McHardy          2006-08-29   997  	if (skb->ip_summed == CHECKSUM_PARTIAL) {
eddc9ec53be2ec drivers/net/ioc3-eth.c              Arnaldo Carvalho de Melo 2007-04-20   998  		const struct iphdr *ih = ip_hdr(skb);
eddc9ec53be2ec drivers/net/ioc3-eth.c              Arnaldo Carvalho de Melo 2007-04-20   999  		const int proto = ntohs(ih->protocol);
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1000  		unsigned int csoff;
c1b6a3d85d3f2a drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1001  		u32 csum, ehsum;
c1b6a3d85d3f2a drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1002  		u16 *eh;
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1003  
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1004  		/* The MAC header.  skb->mac seem the logic approach
c1b6a3d85d3f2a drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1005  		 * to find the MAC header - except it's a NULL pointer ...
c1b6a3d85d3f2a drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1006  		 */
c1b6a3d85d3f2a drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1007  		eh = (u16 *)skb->data;
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1008  
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1009  		/* Sum up dest addr, src addr and protocol  */
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1010  		ehsum = eh[0] + eh[1] + eh[2] + eh[3] + eh[4] + eh[5] + eh[6];
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1011  
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1012  		/* Skip IP header; it's sum is always zero and was
c1b6a3d85d3f2a drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1013  		 * already filled in by ip_output.c
c1b6a3d85d3f2a drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1014  		 */
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1015  		csum = csum_tcpudp_nofold(ih->saddr, ih->daddr,
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1016  					  ih->tot_len - (ih->ihl << 2),
8dff19a6dcb8bc drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30 @1017  					  proto, csum_fold(ehsum));
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1018  
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1019  		csum = (csum & 0xffff) + (csum >> 16);	/* Fold again */
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1020  		csum = (csum & 0xffff) + (csum >> 16);
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1021  
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1022  		csoff = ETH_HLEN + (ih->ihl << 2);
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1023  		if (proto == IPPROTO_UDP) {
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1024  			csoff += offsetof(struct udphdr, check);
4bedb45203eab9 drivers/net/ioc3-eth.c              Arnaldo Carvalho de Melo 2007-03-13  1025  			udp_hdr(skb)->check = csum;
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1026  		}
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1027  		if (proto == IPPROTO_TCP) {
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1028  			csoff += offsetof(struct tcphdr, check);
aa8223c7bb0b05 drivers/net/ioc3-eth.c              Arnaldo Carvalho de Melo 2007-04-10  1029  			tcp_hdr(skb)->check = csum;
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1030  		}
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1031  
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1032  		w0 = ETXD_DOCHECKSUM | (csoff << ETXD_CHKOFF_SHIFT);
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1033  	}
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1034  
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1035  	spin_lock_irq(&ip->ioc3_lock);
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1036  
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1037  	data = (unsigned long)skb->data;
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1038  	len = skb->len;
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1039  
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1040  	produce = ip->tx_pi;
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1041  	desc = &ip->txr[produce];
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1042  
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1043  	if (len <= 104) {
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1044  		/* Short packet, let's copy it directly into the ring.  */
d626f62b11e00c drivers/net/ioc3-eth.c              Arnaldo Carvalho de Melo 2007-03-27  1045  		skb_copy_from_linear_data(skb, desc->data, skb->len);
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1046  		if (len < ETH_ZLEN) {
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1047  			/* Very short packet, pad with zeros at the end. */
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1048  			memset(desc->data + len, 0, ETH_ZLEN - len);
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1049  			len = ETH_ZLEN;
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1050  		}
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1051  		desc->cmd = cpu_to_be32(len | ETXD_INTWHENDONE | ETXD_D0V | w0);
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1052  		desc->bufcnt = cpu_to_be32(len);
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1053  	} else if ((data ^ (data + len - 1)) & 0x4000) {
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1054  		unsigned long b2 = (data | 0x3fffUL) + 1UL;
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1055  		unsigned long s1 = b2 - data;
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1056  		unsigned long s2 = data + len - b2;
ed870f6a7aa212 drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1057  		dma_addr_t d1, d2;
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1058  
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1059  		desc->cmd    = cpu_to_be32(len | ETXD_INTWHENDONE |
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1060  					   ETXD_B1V | ETXD_B2V | w0);
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1061  		desc->bufcnt = cpu_to_be32((s1 << ETXD_B1CNT_SHIFT) |
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1062  					   (s2 << ETXD_B2CNT_SHIFT));
ed870f6a7aa212 drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1063  		d1 = dma_map_single(ip->dma_dev, skb->data, s1, DMA_TO_DEVICE);
ed870f6a7aa212 drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1064  		if (dma_mapping_error(ip->dma_dev, d1))
ed870f6a7aa212 drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1065  			goto drop_packet;
ed870f6a7aa212 drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1066  		d2 = dma_map_single(ip->dma_dev, (void *)b2, s1, DMA_TO_DEVICE);
ed870f6a7aa212 drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1067  		if (dma_mapping_error(ip->dma_dev, d2)) {
ed870f6a7aa212 drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1068  			dma_unmap_single(ip->dma_dev, d1, len, DMA_TO_DEVICE);
ed870f6a7aa212 drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1069  			goto drop_packet;
ed870f6a7aa212 drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1070  		}
ed870f6a7aa212 drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1071  		desc->p1     = cpu_to_be64(ioc3_map(d1, PCI64_ATTR_PREF));
ed870f6a7aa212 drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1072  		desc->p2     = cpu_to_be64(ioc3_map(d2, PCI64_ATTR_PREF));
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1073  	} else {
ed870f6a7aa212 drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1074  		dma_addr_t d;
ed870f6a7aa212 drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1075  
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1076  		/* Normal sized packet that doesn't cross a page boundary. */
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1077  		desc->cmd = cpu_to_be32(len | ETXD_INTWHENDONE | ETXD_B1V | w0);
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1078  		desc->bufcnt = cpu_to_be32(len << ETXD_B1CNT_SHIFT);
ed870f6a7aa212 drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1079  		d = dma_map_single(ip->dma_dev, skb->data, len, DMA_TO_DEVICE);
ed870f6a7aa212 drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1080  		if (dma_mapping_error(ip->dma_dev, d))
ed870f6a7aa212 drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1081  			goto drop_packet;
ed870f6a7aa212 drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1082  		desc->p1     = cpu_to_be64(ioc3_map(d, PCI64_ATTR_PREF));
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1083  	}
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1084  
c1b6a3d85d3f2a drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1085  	mb(); /* make sure all descriptor changes are visible */
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1086  
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1087  	ip->tx_skbs[produce] = skb;			/* Remember skb */
141a7dbb886f39 drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1088  	produce = (produce + 1) & TX_RING_MASK;
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1089  	ip->tx_pi = produce;
cbe7d51745f933 drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1090  	writel(produce << 7, &ip->regs->etpir);		/* Fire ... */
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1091  
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1092  	ip->txqlen++;
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1093  
141a7dbb886f39 drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1094  	if (ip->txqlen >= (TX_RING_ENTRIES - 1))
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1095  		netif_stop_queue(dev);
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1096  
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1097  	spin_unlock_irq(&ip->ioc3_lock);
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1098  
ed870f6a7aa212 drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1099  	return NETDEV_TX_OK;
ed870f6a7aa212 drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1100  
ed870f6a7aa212 drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1101  drop_packet:
ed870f6a7aa212 drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1102  	dev_kfree_skb_any(skb);
ed870f6a7aa212 drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1103  	dev->stats.tx_dropped++;
ed870f6a7aa212 drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1104  
ed870f6a7aa212 drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1105  	spin_unlock_irq(&ip->ioc3_lock);
ed870f6a7aa212 drivers/net/ethernet/sgi/ioc3-eth.c Thomas Bogendoerfer      2019-08-30  1106  
6ed106549d1747 drivers/net/ioc3-eth.c              Patrick McHardy          2009-06-23  1107  	return NETDEV_TX_OK;
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1108  }
^1da177e4c3f41 drivers/net/ioc3-eth.c              Linus Torvalds           2005-04-16  1109  

:::::: The code at line 1017 was first introduced by commit
:::::: 8dff19a6dcb8bcab8bed86e60c8033aaf0a13646 net: sgi: ioc3-eth: use csum_fold

:::::: TO: Thomas Bogendoerfer <tbogendoerfer@suse.de>
:::::: CC: David S. Miller <davem@davemloft.net>

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests

             reply	other threads:[~2023-03-25 22:02 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-25 22:02 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2023-06-05 12:52 drivers/net/ethernet/sgi/ioc3-eth.c:1017:59: sparse: sparse: incorrect type in argument 5 (different base types) kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202303260548.Bs8zMiwH-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=oe-kbuild@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.