On Wed, Jan 3, 2018 at 1:44 PM, David Miller <da...@davemloft.net> wrote: > From: Neil Horman <nhor...@tuxdriver.com> > Date: Wed, 3 Jan 2018 13:09:23 -0500 > >> A few spots in 3c59x missed calls to dma_mapping_error checks, casuing >> WARN_ONS to trigger. Clean those up. While we're at it, refactor the >> refill code a bit so that if skb allocation or dma mapping fails, we >> recycle the existing buffer. This prevents holes in the rx ring, and >> makes for much simpler logic >> >> Note: This is compile only tested. Ted, if you could run this and >> confirm that it continues to work properly, I would appreciate it, as I >> currently don't have access to this hardware >>
Neil, I was able to test this patch. I did not get any WARN_ON messages. However, I am getting a lot of dropped receive packets; uptime is 11 minutes and it has already dropped 214 of 743 receive packets. Admittedly this is on a slow i486 regression testing system, but the drop rate is approximately 30% which seems high even for this system because it is on a very quiet switched network. I enabled some debugging messages by setting msglvl to 4 and recompiling with DYNAMIC_DEBUG=y. I did not see any messages of the form "No memory to allocate a sk_buff of size" so that leaves the following two cases: boomerang_rx() ... newskb = netdev_alloc_skb_ip_align(dev, PKT_BUF_SZ); if (!newskb) { dev->stats.rx_dropped++; goto clear_complete; } newdma = pci_map_single(VORTEX_PCI(vp), newskb->data, PKT_BUF_SZ, PCI_DMA_FROMDEVICE) if (dma_mapping_error(&VORTEX_PCI(vp)->dev, newdma)) { dev->stats.rx_dropped++; consume_skb(newskb); goto clear_complete; } What shall we do to determine if it is hitting the pci_map_single() or netdev_alloc_skb_ip_align() failure? - Matthew