DragonFly commits List (threaded) for 2007-08
DragonFly BSD
DragonFly commits List (threaded) for 2007-08
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: cvs commit: src/sys/dev/netif/nfe if_nfe.c


From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxx>
Date: Fri, 10 Aug 2007 10:31:26 -0700 (PDT)

:Matt, I think this one should fix your NFS problem, can you test this change?
:
:Best Regards,
:sephe

    Hmm.  I would have thought it would have, but it doesn't.
    My UDP mount still locks up with rxcsum turned on.

    I experimented a bit with the code around line 887.  With
    rxcsum and txcsum both turned on:

    * With both the IP and UDP/TCP checks removed my UDP mount works.

    * With the IP check removed and the UDP/TCP check retained,
      the UDP mount does not work.

    * With the IP check retained and the UDP/TCP check removed,
      the UDP mount works.

    Something must be getting set wrong or processed wrong in m_pkthdr
    in the UDP/TCP check.

    I've enclosed my test patch with comments.

					-Matt
					Matthew Dillon 
					<dillon@backplane.com>

Index: if_nfe.c
===================================================================
RCS file: /cvs/src/sys/dev/netif/nfe/if_nfe.c,v
retrieving revision 1.15
diff -u -p -r1.15 if_nfe.c
--- if_nfe.c	10 Aug 2007 15:29:25 -0000	1.15
+++ if_nfe.c	10 Aug 2007 17:25:13 -0000
@@ -886,17 +886,23 @@ 		m->m_pkthdr.rcvif = ifp;
 
 		if ((ifp->if_capenable & IFCAP_RXCSUM) &&
 		    (flags & NFE_RX_CSUMOK)) {
+#if 1
+			/* this works */
 			if (flags & NFE_RX_IP_CSUMOK_V2) {
 				m->m_pkthdr.csum_flags |= CSUM_IP_CHECKED |
 							  CSUM_IP_VALID;
 			}
 
+#endif
+#if 0
+			/* this doesn't work */
 			if (flags &
 			    (NFE_RX_UDP_CSUMOK_V2 | NFE_RX_TCP_CSUMOK_V2)) {
 				m->m_pkthdr.csum_flags |= CSUM_DATA_VALID |
 							  CSUM_PSEUDO_HDR;
 				m->m_pkthdr.csum_data = 0xffff;
 			}
+#endif
 		}
 
 		ifp->if_ipackets++;



[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]