Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 7 Jan 2004 22:22:15 -0800 (PST)
From:      Don Lewis <truckman@FreeBSD.org>
To:        src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/pci if_dc.c if_dcreg.h
Message-ID:  <200401080622.i086MFAX095815@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
truckman    2004/01/07 22:22:15 PST

  FreeBSD src repository

  Modified files:
    sys/pci              if_dc.c if_dcreg.h 
  Log:
  The transmit frame status is stored in the last transmit descriptor for the
  frame, not the first.  It is probably also not safe to free the mbuf chain
  as soon as the OWN bit is cleared on the first descriptor since the chip
  may not be done copying the frame into the transmit FIFO.  Revert the part of
  of busdma conversion (if_dc.c rev 1.115) which changed dc_txeof() to look for
  the status in the first descriptor and free the mbuf chain when processing
  the first descriptor for the frame, and revert the matching changes elsewhere
  in the driver.  This part of the busdma change caused the driver to report
  spurious collisions and output errors, even when running in full-duplex mode.
  Reverting the mbuf chain handling slightly complicates dc_dma_map_txbuf(),
  since it is responsible for setting the OWN bits on the descriptors, but does
  not normally have direct access to the mbuf chain.
  
  Tested by:
    Dejan Lesjak <dejan.lesjak at ijs.si>  alpha/<Intel 21143 10/100BaseTX>
    "Xin LI" <delphij at frontfree.net>    i386/<Macronix 98713 10/100BaseTX>
    Wiktor Niesiobedzki <bsd at w.evip.pl> i386/<3Com OfficeConnect 10/100B>
  
  Reviewed by:    mux
  
  Revision  Changes    Path
  1.138     +4 -3      src/sys/pci/if_dc.c
  1.41      +1 -0      src/sys/pci/if_dcreg.h



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200401080622.i086MFAX095815>