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

Neal Liu posted 1 patch 3 years, 10 months ago
There is a newer version of this series
drivers/usb/gadget/function/f_mass_storage.c | 1 +
1 file changed, 1 insertion(+)
[PATCH RESEND] usb: gadget: f_mass_storage: Make CD-ROM emulation works with Windows OS
Posted by Neal Liu 3 years, 10 months ago
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 <neal_liu@aspeedtech.com>
---
 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
Re: [PATCH RESEND] usb: gadget: f_mass_storage: Make CD-ROM emulation works with Windows OS
Posted by Alan Stern 3 years, 10 months ago
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 <neal_liu@aspeedtech.com>
> ---
>  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
RE: [PATCH RESEND] usb: gadget: f_mass_storage: Make CD-ROM emulation works with Windows OS
Posted by Neal Liu 3 years, 9 months ago
> 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 <neal_liu@aspeedtech.com>
> > ---
> >  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.
Re: [PATCH RESEND] usb: gadget: f_mass_storage: Make CD-ROM emulation works with Windows OS
Posted by Greg Kroah-Hartman 3 years, 10 months ago
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 <neal_liu@aspeedtech.com>
> ---
>  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
RE: [PATCH RESEND] usb: gadget: f_mass_storage: Make CD-ROM emulation works with Windows OS
Posted by Neal Liu 3 years, 10 months ago
> 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 <neal_liu@aspeedtech.com>
> > ---

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.