All of lore.kernel.org
 help / color / mirror / Atom feed
* drivers/net/ethernet/sfc/ef10.c:2224 efx_ef10_tx_tso_desc() warn: assigning (-208) to unsigned variable 'ip_tot_len'
@ 2021-06-25 19:15 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2021-06-25 19:15 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 8245 bytes --]

CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Edward Cree <ecree@solarflare.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   44db63d1ad8d71c6932cbe007eb41f31c434d140
commit: 0ce8df6614568cfb390756cac35ac690105181f5 sfc: implement encapsulated TSO on EF10
date:   10 months ago
:::::: branch date: 23 hours ago
:::::: commit date: 10 months ago
config: i386-randconfig-m031-20210625 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
drivers/net/ethernet/sfc/ef10.c:2224 efx_ef10_tx_tso_desc() warn: assigning (-208) to unsigned variable 'ip_tot_len'

vim +/ip_tot_len +2224 drivers/net/ethernet/sfc/ef10.c

8127d661e77f5e Ben Hutchings 2013-08-29  2175  
e9117e5099ea29 Bert Kenward  2016-11-17  2176  /* Add Firmware-Assisted TSO v2 option descriptors to a queue.
e9117e5099ea29 Bert Kenward  2016-11-17  2177   */
1679c72cf48552 Edward Cree   2020-09-11  2178  int efx_ef10_tx_tso_desc(struct efx_tx_queue *tx_queue, struct sk_buff *skb,
e9117e5099ea29 Bert Kenward  2016-11-17  2179  			 bool *data_mapped)
e9117e5099ea29 Bert Kenward  2016-11-17  2180  {
e9117e5099ea29 Bert Kenward  2016-11-17  2181  	struct efx_tx_buffer *buffer;
0ce8df6614568c Edward Cree   2020-09-11  2182  	u16 inner_ipv4_id = 0;
0ce8df6614568c Edward Cree   2020-09-11  2183  	u16 outer_ipv4_id = 0;
e9117e5099ea29 Bert Kenward  2016-11-17  2184  	struct tcphdr *tcp;
e9117e5099ea29 Bert Kenward  2016-11-17  2185  	struct iphdr *ip;
0ce8df6614568c Edward Cree   2020-09-11  2186  	u16 ip_tot_len;
e9117e5099ea29 Bert Kenward  2016-11-17  2187  	u32 seqnum;
e9117e5099ea29 Bert Kenward  2016-11-17  2188  	u32 mss;
e9117e5099ea29 Bert Kenward  2016-11-17  2189  
e01b16a7e217a2 Edward Cree   2016-12-02  2190  	EFX_WARN_ON_ONCE_PARANOID(tx_queue->tso_version != 2);
e9117e5099ea29 Bert Kenward  2016-11-17  2191  
e9117e5099ea29 Bert Kenward  2016-11-17  2192  	mss = skb_shinfo(skb)->gso_size;
e9117e5099ea29 Bert Kenward  2016-11-17  2193  
e9117e5099ea29 Bert Kenward  2016-11-17  2194  	if (unlikely(mss < 4)) {
e9117e5099ea29 Bert Kenward  2016-11-17  2195  		WARN_ONCE(1, "MSS of %u is too small for TSO v2\n", mss);
e9117e5099ea29 Bert Kenward  2016-11-17  2196  		return -EINVAL;
e9117e5099ea29 Bert Kenward  2016-11-17  2197  	}
e9117e5099ea29 Bert Kenward  2016-11-17  2198  
0ce8df6614568c Edward Cree   2020-09-11  2199  	if (skb->encapsulation) {
0ce8df6614568c Edward Cree   2020-09-11  2200  		if (!tx_queue->tso_encap)
0ce8df6614568c Edward Cree   2020-09-11  2201  			return -EINVAL;
e9117e5099ea29 Bert Kenward  2016-11-17  2202  		ip = ip_hdr(skb);
0ce8df6614568c Edward Cree   2020-09-11  2203  		if (ip->version == 4)
0ce8df6614568c Edward Cree   2020-09-11  2204  			outer_ipv4_id = ntohs(ip->id);
0ce8df6614568c Edward Cree   2020-09-11  2205  
0ce8df6614568c Edward Cree   2020-09-11  2206  		ip = inner_ip_hdr(skb);
0ce8df6614568c Edward Cree   2020-09-11  2207  		tcp = inner_tcp_hdr(skb);
0ce8df6614568c Edward Cree   2020-09-11  2208  	} else {
0ce8df6614568c Edward Cree   2020-09-11  2209  		ip = ip_hdr(skb);
0ce8df6614568c Edward Cree   2020-09-11  2210  		tcp = tcp_hdr(skb);
0ce8df6614568c Edward Cree   2020-09-11  2211  	}
0ce8df6614568c Edward Cree   2020-09-11  2212  
0ce8df6614568c Edward Cree   2020-09-11  2213  	/* 8000-series EF10 hardware requires that IP Total Length be
0ce8df6614568c Edward Cree   2020-09-11  2214  	 * greater than or equal to the value it will have in each segment
0ce8df6614568c Edward Cree   2020-09-11  2215  	 * (which is at most mss + 208 + TCP header length), but also less
0ce8df6614568c Edward Cree   2020-09-11  2216  	 * than (0x10000 - inner_network_header).  Otherwise the TCP
0ce8df6614568c Edward Cree   2020-09-11  2217  	 * checksum calculation will be broken for encapsulated packets.
0ce8df6614568c Edward Cree   2020-09-11  2218  	 * We fill in ip->tot_len with 0xff30, which should satisfy the
0ce8df6614568c Edward Cree   2020-09-11  2219  	 * first requirement unless the MSS is ridiculously large (which
0ce8df6614568c Edward Cree   2020-09-11  2220  	 * should be impossible as the driver max MTU is 9216); it is
0ce8df6614568c Edward Cree   2020-09-11  2221  	 * guaranteed to satisfy the second as we only attempt TSO if
0ce8df6614568c Edward Cree   2020-09-11  2222  	 * inner_network_header <= 208.
0ce8df6614568c Edward Cree   2020-09-11  2223  	 */
0ce8df6614568c Edward Cree   2020-09-11 @2224  	ip_tot_len = -EFX_TSO2_MAX_HDRLEN;
0ce8df6614568c Edward Cree   2020-09-11  2225  	EFX_WARN_ON_ONCE_PARANOID(mss + EFX_TSO2_MAX_HDRLEN +
0ce8df6614568c Edward Cree   2020-09-11  2226  				  (tcp->doff << 2u) > ip_tot_len);
0ce8df6614568c Edward Cree   2020-09-11  2227  
e9117e5099ea29 Bert Kenward  2016-11-17  2228  	if (ip->version == 4) {
0ce8df6614568c Edward Cree   2020-09-11  2229  		ip->tot_len = htons(ip_tot_len);
e9117e5099ea29 Bert Kenward  2016-11-17  2230  		ip->check = 0;
0ce8df6614568c Edward Cree   2020-09-11  2231  		inner_ipv4_id = ntohs(ip->id);
e9117e5099ea29 Bert Kenward  2016-11-17  2232  	} else {
0ce8df6614568c Edward Cree   2020-09-11  2233  		((struct ipv6hdr *)ip)->payload_len = htons(ip_tot_len);
e9117e5099ea29 Bert Kenward  2016-11-17  2234  	}
e9117e5099ea29 Bert Kenward  2016-11-17  2235  
e9117e5099ea29 Bert Kenward  2016-11-17  2236  	seqnum = ntohl(tcp->seq);
e9117e5099ea29 Bert Kenward  2016-11-17  2237  
e9117e5099ea29 Bert Kenward  2016-11-17  2238  	buffer = efx_tx_queue_get_insert_buffer(tx_queue);
e9117e5099ea29 Bert Kenward  2016-11-17  2239  
e9117e5099ea29 Bert Kenward  2016-11-17  2240  	buffer->flags = EFX_TX_BUF_OPTION;
e9117e5099ea29 Bert Kenward  2016-11-17  2241  	buffer->len = 0;
e9117e5099ea29 Bert Kenward  2016-11-17  2242  	buffer->unmap_len = 0;
e9117e5099ea29 Bert Kenward  2016-11-17  2243  	EFX_POPULATE_QWORD_5(buffer->option,
e9117e5099ea29 Bert Kenward  2016-11-17  2244  			ESF_DZ_TX_DESC_IS_OPT, 1,
e9117e5099ea29 Bert Kenward  2016-11-17  2245  			ESF_DZ_TX_OPTION_TYPE, ESE_DZ_TX_OPTION_DESC_TSO,
e9117e5099ea29 Bert Kenward  2016-11-17  2246  			ESF_DZ_TX_TSO_OPTION_TYPE,
e9117e5099ea29 Bert Kenward  2016-11-17  2247  			ESE_DZ_TX_TSO_OPTION_DESC_FATSO2A,
0ce8df6614568c Edward Cree   2020-09-11  2248  			ESF_DZ_TX_TSO_IP_ID, inner_ipv4_id,
e9117e5099ea29 Bert Kenward  2016-11-17  2249  			ESF_DZ_TX_TSO_TCP_SEQNO, seqnum
e9117e5099ea29 Bert Kenward  2016-11-17  2250  			);
e9117e5099ea29 Bert Kenward  2016-11-17  2251  	++tx_queue->insert_count;
e9117e5099ea29 Bert Kenward  2016-11-17  2252  
e9117e5099ea29 Bert Kenward  2016-11-17  2253  	buffer = efx_tx_queue_get_insert_buffer(tx_queue);
e9117e5099ea29 Bert Kenward  2016-11-17  2254  
e9117e5099ea29 Bert Kenward  2016-11-17  2255  	buffer->flags = EFX_TX_BUF_OPTION;
e9117e5099ea29 Bert Kenward  2016-11-17  2256  	buffer->len = 0;
e9117e5099ea29 Bert Kenward  2016-11-17  2257  	buffer->unmap_len = 0;
0ce8df6614568c Edward Cree   2020-09-11  2258  	EFX_POPULATE_QWORD_5(buffer->option,
e9117e5099ea29 Bert Kenward  2016-11-17  2259  			ESF_DZ_TX_DESC_IS_OPT, 1,
e9117e5099ea29 Bert Kenward  2016-11-17  2260  			ESF_DZ_TX_OPTION_TYPE, ESE_DZ_TX_OPTION_DESC_TSO,
e9117e5099ea29 Bert Kenward  2016-11-17  2261  			ESF_DZ_TX_TSO_OPTION_TYPE,
e9117e5099ea29 Bert Kenward  2016-11-17  2262  			ESE_DZ_TX_TSO_OPTION_DESC_FATSO2B,
0ce8df6614568c Edward Cree   2020-09-11  2263  			ESF_DZ_TX_TSO_OUTER_IPID, outer_ipv4_id,
e9117e5099ea29 Bert Kenward  2016-11-17  2264  			ESF_DZ_TX_TSO_TCP_MSS, mss
e9117e5099ea29 Bert Kenward  2016-11-17  2265  			);
e9117e5099ea29 Bert Kenward  2016-11-17  2266  	++tx_queue->insert_count;
e9117e5099ea29 Bert Kenward  2016-11-17  2267  
e9117e5099ea29 Bert Kenward  2016-11-17  2268  	return 0;
e9117e5099ea29 Bert Kenward  2016-11-17  2269  }
e9117e5099ea29 Bert Kenward  2016-11-17  2270  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 36098 bytes --]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-06-25 19:15 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-06-25 19:15 drivers/net/ethernet/sfc/ef10.c:2224 efx_ef10_tx_tso_desc() warn: assigning (-208) to unsigned variable 'ip_tot_len' 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.