RE: [char-misc-next RESEND] mei: bus: enable non-blocking RX
From: Winkler, Tomas
Date: Tue Dec 06 2016 - 05:08:32 EST
>
> On Sat, Dec 03, 2016 at 12:15:25AM +0200, Tomas Winkler wrote:
> > From: Alexander Usyskin <alexander.usyskin@xxxxxxxxx>
> >
> > Enable non-blocking receive for drivers on mei bus, this allows
> > checking for data availability by mei client drivers. This is most
> > effective for fixed address clients, that lacks flow control.
> >
> > This function adds new API function mei_cldev_recv_nonblock(), it
> > retuns -EGAIN if function will block.
> >
> > Signed-off-by: Alexander Usyskin <alexander.usyskin@xxxxxxxxx>
> > Signed-off-by: Tomas Winkler <tomas.winkler@xxxxxxxxx>
> > ---
> > drivers/misc/mei/bus-fixup.c | 4 ++--
> > drivers/misc/mei/bus.c | 31 +++++++++++++++++++++++++++++--
> > drivers/misc/mei/mei_dev.h | 7 ++++++-
> > include/linux/mei_cl_bus.h | 6 ++++--
> > 4 files changed, 41 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/misc/mei/bus-fixup.c
> > b/drivers/misc/mei/bus-fixup.c index 7f2cef9011ae..18e05ca7584f 100644
> > --- a/drivers/misc/mei/bus-fixup.c
> > +++ b/drivers/misc/mei/bus-fixup.c
> > @@ -141,7 +141,7 @@ static int mei_osver(struct mei_cl_device *cldev)
> > if (ret < 0)
> > return ret;
> >
> > - ret = __mei_cl_recv(cldev->cl, buf, length);
> > + ret = __mei_cl_recv(cldev->cl, buf, length, 0);
> > if (ret < 0)
> > return ret;
> >
> > @@ -272,7 +272,7 @@ static int mei_nfc_if_version(struct mei_cl *cl,
> > return -ENOMEM;
> >
> > ret = 0;
> > - bytes_recv = __mei_cl_recv(cl, (u8 *)reply, if_version_length);
> > + bytes_recv = __mei_cl_recv(cl, (u8 *)reply, if_version_length, 0);
>
> I still don't like this, as here are two examples of you having to somehow
> mentally keep track of the "mode" of what is going on.
I know, but I don't have better solution. We try to keep the code documented as much as possible.
>
a> But it's your code, you have to maintain it, not me, good luck!
Fair enough
Tomas