* drivers/net/ethernet/sgi/ioc3-eth.c:1017:59: sparse: sparse: incorrect type in argument 5 (different base types)
@ 2023-03-25 22:02 kernel test robot
0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2023-03-25 22:02 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp
::::::
:::::: 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
^ permalink raw reply [flat|nested] 2+ messages in thread
* drivers/net/ethernet/sgi/ioc3-eth.c:1017:59: sparse: sparse: incorrect type in argument 5 (different base types)
@ 2023-06-05 12:52 kernel test robot
0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2023-06-05 12:52 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp
::::::
:::::: 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>
Hi Maciej,
First bad commit (maybe != root cause):
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 9561de3a55bed6bdd44a12820ba81ec416e705a7
commit: 84aa85108b1b8af0d1d310e76975f421c5975e66 MIPS: Rewrite `csum_tcpudp_nofold' in plain C
date: 1 year ago
:::::: branch date: 19 hours ago
:::::: commit date: 1 year ago
config: mips-randconfig-s053-20230605 (https://download.01.org/0day-ci/archive/20230605/202306052019.1UdM5oXV-lkp@intel.com/config)
compiler: mips64el-linux-gcc (GCC) 12.3.0
reproduce:
mkdir -p ~/bin
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.3.0 ~/bin/make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=mips olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.3.0 ~/bin/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>
| Closes: https://lore.kernel.org/r/202306052019.1UdM5oXV-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/wiki
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2023-06-05 12:53 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
-- strict thread matches above, loose matches on Subject: below --
2023-03-25 22:02 kernel test robot
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.