IB/ipath: fix return value from ipath_poll
authorBryan O'Sullivan <bos@pathscale.com>
Fri, 25 Aug 2006 18:24:46 +0000 (11:24 -0700)
committerRoland Dreier <rolandd@cisco.com>
Fri, 22 Sep 2006 22:22:39 +0000 (15:22 -0700)
This stops the generic poll code from waiting for a timeout.

Signed-off-by: Bryan O'Sullivan <bryan.osullivan@qlogic.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/hw/ipath/ipath_file_ops.c

index 6ba9a2d1e6ecb900b09ad410ea3a77244f65bb2d..29930e22318e5a09f78349fe4c8d9e052db9aa62 100644 (file)
@@ -1150,6 +1150,7 @@ static unsigned int ipath_poll(struct file *fp,
        struct ipath_portdata *pd;
        u32 head, tail;
        int bit;
+       unsigned pollflag = 0;
        struct ipath_devdata *dd;
 
        pd = port_fp(fp);
@@ -1186,9 +1187,12 @@ static unsigned int ipath_poll(struct file *fp,
                        clear_bit(IPATH_PORT_WAITING_RCV, &pd->port_flag);
                        pd->port_rcvwait_to++;
                }
+               else
+                       pollflag = POLLIN | POLLRDNORM;
        }
        else {
                /* it's already happened; don't do wait_event overhead */
+               pollflag = POLLIN | POLLRDNORM;
                pd->port_rcvnowait++;
        }
 
@@ -1196,7 +1200,7 @@ static unsigned int ipath_poll(struct file *fp,
        ipath_write_kreg(dd, dd->ipath_kregs->kr_rcvctrl,
                         dd->ipath_rcvctrl);
 
-       return 0;
+       return pollflag;
 }
 
 static int try_alloc_port(struct ipath_devdata *dd, int port,