]> Pileus Git - ~andy/linux/commitdiff
staging/mei: fix failure for multiple mei clients connection
authorNatalia Ovsyanikov <natalia.ovsyanikov@intel.com>
Sun, 4 Dec 2011 22:16:54 +0000 (00:16 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 8 Dec 2011 23:00:44 +0000 (15:00 -0800)
The irq handler processes queued mei clients connect requests, which were
not transferred to the device in ioctl context due to unavailability
of the write buffer.

The handler may transfer the connection request only if there is
no other ongoing  requests for the same mei id.
This condition was implemented inversely which depending on
the write buffer availability lead to seemingly random
failures during connection attempts.

Cc: Oren Weil <oren.jer.weil@intel.com>
Signed-off-by: Natalia Ovsyanikov <natalia.ovsyanikov@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/mei/interrupt.c

index 38e0197475e2d062dd6013db39593604f41ed199..ad944b2c1da1fecd12b6ebe21045d36784e5cbad 100644 (file)
@@ -1328,7 +1328,7 @@ static int mei_irq_thread_write_handler(struct mei_io_list *cmpl_list,
                        break;
                case MEI_IOCTL:
                        /* connect message */
-                       if (!mei_other_client_is_connecting(dev, cl))
+                       if (mei_other_client_is_connecting(dev, cl))
                                continue;
                        ret = _mei_irq_thread_ioctl(dev, slots, pos, cl, cmpl_list);
                        if (ret)