Hi,

> : This is driver for ed(ne2000) cards. I have realtek(rl driver). I took a
> : look at his source and didn't find such strings. There is comment there
> : about cutting off mbuf header before passing it to ether_input - what's
> : this?
> 
> I applied a similar patch to the end of the rl packet handling
> routine.  It didn't solve my arp crashes, however.   It is almost as
> if sometimes the rl driver passes a packet to ether_input and then
> does bad things to it behind the scenes...  I've not had a lot of time
> to try to track down why this does what it does.
> 
> Warner

I would like to narrow down the problem more and could you
please try if this patch stop the problem or not?
(The m_pullup() is recently added to if_rl.c. It should not be
harmful, but I suspect that this might have invoked another
hidden bug.)

Yoshinobu Inoue

Index: if_rl.c
===================================================================
RCS file: /home/ncvs/src/sys/pci/if_rl.c,v
retrieving revision 1.38
diff -u -r1.38 if_rl.c
--- if_rl.c     1999/12/28 06:04:29     1.38
+++ if_rl.c     2000/03/23 01:35:02
@@ -1130,7 +1130,8 @@
                                m_adj(m, RL_ETHER_ALIGN);
                                m_copyback(m, wrap, total_len - wrap,
                                        sc->rl_cdata.rl_rx_buf);
-                               m = m_pullup(m, sizeof(struct ether_header));
+                               if (m->m_len < sizeof(struct ether_header))
+                                       m = m_pullup(m, sizeof(struct ether_header));
                                if (m == NULL) {
                                        printf("rl%d: m_pullup failed",
                                            sc->rl_unit);


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to