mei: reduce flow control only for completed messages
This fixes bug when only first chunk of a large message split by hbuf_max_len is written to the hardware. All the consequent chunks will not get a new credit. A regression introduced by the commit 0ef319c93cebff9f82bdd0cdbb298f2dd00acda8 mei: streamline write complete flow function Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>hifive-unleashed-5.1
parent
0cfee51c7c
commit
7013539381
|
@ -356,13 +356,14 @@ static int mei_irq_thread_write_complete(struct mei_device *dev, s32 *slots,
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mei_cl_flow_ctrl_reduce(cl))
|
|
||||||
return -ENODEV;
|
|
||||||
|
|
||||||
cl->status = 0;
|
cl->status = 0;
|
||||||
cb->buf_idx += mei_hdr.length;
|
cb->buf_idx += mei_hdr.length;
|
||||||
if (mei_hdr.msg_complete)
|
if (mei_hdr.msg_complete) {
|
||||||
|
if (mei_cl_flow_ctrl_reduce(cl))
|
||||||
|
return -ENODEV;
|
||||||
list_move_tail(&cb->list, &dev->write_waiting_list.list);
|
list_move_tail(&cb->list, &dev->write_waiting_list.list);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue