Commit Graph

5 Commits

Author SHA1 Message Date
thorpej
16c4c5af26 New bus.h implementation/interface:
- No more distinction between i/o-mapped and memory-mapped
	  devices.  It's all "bus space" now, and space tags
	  differentiate the space with finer grain than the
	  bus chipset tag.
	- Add memory barrier methods.
	- Implement space alloc/free methods.
	- Implement region read/write methods (like memcpy to/from
	  bus space).
This interface provides a better abstraction for dealing with
machine-independent chipset drivers.
1996-10-21 22:24:37 +00:00
chuck
1e5c811090 midway fixes + new stuff:
- merged multiple DRQ/DTQ ADD macros into a single DRQ and a single DTQ
   macro with a uniform interface to make the code simpler and easier to read.

 - en_start: only update atm_flags if EN_MBUF_OPT is enabled (which it
        should be)

 - for alburst: make sure we don't DMA more bytes than we need (on both
        tx and rx).   if the alburst is larger than we need, drop to
        MIDDMA_WORD mode.

 - major change: enable the use of byte and 2 byte DMA on the trasmit side.
   this allows us to DMA from non-word sized/aligned mbufs directly.
   [the old code would always call en_mfix which would copy (or move) the
    data in order to ensure proper alignment...   it turns out TCP gives
    us non-word sized/aligned mbufs when it is retransmitting, so we needed
    to handle this case more efficiently.]    the following functions
   were changed to make this work:
    - en_dqneed: add an arg to let us know if we are transmitting or not.
        if we are TX, then we must take into account byte DMAs when
        estimating the number of DTQs we will need for a buffer
    - en_start: only mfix mbufs if DMA is disabled
    - en_txdma: only set launch.nodma if we have en_mfix'd the mbuf chain
        also, we may need a DTQ to flush the chip's internal byte buffer
    - en_txlaunch: only attempt a copy if we have the proper alignment.
        add byte dma code for the front and end of the buffer.
        make sure the internal dma buffer is flushed out.
    - stats: keep track of how many times we have to use byte sized DMA

midwayreg:
 - add byte/2byte DMA defines

midwayvar:
 - add new stat counter to monitor less-than-word lengthed DMA
1996-07-16 22:11:05 +00:00
chuck
db41df67cd ported to FreeBSD 2.2-960612-SNAP. [thanks to Matt Thomas' driver work] 1996-07-03 17:21:58 +00:00
chuck
39b4f89493 fixes:
[1] rxslot "cur" pointer wasn't updated if we copied all data and
        didn't have any fill.   this could cause a service id mismatch
        panic under load.
  [2] recv of aal0 forgot to include the cell header in the data length
        calc [add cell header length to midwayreg.h]
  [3] fix control info "chop" for raw mode and aal0
  [4] handle rxsb better for native atm connections
        (XXX: still working on this ... not complete and needs revision)
1996-06-26 04:08:53 +00:00
chuck
ba63d22426 add support for efficient networks midway atm chip. 1996-06-22 01:50:52 +00:00