Hi Denis,
On Thu, Sep 20, 2018 at 5:48 PM Denis Kenzior <denkenz(a)gmail.com> wrote:
Hi Giacinto,
An actual description of what is happening would be helpful
On 09/19/2018 11:47 PM, Giacinto Cifelli wrote:
> ---
> drivers/mbimmodem/mbim.c | 3 +++
> 1 file changed, 3 insertions(+)
> diff --git a/drivers/mbimmodem/mbim.c
b/drivers/mbimmodem/mbim.c
> index 9fcf44b..f4132d0 100644
> --- a/drivers/mbimmodem/mbim.c
> +++ b/drivers/mbimmodem/mbim.c
> @@ -781,6 +781,9 @@ static bool open_read_handler(struct l_io *io, void
*user_data)
> /* Grab OPEN_DONE Status field */
> if (l_get_le32(buf) != 0) {
> close(fd);
> + if (device->disconnect_handler)
> + device->disconnect_handler(device->ready_data);
> + device->is_ready = false
I don't get this part. So device->is_ready = false
assignment is
> pointless. It is already false.
> Also, aren't we going to call
device->disconnect_handler anyway by
> virtue of closing the fd? l_io_set_disconnect_handler which we set in
> mbim_device_new should already be taking care of this.
I will check about the is_ready
false, but definitely the
disconnect_handler is not called, I can tell you,
because on a special condition I have received a OPEN DONE with failure,
and the driver remained hanging.
However, after calling it, there is a second call to disconnect_handler,
but not if it is not done here.
Maybe the code should be verified somewhere else? Any other suggestions?
Regards,
> -Denis
Regards,
Giacinto