This is the mail archive of the ecos-patches@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [Bug 85706] FreeBSD + i82559= 25% packet loss


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
------------------------------------------------------------


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]