serial: report port-not-open in queueing commands via callback instead of just returning.

This permits routines like mm-generic-gsm.c:simple_get_status() to
work again, as their callbacks get the error they are expecting. To
make this work, adapt get_csq_done() to handle a NULL response when
error is set, and make sure that multiple errors don't step on each
other in the mm_callback_info_chain() sequence created by
simple_get_status().

BUG=chromium-os:23341
TEST=Disable mobile data, run "modem status"; it should not pause and
there should not be any errors logged in /var/log/messages

Change-Id: Ib73f78242f6607a617c6bf75e377912b1b5cd67f
Reviewed-on: https://gerrit.chromium.org/gerrit/12081
Reviewed-by: Jason Glasgow <jglasgow@chromium.org>
Tested-by: Nathan J. Williams <njw@chromium.org>
Commit-Ready: Nathan J. Williams <njw@chromium.org>
2 files changed