: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 
                                        <[EMAIL PROTECTED]>

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

Reply via email to