IB/ipath: Use counters in ipath_poll and cleanup interrupts in ipath_close
authorArthur Jones <arthur.jones@qlogic.com>
Fri, 14 Sep 2007 19:22:49 +0000 (12:22 -0700)
committerRoland Dreier <rolandd@cisco.com>
Wed, 10 Oct 2007 03:56:23 +0000 (20:56 -0700)
commit70c51da2c4f84317bb13a2b564600afdcebd686f
treed7c39e3efaf6c90482cfe9d0e85012c3c9c511a7
parent542869a17eee2edf389273f40f757aa4e662b3da
IB/ipath: Use counters in ipath_poll and cleanup interrupts in ipath_close

ipath_poll() suffered from a couple subtle bugs.  Under the right
conditions we could leave recv interrupts enabled on an ipath user
context on close, thereby taking potentially unwanted interrupts on the
next open -- this is fixed by unconditionally turning off recv
interrupts on close.  Also, we now use counters rather than set/clear
bits which allows us to make sure we catch all interrupts at the cost of
changing the semantics slightly (it's now give me all events since the
last time I called poll() rather than give me all events since I called
_this_ poll routine).  We also added some memory barriers which may help
ensure we get all notifications in a timely manner.

Signed-off-by: Arthur Jones <arthur.jones@qlogic.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/hw/ipath/ipath_file_ops.c
drivers/infiniband/hw/ipath/ipath_intr.c
drivers/infiniband/hw/ipath/ipath_kernel.h