svn commit: r211443 - projects/ofed/head/sys/ofed/drivers/infiniband/core

Jeff Roberson jeff at FreeBSD.org
Wed Aug 18 07:34:59 UTC 2010


Author: jeff
Date: Wed Aug 18 07:34:58 2010
New Revision: 211443
URL: http://svn.freebsd.org/changeset/base/211443

Log:
   - selwakeup() when we wakeup the recv_wait waiters as bsd select can
     not use the linux waitqueue.
  
  Sponsored by:	Isilon Systems, iX Systems, and Panasas.

Modified:
  projects/ofed/head/sys/ofed/drivers/infiniband/core/user_mad.c

Modified: projects/ofed/head/sys/ofed/drivers/infiniband/core/user_mad.c
==============================================================================
--- projects/ofed/head/sys/ofed/drivers/infiniband/core/user_mad.c	Wed Aug 18 07:32:24 2010	(r211442)
+++ projects/ofed/head/sys/ofed/drivers/infiniband/core/user_mad.c	Wed Aug 18 07:34:58 2010	(r211443)
@@ -111,6 +111,7 @@ struct ib_umad_device {
 struct ib_umad_file {
 	struct mutex		mutex;
 	struct ib_umad_port    *port;
+	struct file	       *filp;
 	struct list_head	recv_list;
 	struct list_head	send_list;
 	struct list_head	port_list;
@@ -174,6 +175,7 @@ static int queue_packet(struct ib_umad_f
 	     packet->mad.hdr.id++)
 		if (agent == __get_agent(file, packet->mad.hdr.id)) {
 			list_add_tail(&packet->list, &file->recv_list);
+			selwakeup(&file->filp->f_selinfo);
 			wake_up_interruptible(&file->recv_wait);
 			ret = 0;
 			break;
@@ -824,6 +826,7 @@ static int ib_umad_open(struct inode *in
 	init_waitqueue_head(&file->recv_wait);
 
 	file->port = port;
+	file->filp = filp;
 	filp->private_data = file;
 
 	list_add_tail(&file->port_list, &port->file_list);


More information about the svn-src-projects mailing list