2020-11-26 18:11:43

by Greg Kroah-Hartman

[permalink] [raw]
Subject: [PATCH 1/4] USB: gadget: f_rndis: fix bitrate for SuperSpeed and above

From: Will McVicker <[email protected]>

Align the SuperSpeed Plus bitrate for f_rndis to match f_ncm's ncm_bitrate
defined by commit 1650113888fe ("usb: gadget: f_ncm: add SuperSpeed descriptors
for CDC NCM").

Cc: Felipe Balbi <[email protected]>
Cc: EJ Hsu <[email protected]>
Cc: Peter Chen <[email protected]>
Cc: stable <[email protected]>
Signed-off-by: Will McVicker <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/usb/gadget/function/f_rndis.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/gadget/function/f_rndis.c b/drivers/usb/gadget/function/f_rndis.c
index 9534c8ab62a8..0739b05a0ef7 100644
--- a/drivers/usb/gadget/function/f_rndis.c
+++ b/drivers/usb/gadget/function/f_rndis.c
@@ -87,8 +87,10 @@ static inline struct f_rndis *func_to_rndis(struct usb_function *f)
/* peak (theoretical) bulk transfer rate in bits-per-second */
static unsigned int bitrate(struct usb_gadget *g)
{
+ if (gadget_is_superspeed(g) && g->speed >= USB_SPEED_SUPER_PLUS)
+ return 4250000000U;
if (gadget_is_superspeed(g) && g->speed == USB_SPEED_SUPER)
- return 13 * 1024 * 8 * 1000 * 8;
+ return 3750000000U;
else if (gadget_is_dualspeed(g) && g->speed == USB_SPEED_HIGH)
return 13 * 512 * 8 * 1000 * 8;
else
--
2.29.2


2020-11-26 18:16:47

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH 1/4] USB: gadget: f_rndis: fix bitrate for SuperSpeed and above

On Thu, Nov 26, 2020 at 07:02:32PM +0100, Greg Kroah-Hartman wrote:
> From: Will McVicker <[email protected]>
>
> Align the SuperSpeed Plus bitrate for f_rndis to match f_ncm's ncm_bitrate
> defined by commit 1650113888fe ("usb: gadget: f_ncm: add SuperSpeed descriptors
> for CDC NCM").
>
> Cc: Felipe Balbi <[email protected]>
> Cc: EJ Hsu <[email protected]>
> Cc: Peter Chen <[email protected]>
> Cc: stable <[email protected]>
> Signed-off-by: Will McVicker <[email protected]>
> Signed-off-by: Greg Kroah-Hartman <[email protected]>

Sent from wrong email address, will resend from proper one so they will
go through the lists and validate the sender properly, sorry about
that...

2020-11-27 08:38:32

by Greg Kroah-Hartman

[permalink] [raw]
Subject: [PATCH 2/4] USB: gadget: f_acm: add support for SuperSpeed Plus

From: "taehyun.cho" <[email protected]>

Setup the SuperSpeed Plus descriptors for f_acm. This allows the gadget
to work properly without crashing at SuperSpeed rates.

Cc: Felipe Balbi <[email protected]>
Cc: stable <[email protected]>
Signed-off-by: taehyun.cho <[email protected]>
Signed-off-by: Will McVicker <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/usb/gadget/function/f_acm.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/usb/gadget/function/f_acm.c b/drivers/usb/gadget/function/f_acm.c
index 46647bfac2ef..349945e064bb 100644
--- a/drivers/usb/gadget/function/f_acm.c
+++ b/drivers/usb/gadget/function/f_acm.c
@@ -686,7 +686,7 @@ acm_bind(struct usb_configuration *c, struct usb_function *f)
acm_ss_out_desc.bEndpointAddress = acm_fs_out_desc.bEndpointAddress;

status = usb_assign_descriptors(f, acm_fs_function, acm_hs_function,
- acm_ss_function, NULL);
+ acm_ss_function, acm_ss_function);
if (status)
goto fail;

--
2.29.2

2020-11-27 08:39:36

by Greg Kroah-Hartman

[permalink] [raw]
Subject: [PATCH 3/4] USB: gadget: f_fs: add SuperSpeed Plus support

From: "taehyun.cho" <[email protected]>

Setup the descriptors for SuperSpeed Plus for f_fs. This allows the
gadget to work properly without crashing at SuperSpeed rates.

Cc: Felipe Balbi <[email protected]>
Cc: Peter Chen <[email protected]>
Cc: stable <[email protected]>
Signed-off-by: taehyun.cho <[email protected]>
Signed-off-by: Will McVicker <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/usb/gadget/function/f_fs.c | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c
index 046f770a76da..a34a7c96a1ab 100644
--- a/drivers/usb/gadget/function/f_fs.c
+++ b/drivers/usb/gadget/function/f_fs.c
@@ -1327,6 +1327,7 @@ static long ffs_epfile_ioctl(struct file *file, unsigned code,
struct usb_endpoint_descriptor *desc;

switch (epfile->ffs->gadget->speed) {
+ case USB_SPEED_SUPER_PLUS:
case USB_SPEED_SUPER:
desc_idx = 2;
break;
@@ -3222,6 +3223,10 @@ static int _ffs_func_bind(struct usb_configuration *c,
func->function.os_desc_n =
c->cdev->use_os_string ? ffs->interfaces_count : 0;

+ if (likely(super)) {
+ func->function.ssp_descriptors =
+ usb_copy_descriptors(func->function.ss_descriptors);
+ }
/* And we're done */
ffs_event_add(ffs, FUNCTIONFS_BIND);
return 0;
--
2.29.2

2020-11-27 08:40:15

by Greg Kroah-Hartman

[permalink] [raw]
Subject: [PATCH 4/4] USB: gadget: f_midi: setup SuperSpeed Plus descriptors

From: Will McVicker <[email protected]>

Needed for SuperSpeed Plus support for f_midi. This allows the
gadget to work properly without crashing at SuperSpeed rates.

Cc: Felipe Balbi <[email protected]>
Cc: stable <[email protected]>
Signed-off-by: Will McVicker <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/usb/gadget/function/f_midi.c | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/drivers/usb/gadget/function/f_midi.c b/drivers/usb/gadget/function/f_midi.c
index 85cb15734aa8..ceb67651de4f 100644
--- a/drivers/usb/gadget/function/f_midi.c
+++ b/drivers/usb/gadget/function/f_midi.c
@@ -1048,6 +1048,11 @@ static int f_midi_bind(struct usb_configuration *c, struct usb_function *f)
f->ss_descriptors = usb_copy_descriptors(midi_function);
if (!f->ss_descriptors)
goto fail_f_midi;
+ if (gadget_is_superspeed_plus(c->cdev->gadget)) {
+ f->ssp_descriptors = usb_copy_descriptors(midi_function);
+ if (!f->ssp_descriptors)
+ goto fail_f_midi;
+ }
}

kfree(midi_function);
--
2.29.2

2020-11-27 12:12:13

by Peter Chen

[permalink] [raw]
Subject: Re: [PATCH 4/4] USB: gadget: f_midi: setup SuperSpeed Plus descriptors

On 20-11-26 19:09:37, Greg Kroah-Hartman wrote:
> From: Will McVicker <[email protected]>
>
> Needed for SuperSpeed Plus support for f_midi. This allows the
> gadget to work properly without crashing at SuperSpeed rates.
>
> Cc: Felipe Balbi <[email protected]>
> Cc: stable <[email protected]>
> Signed-off-by: Will McVicker <[email protected]>
> Signed-off-by: Greg Kroah-Hartman <[email protected]>
> ---
> drivers/usb/gadget/function/f_midi.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/drivers/usb/gadget/function/f_midi.c b/drivers/usb/gadget/function/f_midi.c
> index 85cb15734aa8..ceb67651de4f 100644
> --- a/drivers/usb/gadget/function/f_midi.c
> +++ b/drivers/usb/gadget/function/f_midi.c
> @@ -1048,6 +1048,11 @@ static int f_midi_bind(struct usb_configuration *c, struct usb_function *f)
> f->ss_descriptors = usb_copy_descriptors(midi_function);
> if (!f->ss_descriptors)
> goto fail_f_midi;

Add one blank line, otherwise:

Reviewed-by: Peter Chen <[email protected]>

Peter
> + if (gadget_is_superspeed_plus(c->cdev->gadget)) {
> + f->ssp_descriptors = usb_copy_descriptors(midi_function);
> + if (!f->ssp_descriptors)
> + goto fail_f_midi;
> + }
> }
>
> kfree(midi_function);
> --
> 2.29.2
>

--

Thanks,
Peter Chen

2020-11-27 13:53:47

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH 3/4] USB: gadget: f_fs: add SuperSpeed Plus support

On Fri, Nov 27, 2020 at 02:55:47AM +0000, Peter Chen wrote:
> On 20-11-26 19:09:36, Greg Kroah-Hartman wrote:
> > From: "taehyun.cho" <[email protected]>
> >
> > Setup the descriptors for SuperSpeed Plus for f_fs. This allows the
> > gadget to work properly without crashing at SuperSpeed rates.
> >
> > Cc: Felipe Balbi <[email protected]>
> > Cc: Peter Chen <[email protected]>
> > Cc: stable <[email protected]>
> > Signed-off-by: taehyun.cho <[email protected]>
> > Signed-off-by: Will McVicker <[email protected]>
> > Signed-off-by: Greg Kroah-Hartman <[email protected]>
> > ---
> > drivers/usb/gadget/function/f_fs.c | 5 +++++
> > 1 file changed, 5 insertions(+)
> >
> > diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c
> > index 046f770a76da..a34a7c96a1ab 100644
> > --- a/drivers/usb/gadget/function/f_fs.c
> > +++ b/drivers/usb/gadget/function/f_fs.c
> > @@ -1327,6 +1327,7 @@ static long ffs_epfile_ioctl(struct file *file, unsigned code,
> > struct usb_endpoint_descriptor *desc;
> >
> > switch (epfile->ffs->gadget->speed) {
> > + case USB_SPEED_SUPER_PLUS:
> > case USB_SPEED_SUPER:
> > desc_idx = 2;
> > break;
> > @@ -3222,6 +3223,10 @@ static int _ffs_func_bind(struct usb_configuration *c,
> > func->function.os_desc_n =
> > c->cdev->use_os_string ? ffs->interfaces_count : 0;
> >
> > + if (likely(super)) {
>
> Why likely is used? Currently, there are still lots of HS devices on market
> or on the development.

It looks to be a cut/paste of the other tests above, all of which say
"likely" which we all know is not true at all. I'll leave this now, and
add a patch that removes them all as this is NOT a function where it
should be used at all.

thanks for the review.

greg k-h

2020-11-27 18:32:51

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH 4/4] USB: gadget: f_midi: setup SuperSpeed Plus descriptors

On Fri, Nov 27, 2020 at 12:06:50PM +0000, Peter Chen wrote:
> On 20-11-26 19:09:37, Greg Kroah-Hartman wrote:
> > From: Will McVicker <[email protected]>
> >
> > Needed for SuperSpeed Plus support for f_midi. This allows the
> > gadget to work properly without crashing at SuperSpeed rates.
> >
> > Cc: Felipe Balbi <[email protected]>
> > Cc: stable <[email protected]>
> > Signed-off-by: Will McVicker <[email protected]>
> > Signed-off-by: Greg Kroah-Hartman <[email protected]>
> > ---
> > drivers/usb/gadget/function/f_midi.c | 5 +++++
> > 1 file changed, 5 insertions(+)
> >
> > diff --git a/drivers/usb/gadget/function/f_midi.c b/drivers/usb/gadget/function/f_midi.c
> > index 85cb15734aa8..ceb67651de4f 100644
> > --- a/drivers/usb/gadget/function/f_midi.c
> > +++ b/drivers/usb/gadget/function/f_midi.c
> > @@ -1048,6 +1048,11 @@ static int f_midi_bind(struct usb_configuration *c, struct usb_function *f)
> > f->ss_descriptors = usb_copy_descriptors(midi_function);
> > if (!f->ss_descriptors)
> > goto fail_f_midi;
>
> Add one blank line, otherwise:

Will add it, good idea.

> Reviewed-by: Peter Chen <[email protected]>

Thanks for reviewing all of these, much appreciated.

greg k-h