• Bryan O'Sullivan's avatar
    [PATCH] IB/ipath: fixed bug 9776 for real · f5f99929
    Bryan O'Sullivan authored
    The problem was that I was updating the head register multiple times in the
    rcvhdrq processing loop, and setting the counter on each update.  Since that
    meant that the tail register was ahead of head for all but the last update, we
    would get extra interrupts.  The fix was to not write the counter value except
    on the last update.
    
    I also changed to update rcvhdrhead and rcvegrindexhead at most every 16
    packets, if there were lots of packets in the queue (and of course, on the
    last packet, regardless).
    
    I also made some small cleanups while debugging this.
    
    With these changes, xeon/monty typically sees two openib packets per interrupt
    on sdp and ipoib, opteron/monty is about 1.25 pkts/intr.
    
    I'm seeing about 3800 Mbit/s monty/xeon, and 5000-5100 opteron/monty with
    netperf sdp.  Netpipe doesn't show as good as that, peaking at about 4400 on
    opteron/monty sdp.  Plain ipoib xeon is about 2100+ netperf, opteron 2900+, at
    128KB
    
    Signed-off-by: olson@eng-12.pathscale.com
    Signed-off-by: default avatarBryan O'Sullivan <bos@pathscale.com>
    Cc: "Michael S. Tsirkin" <mst@mellanox.co.il>
    Cc: Roland Dreier <rolandd@cisco.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    f5f99929
ipath_intr.c 28.2 KB