linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Kelly Devilliv <kelly.devilliv@gmail.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Sasha Levin <sashal@kernel.org>,
	linux-usb@vger.kernel.org
Subject: [PATCH AUTOSEL 4.19 10/74] usb: host: fotg210: fix the endpoint's transactional opportunities calculation
Date: Thu,  9 Sep 2021 07:56:22 -0400	[thread overview]
Message-ID: <20210909115726.149004-10-sashal@kernel.org> (raw)
In-Reply-To: <20210909115726.149004-1-sashal@kernel.org>

From: Kelly Devilliv <kelly.devilliv@gmail.com>

[ Upstream commit c2e898764245c852bc8ee4857613ba4f3a6d761d ]

Now that usb_endpoint_maxp() only returns the lowest
11 bits from wMaxPacketSize, we should make use of the
usb_endpoint_* helpers instead and remove the unnecessary
max_packet()/hb_mult() macro.

Signed-off-by: Kelly Devilliv <kelly.devilliv@gmail.com>
Link: https://lore.kernel.org/r/20210627125747.127646-3-kelly.devilliv@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/usb/host/fotg210-hcd.c | 36 ++++++++++++++++------------------
 1 file changed, 17 insertions(+), 19 deletions(-)

diff --git a/drivers/usb/host/fotg210-hcd.c b/drivers/usb/host/fotg210-hcd.c
index 226b38274a6e..4e98f7b492df 100644
--- a/drivers/usb/host/fotg210-hcd.c
+++ b/drivers/usb/host/fotg210-hcd.c
@@ -2509,11 +2509,6 @@ static unsigned qh_completions(struct fotg210_hcd *fotg210,
 	return count;
 }
 
-/* high bandwidth multiplier, as encoded in highspeed endpoint descriptors */
-#define hb_mult(wMaxPacketSize) (1 + (((wMaxPacketSize) >> 11) & 0x03))
-/* ... and packet size, for any kind of endpoint descriptor */
-#define max_packet(wMaxPacketSize) ((wMaxPacketSize) & 0x07ff)
-
 /* reverse of qh_urb_transaction:  free a list of TDs.
  * used for cleanup after errors, before HC sees an URB's TDs.
  */
