tree:
https://git.kernel.org/pub/scm/linux/kernel/git/sashal/linux-stable.git
pending-5.13
head: af8541612e8f9f67ef47e6a773223f32a139ba69
commit: cdf06d30fa45e9ef387aae38ba80d13eea048508 [40/569] igb: handle vlan types with
checker enabled
config: x86_64-randconfig-s021-20210718 (attached as .config)
compiler: gcc-10 (Ubuntu 10.3.0-1ubuntu1~20.04) 10.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.3-341-g8af24329-dirty
#
https://git.kernel.org/pub/scm/linux/kernel/git/sashal/linux-stable.git/c...
git remote add sashal-linux-stable
https://git.kernel.org/pub/scm/linux/kernel/git/sashal/linux-stable.git
git fetch --no-tags sashal-linux-stable pending-5.13
git checkout cdf06d30fa45e9ef387aae38ba80d13eea048508
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
drivers/net/ethernet/intel/igbvf/netdev.c:203:48: sparse: sparse: incorrect type in
assignment (different base types) @@ expected unsigned long long [usertype] pkt_addr
@@ got restricted __le64 [usertype] @@
drivers/net/ethernet/intel/igbvf/netdev.c:203:48: sparse: expected unsigned long
long [usertype] pkt_addr
drivers/net/ethernet/intel/igbvf/netdev.c:203:48: sparse: got restricted __le64
[usertype]
drivers/net/ethernet/intel/igbvf/netdev.c:205:48: sparse: sparse: incorrect type in
assignment (different base types) @@ expected unsigned long long [usertype] hdr_addr
@@ got restricted __le64 [usertype] @@
drivers/net/ethernet/intel/igbvf/netdev.c:205:48: sparse: expected unsigned long
long [usertype] hdr_addr
drivers/net/ethernet/intel/igbvf/netdev.c:205:48: sparse: got restricted __le64
[usertype]
drivers/net/ethernet/intel/igbvf/netdev.c:207:48: sparse: sparse: incorrect type in
assignment (different base types) @@ expected unsigned long long [usertype] pkt_addr
@@ got restricted __le64 [usertype] @@
drivers/net/ethernet/intel/igbvf/netdev.c:207:48: sparse: expected unsigned long
long [usertype] pkt_addr
drivers/net/ethernet/intel/igbvf/netdev.c:207:48: sparse: got restricted __le64
[usertype]
drivers/net/ethernet/intel/igbvf/netdev.c:261:19: sparse: sparse: cast to restricted
__le32
drivers/net/ethernet/intel/igbvf/netdev.c:276:25: sparse: sparse: cast to restricted
__le16
drivers/net/ethernet/intel/igbvf/netdev.c:282:26: sparse: sparse: cast to restricted
__le16
> drivers/net/ethernet/intel/igbvf/netdev.c:356:52: sparse: sparse:
incorrect type in argument 5 (different base types) @@ expected restricted __le16
[usertype] vlan @@ got unsigned short [usertype] vlan @@
drivers/net/ethernet/intel/igbvf/netdev.c:356:52: sparse: expected restricted __le16
[usertype] vlan
drivers/net/ethernet/intel/igbvf/netdev.c:356:52: sparse: got unsigned short
[usertype] vlan
drivers/net/ethernet/intel/igbvf/netdev.c:371:27: sparse: sparse: cast to restricted
__le32
drivers/net/ethernet/intel/igbvf/netdev.c:797:45: sparse: sparse: restricted __le32
degrades to integer
drivers/net/ethernet/intel/igbvf/netdev.c:1992:41: sparse: sparse: incorrect type in
assignment (different base types) @@ expected unsigned int [usertype] vlan_macip_lens
@@ got restricted __le32 [usertype] @@
drivers/net/ethernet/intel/igbvf/netdev.c:1992:41: sparse: expected unsigned int
[usertype] vlan_macip_lens
drivers/net/ethernet/intel/igbvf/netdev.c:1992:41: sparse: got restricted __le32
[usertype]
drivers/net/ethernet/intel/igbvf/netdev.c:1994:41: sparse: sparse: incorrect type in
assignment (different base types) @@ expected unsigned int [usertype] type_tucmd_mlhl
@@ got restricted __le32 [usertype] @@
drivers/net/ethernet/intel/igbvf/netdev.c:1994:41: sparse: expected unsigned int
[usertype] type_tucmd_mlhl
drivers/net/ethernet/intel/igbvf/netdev.c:1994:41: sparse: got restricted __le32
[usertype]
drivers/net/ethernet/intel/igbvf/netdev.c:1995:41: sparse: sparse: incorrect type in
assignment (different base types) @@ expected unsigned int [usertype] mss_l4len_idx @@
got restricted __le32 [usertype] @@
drivers/net/ethernet/intel/igbvf/netdev.c:1995:41: sparse: expected unsigned int
[usertype] mss_l4len_idx
drivers/net/ethernet/intel/igbvf/netdev.c:1995:41: sparse: got restricted __le32
[usertype]
drivers/net/ethernet/intel/igbvf/netdev.c:2059:46: sparse: sparse: incorrect type in
argument 2 (different base types) @@ expected restricted __wsum [usertype] diff @@
got restricted __be32 [usertype] @@
drivers/net/ethernet/intel/igbvf/netdev.c:2059:46: sparse: expected restricted
__wsum [usertype] diff
drivers/net/ethernet/intel/igbvf/netdev.c:2059:46: sparse: got restricted __be32
[usertype]
drivers/net/ethernet/intel/igbvf/netdev.c:2254:43: sparse: sparse: incorrect type in
assignment (different base types) @@ expected unsigned long long [usertype]
buffer_addr @@ got restricted __le64 [usertype] @@
drivers/net/ethernet/intel/igbvf/netdev.c:2254:43: sparse: expected unsigned long
long [usertype] buffer_addr
drivers/net/ethernet/intel/igbvf/netdev.c:2254:43: sparse: got restricted __le64
[usertype]
drivers/net/ethernet/intel/igbvf/netdev.c:2255:44: sparse: sparse: incorrect type in
assignment (different base types) @@ expected unsigned int [usertype] cmd_type_len @@
got restricted __le32 [usertype] @@
drivers/net/ethernet/intel/igbvf/netdev.c:2255:44: sparse: expected unsigned int
[usertype] cmd_type_len
drivers/net/ethernet/intel/igbvf/netdev.c:2255:44: sparse: got restricted __le32
[usertype]
drivers/net/ethernet/intel/igbvf/netdev.c:2257:45: sparse: sparse: incorrect type in
assignment (different base types) @@ expected unsigned int [usertype] olinfo_status @@
got restricted __le32 [usertype] @@
drivers/net/ethernet/intel/igbvf/netdev.c:2257:45: sparse: expected unsigned int
[usertype] olinfo_status
drivers/net/ethernet/intel/igbvf/netdev.c:2257:45: sparse: got restricted __le32
[usertype]
drivers/net/ethernet/intel/igbvf/netdev.c:2263:36: sparse: sparse: invalid assignment:
|=
drivers/net/ethernet/intel/igbvf/netdev.c:2263:36: sparse: left side has type
unsigned int
drivers/net/ethernet/intel/igbvf/netdev.c:2263:36: sparse: right side has type
restricted __le32
vim +356 drivers/net/ethernet/intel/igbvf/netdev.c
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
234
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
235 /**
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
236 * igbvf_clean_rx_irq - Send received data up the network stack; legacy
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
237 * @adapter: board private structure
b50f7bca5e83d9e8 drivers/net/ethernet/intel/igbvf/netdev.c Jesse Brandeburg 2020-09-25
238 * @work_done: output parameter used to indicate completed work
b50f7bca5e83d9e8 drivers/net/ethernet/intel/igbvf/netdev.c Jesse Brandeburg 2020-09-25
239 * @work_to_do: input parameter setting limit of work
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
240 *
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
241 * the return value indicates whether actual cleaning was done, there
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
242 * is no guarantee that everything was cleaned
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
243 **/
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
244 static bool igbvf_clean_rx_irq(struct igbvf_adapter *adapter,
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
245 int *work_done, int work_to_do)
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
246 {
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
247 struct igbvf_ring *rx_ring = adapter->rx_ring;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
248 struct net_device *netdev = adapter->netdev;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
249 struct pci_dev *pdev = adapter->pdev;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
250 union e1000_adv_rx_desc *rx_desc, *next_rxd;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
251 struct igbvf_buffer *buffer_info, *next_buffer;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
252 struct sk_buff *skb;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
253 bool cleaned = false;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
254 int cleaned_count = 0;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
255 unsigned int total_bytes = 0, total_packets = 0;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
256 unsigned int i;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
257 u32 length, hlen, staterr;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
258
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
259 i = rx_ring->next_to_clean;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
260 rx_desc = IGBVF_RX_DESC_ADV(*rx_ring, i);
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
261 staterr = le32_to_cpu(rx_desc->wb.upper.status_error);
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
262
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
263 while (staterr & E1000_RXD_STAT_DD) {
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
264 if (*work_done >= work_to_do)
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
265 break;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
266 (*work_done)++;
2d0bb1c1f4524bef drivers/net/igbvf/netdev.c Jeff Kirsher 2010-08-08
267 rmb(); /* read descriptor and rx_buffer_info after status DD */
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
268
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
269 buffer_info = &rx_ring->buffer_info[i];
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
270
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
271 /* HW will not DMA in data larger than the given buffer, even
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
272 * if it parses the (NFS, of course) header to be larger. In
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
273 * that case, it fills the header buffer and spills the rest
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
274 * into the page.
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
275 */
0340501b1cf7dc67 drivers/net/ethernet/intel/igbvf/netdev.c Jeff Kirsher 2015-01-21
276 hlen = (le16_to_cpu(rx_desc->wb.lower.lo_dword.hs_rss.hdr_info)
0340501b1cf7dc67 drivers/net/ethernet/intel/igbvf/netdev.c Jeff Kirsher 2015-01-21
277 & E1000_RXDADV_HDRBUFLEN_MASK) >>
0340501b1cf7dc67 drivers/net/ethernet/intel/igbvf/netdev.c Jeff Kirsher 2015-01-21
278 E1000_RXDADV_HDRBUFLEN_SHIFT;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
279 if (hlen > adapter->rx_ps_hdr_size)
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
280 hlen = adapter->rx_ps_hdr_size;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
281
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
282 length = le16_to_cpu(rx_desc->wb.upper.length);
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
283 cleaned = true;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
284 cleaned_count++;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
285
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
286 skb = buffer_info->skb;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
287 prefetch(skb->data - NET_IP_ALIGN);
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
288 buffer_info->skb = NULL;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
289 if (!adapter->rx_ps_hdr_size) {
123e9f1afe7b86f7 drivers/net/igbvf/netdev.c Nick Nunley 2010-04-27
290 dma_unmap_single(&pdev->dev, buffer_info->dma,
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
291 adapter->rx_buffer_len,
123e9f1afe7b86f7 drivers/net/igbvf/netdev.c Nick Nunley 2010-04-27
292 DMA_FROM_DEVICE);
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
293 buffer_info->dma = 0;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
294 skb_put(skb, length);
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
295 goto send_up;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
296 }
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
297
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
298 if (!skb_shinfo(skb)->nr_frags) {
123e9f1afe7b86f7 drivers/net/igbvf/netdev.c Nick Nunley 2010-04-27
299 dma_unmap_single(&pdev->dev, buffer_info->dma,
92d947b77436437f drivers/net/igbvf/netdev.c Alexander Duyck 2009-07-23
300 adapter->rx_ps_hdr_size,
123e9f1afe7b86f7 drivers/net/igbvf/netdev.c Nick Nunley 2010-04-27
301 DMA_FROM_DEVICE);
fae5ecaee3e6265c drivers/net/ethernet/intel/igbvf/netdev.c Stefan Assmann 2015-08-06
302 buffer_info->dma = 0;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
303 skb_put(skb, hlen);
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
304 }
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
305
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
306 if (length) {
123e9f1afe7b86f7 drivers/net/igbvf/netdev.c Nick Nunley 2010-04-27
307 dma_unmap_page(&pdev->dev, buffer_info->page_dma,
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
308 PAGE_SIZE / 2,
123e9f1afe7b86f7 drivers/net/igbvf/netdev.c Nick Nunley 2010-04-27
309 DMA_FROM_DEVICE);
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
310 buffer_info->page_dma = 0;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
311
ec857fd40da41d7c drivers/net/igbvf/netdev.c Koki Sanagi 2010-04-27
312 skb_fill_page_desc(skb, skb_shinfo(skb)->nr_frags,
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
313 buffer_info->page,
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
314 buffer_info->page_offset,
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
315 length);
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
316
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
317 if ((adapter->rx_buffer_len > (PAGE_SIZE / 2)) ||
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
318 (page_count(buffer_info->page) != 1))
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
319 buffer_info->page = NULL;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
320 else
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
321 get_page(buffer_info->page);
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
322
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
323 skb->len += length;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
324 skb->data_len += length;
7b8b59617ead5acc drivers/net/ethernet/intel/igbvf/netdev.c Eric Dumazet 2011-10-20
325 skb->truesize += PAGE_SIZE / 2;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
326 }
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
327 send_up:
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
328 i++;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
329 if (i == rx_ring->count)
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
330 i = 0;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
331 next_rxd = IGBVF_RX_DESC_ADV(*rx_ring, i);
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
332 prefetch(next_rxd);
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
333 next_buffer = &rx_ring->buffer_info[i];
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
334
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
335 if (!(staterr & E1000_RXD_STAT_EOP)) {
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
336 buffer_info->skb = next_buffer->skb;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
337 buffer_info->dma = next_buffer->dma;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
338 next_buffer->skb = skb;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
339 next_buffer->dma = 0;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
340 goto next_desc;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
341 }
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
342
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
343 if (staterr & E1000_RXDEXT_ERR_FRAME_ERR_MASK) {
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
344 dev_kfree_skb_irq(skb);
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
345 goto next_desc;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
346 }
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
347
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
348 total_bytes += skb->len;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
349 total_packets++;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
350
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
351 igbvf_rx_checksum_adv(adapter, staterr, skb);
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
352
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
353 skb->protocol = eth_type_trans(skb, netdev);
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
354
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
355 igbvf_receive_skb(adapter, netdev, skb, staterr,
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
@356 rx_desc->wb.upper.vlan);
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
357
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
358 next_desc:
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
359 rx_desc->wb.upper.status_error = 0;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
360
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
361 /* return some buffers to hardware, one at a time is too slow */
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
362 if (cleaned_count >= IGBVF_RX_BUFFER_WRITE) {
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
363 igbvf_alloc_rx_buffers(rx_ring, cleaned_count);
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
364 cleaned_count = 0;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
365 }
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
366
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
367 /* use prefetched values */
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
368 rx_desc = next_rxd;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
369 buffer_info = next_buffer;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
370
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
371 staterr = le32_to_cpu(rx_desc->wb.upper.status_error);
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
372 }
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
373
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
374 rx_ring->next_to_clean = i;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
375 cleaned_count = igbvf_desc_unused(rx_ring);
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
376
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
377 if (cleaned_count)
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
378 igbvf_alloc_rx_buffers(rx_ring, cleaned_count);
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
379
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
380 adapter->total_rx_packets += total_packets;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
381 adapter->total_rx_bytes += total_bytes;
55c05dd0295d8334 drivers/net/ethernet/intel/igbvf/netdev.c Tobias Klauser 2017-04-06
382 netdev->stats.rx_bytes += total_bytes;
55c05dd0295d8334 drivers/net/ethernet/intel/igbvf/netdev.c Tobias Klauser 2017-04-06
383 netdev->stats.rx_packets += total_packets;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
384 return cleaned;
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
385 }
d4e0fe01a38a0735 drivers/net/igbvf/netdev.c Alexander Duyck 2009-04-07
386
:::::: The code at line 356 was first introduced by commit
:::::: d4e0fe01a38a073568aee541a0247fe734095979 igbvf: add new driver to support 82576
virtual functions
:::::: TO: Alexander Duyck <alexander.h.duyck(a)intel.com>
:::::: CC: David S. Miller <davem(a)davemloft.net>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org