2022-06-23 04:51:15

by Neal Liu

[permalink] [raw]
Subject: [PATCH RESEND] usb: gadget: f_mass_storage: Make CD-ROM emulation works with Windows OS

Add read TOC with format 2 to support CD-ROM emulation with
Windows OS.
This patch is tested on Windows OS Server 2019.

Signed-off-by: Neal Liu <[email protected]>
---
drivers/usb/gadget/function/f_mass_storage.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/usb/gadget/function/f_mass_storage.c b/drivers/usb/gadget/function/f_mass_storage.c
index 3a77bca0ebe1..3c2a5f1e8b66 100644
--- a/drivers/usb/gadget/function/f_mass_storage.c
+++ b/drivers/usb/gadget/function/f_mass_storage.c
@@ -1209,6 +1209,7 @@ static int do_read_toc(struct fsg_common *common, struct fsg_buffhd *bh)

switch (format) {
case 0:
+ case 1:
/* Formatted TOC */
len = 4 + 2*8; /* 4 byte header + 2 descriptors */
memset(buf, 0, len);
--
2.25.1


2022-06-23 08:06:26

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH RESEND] usb: gadget: f_mass_storage: Make CD-ROM emulation works with Windows OS

On Thu, Jun 23, 2022 at 11:04:05AM +0800, Neal Liu wrote:
> Add read TOC with format 2 to support CD-ROM emulation with
> Windows OS.
> This patch is tested on Windows OS Server 2019.
>
> Signed-off-by: Neal Liu <[email protected]>
> ---
> drivers/usb/gadget/function/f_mass_storage.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/usb/gadget/function/f_mass_storage.c b/drivers/usb/gadget/function/f_mass_storage.c
> index 3a77bca0ebe1..3c2a5f1e8b66 100644
> --- a/drivers/usb/gadget/function/f_mass_storage.c
> +++ b/drivers/usb/gadget/function/f_mass_storage.c
> @@ -1209,6 +1209,7 @@ static int do_read_toc(struct fsg_common *common, struct fsg_buffhd *bh)
>
> switch (format) {
> case 0:
> + case 1:
> /* Formatted TOC */
> len = 4 + 2*8; /* 4 byte header + 2 descriptors */
> memset(buf, 0, len);
> --
> 2.25.1
>

Why was this a "RESEND"? Always put the reason why below the --- line
so we know what is going on...

thanks,

greg k-h

2022-06-23 09:06:21

by Neal Liu

[permalink] [raw]
Subject: RE: [PATCH RESEND] usb: gadget: f_mass_storage: Make CD-ROM emulation works with Windows OS

> On Thu, Jun 23, 2022 at 11:04:05AM +0800, Neal Liu wrote:
> > Add read TOC with format 2 to support CD-ROM emulation with Windows
> > OS.
> > This patch is tested on Windows OS Server 2019.
> >
> > Signed-off-by: Neal Liu <[email protected]>
> > ---

Reason for resend: mail recipient is broken. Resend it correctly.
---
> > drivers/usb/gadget/function/f_mass_storage.c | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/drivers/usb/gadget/function/f_mass_storage.c
> > b/drivers/usb/gadget/function/f_mass_storage.c
> > index 3a77bca0ebe1..3c2a5f1e8b66 100644
> > --- a/drivers/usb/gadget/function/f_mass_storage.c
> > +++ b/drivers/usb/gadget/function/f_mass_storage.c
> > @@ -1209,6 +1209,7 @@ static int do_read_toc(struct fsg_common
> > *common, struct fsg_buffhd *bh)
> >
> > switch (format) {
> > case 0:
> > + case 1:
> > /* Formatted TOC */
> > len = 4 + 2*8; /* 4 byte header + 2 descriptors */
> > memset(buf, 0, len);
> > --
> > 2.25.1
> >
>
> Why was this a "RESEND"? Always put the reason why below the --- line
> so we know what is going on...
>
Add reason above, thanks.

2022-06-23 15:23:47

by Alan Stern

[permalink] [raw]
Subject: Re: [PATCH RESEND] usb: gadget: f_mass_storage: Make CD-ROM emulation works with Windows OS

On Thu, Jun 23, 2022 at 11:04:05AM +0800, Neal Liu wrote:
> Add read TOC with format 2 to support CD-ROM emulation with
> Windows OS.
> This patch is tested on Windows OS Server 2019.

This description says "format 2", but the patch actually adds code for
the case where format is 1. This sort of mistake is not acceptable.

> Signed-off-by: Neal Liu <[email protected]>
> ---
> drivers/usb/gadget/function/f_mass_storage.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/usb/gadget/function/f_mass_storage.c b/drivers/usb/gadget/function/f_mass_storage.c
> index 3a77bca0ebe1..3c2a5f1e8b66 100644
> --- a/drivers/usb/gadget/function/f_mass_storage.c
> +++ b/drivers/usb/gadget/function/f_mass_storage.c
> @@ -1209,6 +1209,7 @@ static int do_read_toc(struct fsg_common *common, struct fsg_buffhd *bh)
>
> switch (format) {
> case 0:
> + case 1:
> /* Formatted TOC */
> len = 4 + 2*8; /* 4 byte header + 2 descriptors */
> memset(buf, 0, len);

When format is 1, the driver is supposed to ignore the start_track
value. Your patch does not do this.

The default case in this switch statement has a comment saying that
Mutil-session is not supported. As a result of this change, it now _is_
supported. The patch needs to update that comment.

Alan Stern

2022-06-24 02:15:41

by Neal Liu

[permalink] [raw]
Subject: RE: [PATCH RESEND] usb: gadget: f_mass_storage: Make CD-ROM emulation works with Windows OS

> On Thu, Jun 23, 2022 at 11:04:05AM +0800, Neal Liu wrote:
> > Add read TOC with format 2 to support CD-ROM emulation with Windows
> > OS.
> > This patch is tested on Windows OS Server 2019.
>
> This description says "format 2", but the patch actually adds code for the case
> where format is 1. This sort of mistake is not acceptable.

Sorry for typo. I'll update it for next patch.

>
> > Signed-off-by: Neal Liu <[email protected]>
> > ---
> > drivers/usb/gadget/function/f_mass_storage.c | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/drivers/usb/gadget/function/f_mass_storage.c
> > b/drivers/usb/gadget/function/f_mass_storage.c
> > index 3a77bca0ebe1..3c2a5f1e8b66 100644
> > --- a/drivers/usb/gadget/function/f_mass_storage.c
> > +++ b/drivers/usb/gadget/function/f_mass_storage.c
> > @@ -1209,6 +1209,7 @@ static int do_read_toc(struct fsg_common
> > *common, struct fsg_buffhd *bh)
> >
> > switch (format) {
> > case 0:
> > + case 1:
> > /* Formatted TOC */
> > len = 4 + 2*8; /* 4 byte header + 2 descriptors */
> > memset(buf, 0, len);
>
> When format is 1, the driver is supposed to ignore the start_track value. Your
> patch does not do this.
>
> The default case in this switch statement has a comment saying that
> Mutil-session is not supported. As a result of this change, it now _is_
> supported. The patch needs to update that comment.

Okay, thanks for pointing out. I'll update it as well.