@@ -2599,7 +2594,7 @@ static struct list_head *qh_urb_transaction(struct fotg210_hcd *fotg210,
 		token |= (1 /* "in" */ << 8);
 	/* else it's already initted to "out" pid (0 << 8) */
 
-	maxpacket = max_packet(usb_maxpacket(urb->dev, urb->pipe, !is_input));
+	maxpacket = usb_maxpacket(urb->dev, urb->pipe, !is_input);
 
 	/*
 	 * buffer gets wrapped in one or more qtds;
@@ -2713,9 +2708,11 @@ static struct fotg210_qh *qh_make(struct fotg210_hcd *fotg210, struct urb *urb,
 		gfp_t flags)
 {
 	struct fotg210_qh *qh = fotg210_qh_alloc(fotg210, flags);
+	struct usb_host_endpoint *ep;
 	u32 info1 = 0, info2 = 0;
 	int is_input, type;
 	int maxp = 0;
+	int mult;
 	struct usb_tt *tt = urb->dev->tt;
 	struct fotg210_qh_hw *hw;
 
@@ -2730,14 +2727,15 @@ static struct fotg210_qh *qh_make(struct fotg210_hcd *fotg210, struct urb *urb,
 
 	is_input = usb_pipein(urb->pipe);
 	type = usb_pipetype(urb->pipe);
-	maxp = usb_maxpacket(urb->dev, urb->pipe, !is_input);
+	ep = usb_pipe_endpoint(urb->dev, urb->pipe);
+	maxp = usb_endpoint_maxp(&ep->desc);
+	mult = usb_endpoint_maxp_mult(&ep->desc);
 
 	/* 1024 byte maxpacket is a hardware ceiling.  High bandwidth
 	 * acts like up to 3KB, but is built from smaller packets.
 	 */
-	if (max_packet(maxp) > 1024) {
-		fotg210_dbg(fotg210, "bogus qh maxpacket %d\n",
-				max_packet(maxp));
+	if (maxp > 1024) {
+		fotg210_dbg(fotg210, "bogus qh maxpacket %d\n", maxp);
 		goto done;
 	}
 
@@ -2751,8 +2749,7 @@ static struct fotg210_qh *qh_make(struct fotg210_hcd *fotg210, struct urb *urb,
 	 */
 	if (type == PIPE_INTERRUPT) {
 		qh->usecs = NS_TO_US(usb_calc_bus_time(USB_SPEED_HIGH,
-				is_input, 0,
-				hb_mult(maxp) * max_packet(maxp)));
+				is_input, 0, mult * maxp));
 		qh->start = NO_FRAME;
 
 		if (urb->dev->speed == USB_SPEED_HIGH) {
@@ -2789,7 +2786,7 @@ static struct fotg210_qh *qh_make(struct fotg210_hcd *fotg210, struct urb *urb,
 			think_time = tt ? tt->think_time : 0;
 			qh->tt_usecs = NS_TO_US(think_time +
 					usb_calc_bus_time(urb->dev->speed,
-					is_input, 0, max_packet(maxp)));
+					is_input, 0, maxp));
 			qh->period = urb->interval;
 			if (qh->period > fotg210->periodic_size) {
 				qh->period = fotg210->periodic_size;
@@ -2852,11 +2849,11 @@ static struct fotg210_qh *qh_make(struct fotg210_hcd *fotg210, struct urb *urb,
 			 * to help them do so.  So now people expect to use
 			 * such nonconformant devices with Linux too; sigh.
 			 */
-			info1 |= max_packet(maxp) << 16;
+			info1 |= maxp << 16;
 			info2 |= (FOTG210_TUNE_MULT_HS << 30);
 		} else {		/* PIPE_INTERRUPT */
-			info1 |= max_packet(maxp) << 16;
-			info2 |= hb_mult(maxp) << 30;
+			info1 |= maxp << 16;
+			info2 |= mult << 30;
 		}
 		break;
 	default:
@@ -3926,6 +3923,7 @@ static void iso_stream_init(struct fotg210_hcd *fotg210,
 	int is_input;
 	long bandwidth;
 	unsigned multi;
+	struct usb_host_endpoint *ep;
 
 	/*
 	 * this might be a "high bandwidth" highspeed endpoint,
@@ -3933,14 +3931,14 @@ static void iso_stream_init(struct fotg210_hcd *fotg210,
 	 */
 	epnum = usb_pipeendpoint(pipe);
 	is_input = usb_pipein(pipe) ? USB_DIR_IN : 0;
-	maxp = usb_maxpacket(dev, pipe, !is_input);
+	ep = usb_pipe_endpoint(dev, pipe);
+	maxp = usb_endpoint_maxp(&ep->desc);
 	if (is_input)
 		buf1 = (1 << 11);
 	else
 		buf1 = 0;
 
-	maxp = max_packet(maxp);
-	multi = hb_mult(maxp);
+	multi = usb_endpoint_maxp_mult(&ep->desc);
 	buf1 |= maxp;
 	maxp *= multi;
 
-- 
2.30.2


  parent reply	other threads:[~2021-09-09 13:06 UTC|newest]

Thread overview: 77+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-09 11:56 [PATCH AUTOSEL 4.19 01/74] media: dib8000: rewrite the init prbs logic Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 02/74] crypto: mxs-dcp - Use sg_mapping_iter to copy data Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 03/74] PCI: Use pci_update_current_state() in pci_enable_device_flags() Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 04/74] tipc: keep the skb in rcv queue until the whole data is read Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 05/74] iio: dac: ad5624r: Fix incorrect handling of an optional regulator Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 06/74] ARM: dts: qcom: apq8064: correct clock names Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 07/74] video: fbdev: kyro: fix a DoS bug by restricting user input Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 08/74] netlink: Deal with ESRCH error in nlmsg_notify() Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 09/74] Smack: Fix wrong semantics in smk_access_entry() Sasha Levin
2021-09-09 11:56 ` Sasha Levin [this message]
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 11/74] usb: host: fotg210: fix the actual_length of an iso packet Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 12/74] usb: gadget: u_ether: fix a potential null pointer dereference Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 13/74] usb: gadget: composite: Allow bMaxPower=0 if self-powered Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 14/74] staging: board: Fix uninitialized spinlock when attaching genpd Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 15/74] tty: serial: jsm: hold port lock when reporting modem line changes Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 16/74] drm/amd/amdgpu: Update debugfs link_settings output link_rate field in hex Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 17/74] bpf/tests: Fix copy-and-paste error in double word test Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 18/74] bpf/tests: Do not PASS tests without actually testing the result Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 19/74] video: fbdev: asiliantfb: Error out if 'pixclock' equals zero Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 20/74] video: fbdev: kyro: " Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 21/74] video: fbdev: riva: " Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 22/74] ipv4: ip_output.c: Fix out-of-bounds warning in ip_copy_addrs() Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 23/74] flow_dissector: Fix out-of-bounds warnings Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 24/74] s390/jump_label: print real address in a case of a jump label bug Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 25/74] serial: 8250: Define RX trigger levels for OxSemi 950 devices Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 26/74] xtensa: ISS: don't panic in rs_init Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 27/74] hvsi: don't panic on tty_register_driver failure Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 28/74] serial: 8250_pci: make setup_port() parameters explicitly unsigned Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 29/74] staging: ks7010: Fix the initialization of the 'sleep_status' structure Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 30/74] samples: bpf: Fix tracex7 error raised on the missing argument Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 31/74] ata: sata_dwc_460ex: No need to call phy_exit() befre phy_init() Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 32/74] Bluetooth: skip invalid hci_sync_conn_complete_evt Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 33/74] bonding: 3ad: fix the concurrency between __bond_release_one() and bond_3ad_state_machine_handler() Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 34/74] ASoC: Intel: bytcr_rt5640: Move "Platform Clock" routes to the maps for the matching in-/output Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 35/74] bpf: Fix off-by-one in tail call count limiting Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 36/74] media: imx258: Rectify mismatch of VTS value Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 37/74] media: imx258: Limit the max analogue gain to 480 Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 38/74] media: v4l2-dv-timings.c: fix wrong condition in two for-loops Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 39/74] media: TDA1997x: fix tda1997x_query_dv_timings() return value Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 40/74] media: tegra-cec: Handle errors of clk_prepare_enable() Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 41/74] ARM: dts: imx53-ppd: Fix ACHC entry Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 42/74] arm64: dts: qcom: sdm660: use reg value for memory node Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 43/74] net: ethernet: stmmac: Do not use unreachable() in ipq806x_gmac_probe() Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 44/74] Bluetooth: schedule SCO timeouts with delayed_work Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 45/74] Bluetooth: avoid circular locks in sco_sock_connect Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 46/74] gpu: drm: amd: amdgpu: amdgpu_i2c: fix possible uninitialized-variable access in amdgpu_i2c_router_select_ddc_port() Sasha Levin
2021-09-09 11:56 ` [PATCH AUTOSEL 4.19 47/74] ARM: tegra: tamonten: Fix UART pad setting Sasha Levin
2021-09-09 11:57 ` [PATCH AUTOSEL 4.19 48/74] ACPICA: iASL: Fix for WPBT table with no command-line arguments Sasha Levin
2021-09-09 11:57 ` [PATCH AUTOSEL 4.19 49/74] Bluetooth: Fix handling of LE Enhanced Connection Complete Sasha Levin
2021-09-09 11:57 ` [PATCH AUTOSEL 4.19 50/74] serial: sh-sci: fix break handling for sysrq Sasha Levin
2021-09-09 11:57 ` [PATCH AUTOSEL 4.19 51/74] tcp: enable data-less, empty-cookie SYN with TFO_SERVER_COOKIE_NOT_REQD Sasha Levin
2021-09-09 11:57 ` [PATCH AUTOSEL 4.19 52/74] rpc: fix gss_svc_init cleanup on failure Sasha Levin
2021-09-09 11:57 ` [PATCH AUTOSEL 4.19 53/74] staging: rts5208: Fix get_ms_information() heap buffer size Sasha Levin
2021-09-09 11:57 ` [PATCH AUTOSEL 4.19 54/74] gfs2: Don't call dlm after protocol is unmounted Sasha Levin
2021-09-09 11:57 ` [PATCH AUTOSEL 4.19 55/74] btrfs: subpage: check if there are compressed extents inside one page Sasha Levin
2021-09-09 13:01   ` David Sterba
2021-09-09 11:57 ` [PATCH AUTOSEL 4.19 56/74] btrfs: subpage: fix race between prepare_pages() and btrfs_releasepage() Sasha Levin
2021-09-09 13:01   ` David Sterba
2021-09-09 11:57 ` [PATCH AUTOSEL 4.19 57/74] ASoC: intel: atom: Revert PCM buffer address setup workaround again Sasha Levin
2021-09-09 12:06   ` Takashi Iwai
2021-09-09 11:57 ` [PATCH AUTOSEL 4.19 58/74] of: Don't allow __of_attached_node_sysfs() without CONFIG_SYSFS Sasha Levin
2021-09-09 11:57 ` [PATCH AUTOSEL 4.19 59/74] mmc: sdhci-of-arasan: Check return value of non-void funtions Sasha Levin
2021-09-09 11:57 ` [PATCH AUTOSEL 4.19 60/74] mmc: rtsx_pci: Fix long reads when clock is prescaled Sasha Levin
2021-09-09 11:57 ` [PATCH AUTOSEL 4.19 61/74] selftests/bpf: Enlarge select() timeout for test_maps Sasha Levin
2021-09-09 11:57 ` [PATCH AUTOSEL 4.19 62/74] mmc: core: Return correct emmc response in case of ioctl error Sasha Levin
2021-09-09 11:57 ` [PATCH AUTOSEL 4.19 63/74] cifs: fix wrong release in sess_alloc_buffer() failed path Sasha Levin
2021-09-09 11:57 ` [PATCH AUTOSEL 4.19 64/74] Revert "USB: xhci: fix U1/U2 handling for hardware with XHCI_INTEL_HOST quirk set" Sasha Levin
2021-09-09 11:57 ` [PATCH AUTOSEL 4.19 65/74] usb: musb: musb_dsps: request_irq() after initializing musb Sasha Levin
2021-09-09 11:57 ` [PATCH AUTOSEL 4.19 66/74] usbip: give back URBs for unsent unlink requests during cleanup Sasha Levin
2021-09-09 11:57 ` [PATCH AUTOSEL 4.19 67/74] usbip:vhci_hcd USB port can get stuck in the disabled state Sasha Levin
2021-09-09 11:57 ` [PATCH AUTOSEL 4.19 68/74] ASoC: rockchip: i2s: Fix regmap_ops hang Sasha Levin
2021-09-09 11:57 ` [PATCH AUTOSEL 4.19 69/74] ASoC: rockchip: i2s: Fixup config for DAIFMT_DSP_A/B Sasha Levin
2021-09-09 11:57 ` [PATCH AUTOSEL 4.19 70/74] parport: remove non-zero check on count Sasha Levin
2021-09-09 11:57 ` [PATCH AUTOSEL 4.19 71/74] ath9k: fix OOB read ar9300_eeprom_restore_internal Sasha Levin
2021-09-09 11:57 ` [PATCH AUTOSEL 4.19 72/74] ath9k: fix sleeping in atomic context Sasha Levin
2021-09-09 11:57 ` [PATCH AUTOSEL 4.19 73/74] net: fix NULL pointer reference in cipso_v4_doi_free Sasha Levin
2021-09-09 11:57 ` [PATCH AUTOSEL 4.19 74/74] net: w5100: check return value after calling platform_get_resource() Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210909115726.149004-10-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=kelly.devilliv@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).