kern/150516: [em] e1000 receive queue handling problem

Arnaud Lacombe lacombar at gmail.com
Fri Feb 25 23:52:53 UTC 2011


Hi,

What is the point to invent a complex logic to detected a situation
the chip warn you about ?

The attached patch has currently survived longer than anything I've
been ever tested, without dirty hack, like raising `nmbclusters'.

Thanks in advance,
 - Arnaud

ps: this is a temporary patch, for my 82754 based system, I am aware
there is other user of IMS_ENABLE_MASK.

On Wed, Feb 23, 2011 at 2:52 AM, Arnaud Lacombe <lacombar at gmail.com> wrote:
> Hi,
>
> 2011/2/23 beezarliu <beezarliu at yahoo.com.cn>:
>> I think you can replace sys/dev/e1000/*  with the files in stable/8,
>> and then uses this patch. It's much simpler.
>> :)
>>
> agree. I switched to the driver of 8-STABLE, applied your patch
> (without any conflict), fixed a bad version check (see [0]), built the
> kernel, rebooted, ran the test... and hung em(4) RX again. 141k missed
> packets (growing) and about 3k cluster allocations denied (constant)
> currently. TX is fine, but the NIC is unable to process ARP and ICMP
> reply sent back by the machine on the LAN.
>
> I did not test igb(4) as I do not have any on the path I directly
> control, but the fix in trunk survived a few day of similar testing.
>
>  - Arnaud
>
> [0]:
> diff --git a/sys/dev/e1000/if_igb.h b/sys/dev/e1000/if_igb.h
> index 4388e07..adef0af 100644
> --- a/sys/dev/e1000/if_igb.h
> +++ b/sys/dev/e1000/if_igb.h
> @@ -508,7 +508,7 @@ struct igb_rx_buf {
>        cur |= new;                             \
>  }
>
> -#if __FreeBSD_version < 800504
> +#if __FreeBSD_version >= 800000 && __FreeBSD_version < 800504
>  static __inline int
>  drbr_needs_enqueue(struct ifnet *ifp, struct buf_ring *br)
>  {
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-if_em-handle-RX-overrun.patch
Type: text/x-patch
Size: 2288 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-net/attachments/20110225/f785a67f/0001-if_em-handle-RX-overrun.bin


More information about the freebsd-net mailing list