mei: clean pending read with vtag on bus
authorAlexander Usyskin <alexander.usyskin@intel.com>
Wed, 25 Jan 2023 08:26:34 +0000 (00:26 -0800)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Fri, 27 Jan 2023 20:22:11 +0000 (15:22 -0500)
Client on bus have only one vtag map slot and should disregard the vtag
value when cleaning pending read flag.
Fixes read flow control message unexpectedly generated when
clent on bus send messages with different vtags.

Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
Reviewed-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Alan Previn <alan.previn.teres.alexis@intel.com>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230125082637.118970-4-alan.previn.teres.alexis@intel.com
drivers/misc/mei/client.c

index 9ddb854b8155b5476c4d618dd9441cde3fc9fdb9..5c19097266fe06d98586239ffee6f91762c77e90 100644 (file)
@@ -1343,7 +1343,9 @@ static void mei_cl_reset_read_by_vtag(const struct mei_cl *cl, u8 vtag)
        struct mei_cl_vtag *vtag_l;
 
        list_for_each_entry(vtag_l, &cl->vtag_map, list) {
-               if (vtag_l->vtag == vtag) {
+               /* The client on bus has one fixed vtag map */
+               if ((cl->cldev && mei_cldev_enabled(cl->cldev)) ||
+                   vtag_l->vtag == vtag) {
                        vtag_l->pending_read = false;
                        break;
                }