On 12/26/2016 08:08 AM, Nobuo Iwata wrote: > This patch set implements operations to export and unexport device > using pre-defined but un-used export and un-export request and reply. > > This patch modifies export and un-export reply in > tools/usb/usbip/src/usbip_network.h. The 'returncode' of each response > is removed. The status is set in op_common.status. > > Following status codes are added for this patch set. > ST_NO_FREE_POR > ST_NOT_FOUND > > The reason to use op_common.status: > 1) usbip_net_recv_op_common() hanles as error when the status is other > than ST_OK. > 2) The status has a commnet "add more error code". > > They become empty struct. Other empty struct, 'op_devlist_request', > defined. > > This patch also includes string translation of the status codes. > > Signed-off-by: Nobuo Iwata <nobuo.iwata@xxxxxxxxxxxxxxx> Reviewied-by: Krzysztof Opasiak <k.opasiak@xxxxxxxxxxx> > --- > tools/usb/usbip/src/usbip_network.c | 26 +++++++++++++++++++++++++- > tools/usb/usbip/src/usbip_network.h | 8 ++++---- > 2 files changed, 29 insertions(+), 5 deletions(-) > > diff --git a/tools/usb/usbip/src/usbip_network.c b/tools/usb/usbip/src/usbip_network.c > index b4c37e7..069ec54 100644 > --- a/tools/usb/usbip/src/usbip_network.c > +++ b/tools/usb/usbip/src/usbip_network.c > @@ -163,6 +163,29 @@ int usbip_net_send_op_common(int sockfd, uint32_t code, uint32_t status) > return 0; > } > > +struct op_common_error { > + uint32_t status; > + const char *str; > +}; > + > +struct op_common_error op_common_errors[] = { > + {ST_NA, "not available"}, > + {ST_NO_FREE_PORT, "no free port"}, > + {ST_DEVICE_NOT_FOUND, "device not found"}, > + {0, NULL} > +}; > + > +static const char *op_common_strerror(uint32_t status) > +{ > + struct op_common_error *err; > + > + for (err = op_common_errors; err->str != NULL; err++) { > + if (err->status == status) > + return err->str; > + } > + return "unknown error"; > +} > + > int usbip_net_recv_op_common(int sockfd, uint16_t *code) > { > struct op_common op_common; > @@ -196,7 +219,8 @@ int usbip_net_recv_op_common(int sockfd, uint16_t *code) > } > > if (op_common.status != ST_OK) { > - dbg("request failed at peer: %d", op_common.status); > + dbg("request failed at peer: %s", > + op_common_strerror(op_common.status)); > goto err; > } > > diff --git a/tools/usb/usbip/src/usbip_network.h b/tools/usb/usbip/src/usbip_network.h > index c1e875c..86c3ff0 100644 > --- a/tools/usb/usbip/src/usbip_network.h > +++ b/tools/usb/usbip/src/usbip_network.h > @@ -27,8 +27,10 @@ struct op_common { > uint16_t code; > > /* add more error code */ > -#define ST_OK 0x00 > -#define ST_NA 0x01 > +#define ST_OK 0x00 > +#define ST_NA 0x01 > +#define ST_NO_FREE_PORT 0x02 > +#define ST_DEVICE_NOT_FOUND 0x03 > uint32_t status; /* op_code status (for reply) */ > > } __attribute__((packed)); > @@ -93,7 +95,6 @@ struct op_export_request { > } __attribute__((packed)); > > struct op_export_reply { > - int returncode; > } __attribute__((packed)); > > > @@ -115,7 +116,6 @@ struct op_unexport_request { > } __attribute__((packed)); > > struct op_unexport_reply { > - int returncode; > } __attribute__((packed)); > > #define PACK_OP_UNEXPORT_REQUEST(pack, request) do {\ > -- Krzysztof Opasiak Samsung R&D Institute Poland Samsung Electronics -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html