Message ID | 20201127140559.381351-2-gregkh@linuxfoundation.org |
---|---|
State | New |
Headers | show |
Series | [v2,1/5] USB: gadget: f_rndis: fix bitrate for SuperSpeed and above | expand |
On 20-11-27 15:05:55, Greg Kroah-Hartman wrote: > From: Will McVicker <willmcvicker@google.com> > > 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 <balbi@kernel.org> > Cc: EJ Hsu <ejh@nvidia.com> > Cc: Peter Chen <peter.chen@nxp.com> > Cc: stable <stable@vger.kernel.org> > Signed-off-by: Will McVicker <willmcvicker@google.com> > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > --- > 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; Is tested value or spec defined value? > if (gadget_is_superspeed(g) && g->speed == USB_SPEED_SUPER) > - return 13 * 1024 * 8 * 1000 * 8; > + return 3750000000U; 13 * 1024 * 8 * 1000 * 8 = 851,968,000, how 3750000000U is calculated? > else if (gadget_is_dualspeed(g) && g->speed == USB_SPEED_HIGH) > return 13 * 512 * 8 * 1000 * 8; > else > -- > 2.29.2 >
On Mon, Nov 30, 2020 at 06:24:40AM +0000, Peter Chen wrote: > On 20-11-27 15:05:55, Greg Kroah-Hartman wrote: > > From: Will McVicker <willmcvicker@google.com> > > > > 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 <balbi@kernel.org> > > Cc: EJ Hsu <ejh@nvidia.com> > > Cc: Peter Chen <peter.chen@nxp.com> > > Cc: stable <stable@vger.kernel.org> > > Signed-off-by: Will McVicker <willmcvicker@google.com> > > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > > --- > > 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; > > Is tested value or spec defined value? > > > if (gadget_is_superspeed(g) && g->speed == USB_SPEED_SUPER) > > - return 13 * 1024 * 8 * 1000 * 8; > > + return 3750000000U; > > 13 * 1024 * 8 * 1000 * 8 = 851,968,000, how 3750000000U is calculated? > > > else if (gadget_is_dualspeed(g) && g->speed == USB_SPEED_HIGH) > > return 13 * 512 * 8 * 1000 * 8; > > else > > -- > > 2.29.2 > > > > -- > > Thanks, > Peter Chen Hi Peter, Thanks for the reviews! Regarding the updated transfer rates, please refer to the f_ncm commit email thread by Lorenzo that explains the reasoning behind these speeds: https://patchwork.kernel.org/project/linux-usb/patch/20200818165848.4117493-1-lorenzo@google.com/ Thanks, Will
> > From: Will McVicker <willmcvicker@google.com> > Reviewed-by: Peter Chen <peter.chen@nxp.com> Peter > 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 <balbi@kernel.org> > Cc: EJ Hsu <ejh@nvidia.com> > Cc: Peter Chen <peter.chen@nxp.com> > Cc: stable <stable@vger.kernel.org> > Signed-off-by: Will McVicker <willmcvicker@google.com> > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > --- > 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 >
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