Messages in this thread | | | Date | Tue, 6 Jul 2021 20:13:24 +0200 | From | Greg KH <> | Subject | Re: [PATCH v12 3/6] usb: dwc3: Resize TX FIFOs to meet EP bursting requirements |
| |
On Fri, Jul 02, 2021 at 02:37:32AM -0700, Wesley Cheng wrote: > Some devices have USB compositions which may require multiple endpoints > that support EP bursting. HW defined TX FIFO sizes may not always be > sufficient for these compositions. By utilizing flexible TX FIFO > allocation, this allows for endpoints to request the required FIFO depth to > achieve higher bandwidth. With some higher bMaxBurst configurations, using > a larger TX FIFO size results in better TX throughput. > > By introducing the check_config() callback, the resizing logic can fetch > the maximum number of endpoints used in the USB composition (can contain > multiple configurations), which helps ensure that the resizing logic can > fulfill the configuration(s), or return an error to the gadget layer > otherwise during bind time. > > Signed-off-by: Wesley Cheng <wcheng@codeaurora.org> > --- > drivers/usb/dwc3/core.c | 9 ++ > drivers/usb/dwc3/core.h | 15 ++++ > drivers/usb/dwc3/ep0.c | 2 + > drivers/usb/dwc3/gadget.c | 221 ++++++++++++++++++++++++++++++++++++++++++++++ > 4 files changed, 247 insertions(+) > > diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c > index e0a8e79..a7bcdb9d 100644 > --- a/drivers/usb/dwc3/core.c > +++ b/drivers/usb/dwc3/core.c > @@ -1267,6 +1267,7 @@ static void dwc3_get_properties(struct dwc3 *dwc) > u8 rx_max_burst_prd; > u8 tx_thr_num_pkt_prd; > u8 tx_max_burst_prd; > + u8 tx_fifo_resize_max_num; > const char *usb_psy_name; > int ret; > > @@ -1282,6 +1283,8 @@ static void dwc3_get_properties(struct dwc3 *dwc) > */ > hird_threshold = 12; > > + tx_fifo_resize_max_num = 6; > +
No comment as to why 6 was picked, like the other defaults in this function?
Why was 6 picked?
> dwc->maximum_speed = usb_get_maximum_speed(dev); > dwc->max_ssp_rate = usb_get_maximum_ssp_rate(dev); > dwc->dr_mode = usb_get_dr_mode(dev); > @@ -1325,6 +1328,10 @@ static void dwc3_get_properties(struct dwc3 *dwc) > &tx_thr_num_pkt_prd); > device_property_read_u8(dev, "snps,tx-max-burst-prd", > &tx_max_burst_prd); > + dwc->do_fifo_resize = device_property_read_bool(dev, > + "tx-fifo-resize"); > + device_property_read_u8(dev, "tx-fifo-max-num", > + &tx_fifo_resize_max_num);
So you overwrite the "max" with whatever is given to you? What if tx-fifo-resize is not enabled?
thanks,
greg k-h
| |