diff mbox series

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

Message ID 20220623030405.1922980-1-neal_liu@aspeedtech.com (mailing list archive)
State Superseded
Headers show
Series [RESEND] usb: gadget: f_mass_storage: Make CD-ROM emulation works with Windows OS | expand

Commit Message

Neal Liu June 23, 2022, 3:04 a.m. UTC
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(+)

Comments

Greg KH June 23, 2022, 7:52 a.m. UTC | #1
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
Neal Liu June 23, 2022, 8:43 a.m. UTC | #2
> 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.
Alan Stern June 23, 2022, 2:48 p.m. UTC | #3
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
Neal Liu June 24, 2022, 2:11 a.m. UTC | #4
> 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.
diff mbox series

Patch

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);