• Mitchell Blank Jr.'s avatar
    [ATM]: Lanai driver updates. · 7a3817cd
    Mitchell Blank Jr. authored
    o Big performance improvement.  The version of the driver in the kernel
      still had a "mdelay(1)" after every register write.  This capped
      performance at about 8Mbps and ate tons of CPU time.  (Luckily, most
      users of this card are just terminating a DSL line where its not too
      noticeable)
    
      However, after removing this delay the card started getting out of
      sync with the driver under stress tests.  After a couple days of chasing
      the bug I finally determine that the card's support for transmitting
      partial PDUs just doesn't quite work as advertised (before we would send
      a partial PDU to completely fill a VCC's transmit buffer and then send
      the rest of the skb when more buffer space filled up).  The usefulness of
      this is somewhat doubtful anyway and removing it cleaned up a lot of code.
    
      I also added some memory barriers to make sure operations to the card
      happen in the correct order.
    
      Now for the first time ever we get near line-rate performance out of this
      card (~19Mb/s TCP in netperf between two ~300Mhz machines)
    
    o Locking changes (essentially the patch Chas sent me a couple weeks ago
      with some minor tweaking)  I'm still not sure we're getting 100% of the
      cases right but it's definitely FAR better than the old lock-less version.
    
    o Cleanup the backlog draining code in lanai_shutdown_tx_vci()
    
    o Remove outdated comment describing how to compile the module
    
    o Got rid of the "service_novcc_[tr]x" stats - it's really the same error
      as "service_[tr]x" - there's no reason to count them separately.
    
    o Use the ATM_25_PCR constant instead of computing it for ourselves
    7a3817cd
lanai.c 85.8 KB