This is the mail archive of the
ecos-patches@sources.redhat.com
mailing list for the eCos project.
Re: [Bug 85706] FreeBSD + i82559= 25% packet loss
- From: Gary Thomas <gary at mlbassoc dot com>
- To: Andrew Lunn <andrew dot lunn at ascom dot ch>
- Cc: eCos patches <ecos-patches at sources dot redhat dot com>
- Date: 14 Mar 2003 05:58:59 -0700
- Subject: Re: [Bug 85706] FreeBSD + i82559= 25% packet loss
- References: <200303140918.h2E9InZ23641@beta.redhat.com>
Andrew,
This seems very reasonable to me - thanks for taking the time
to figure it out!
Are you going to commit this change?
On Fri, 2003-03-14 at 02:18, bugzilla at redhat dot com wrote:
> Please do not reply directly to this email. All additional
> comments should be made in the comments box of this bug report.
>
> https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=85706
>
>
>
>
>
> ------- Additional Comments From andrew dot lunn at ascom dot ch 2003-03-14 04:20 -------
> Index: current/ChangeLog
> ===================================================================
> RCS file: /cvs/ecos/ecos-opt/net/net/bsd_tcpip/current/ChangeLog,v
> retrieving revision 1.17
> diff -u -r1.17 ChangeLog
> --- current/ChangeLog 24 Feb 2003 14:29:17 -0000 1.17
> +++ current/ChangeLog 14 Mar 2003 09:12:02 -0000
> @@ -1,3 +1,10 @@
> +2003-03-14 Andrew Lunn <andrew dot lunn at ascom dot ch>
> +
> + * src/sys/net/if.c (if_attach): Removed printf which causes the
> + ethernet device to become corrupt. At this point the app driver
> + has started but not completed taking over from the redboot
> + driver. It is unsafe for redboot to use the ethernet device.
> +
> 2003-02-24 Jonathan Larmour <jifl at eCosCentric dot com>
>
> * cdl/freebsd_net.cdl: Fix doc link.
> Index: current/src/sys/net/if.c
> ===================================================================
> RCS file: /cvs/ecos/ecos-opt/net/net/bsd_tcpip/current/src/sys/net/if.c,v
> retrieving revision 1.2
> diff -u -r1.2 if.c
> --- current/src/sys/net/if.c 4 Nov 2002 20:23:25 -0000 1.2
> +++ current/src/sys/net/if.c 14 Mar 2003 09:12:02 -0000
> @@ -194,8 +194,6 @@
> }
>
> if (ifp->if_snd.ifq_maxlen == 0) {
> - printf("%s%d XXX: driver didn't set ifq_maxlen\n",
> - ifp->if_name, ifp->if_unit);
> ifp->if_snd.ifq_maxlen = ifqmaxlen;
> }
>
>
> This fixes the problem.
>
> At the point this printf is made, the apps instance of the driver has setup the
> i82559 with its buffers. The redboot i82559 driver no longer has control over
> the device. But, redboot has not been told this yet. The VV call has still to be
> made. Thus this printf invokes the redboot instance of the i82559 driver. It
> uses one of its buffers and so corrupts the apps ring of buffers.
>
> This is a generic problem and not limited to just the i82559. Any ethernet
> device with 'complex' buffer management is likely to be corrupted.
>
>
>
> ------- You are receiving this mail because: -------
> You are the assignee for the bug, or are watching the assignee.
--
------------------------------------------------------------
Gary Thomas |
MLB Associates | Consulting for the
+1 (970) 229-1963 | Embedded world
http://www.mlbassoc.com/ |
email: <gary at mlbassoc dot com> |
gpg: http://www.chez-thomas.org/gary/gpg_key.asc
------------------------------------------------------------