Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp1122904ybt; Tue, 7 Jul 2020 08:16:33 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzWwWQyv/hRCgxMmoF67Co6YP1hc1cRTn7Ug93mIqE+05/BZcemOe8W3vnqdLA0DKE1Y4xi X-Received: by 2002:a17:906:abd6:: with SMTP id kq22mr50087798ejb.458.1594134993711; Tue, 07 Jul 2020 08:16:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1594134993; cv=none; d=google.com; s=arc-20160816; b=k7ObkJNNpKciI2ZY0rxlpwQI2jNciEuSSpQ/e5R9+YwE+GVLKeVIfTwqSLD3hL6cVo wt26k6SW/JTuCGeeJ0Cxo1UFsbXQyX0ReEb+Gxf2nMADYXx2RpW7sk6A2qb2ePTxQSqe a3um5eKZRLF7UUE9o91H0/fnifhSn505F1QcZQ31fQwGWV9An8ienJ8gPlChEY/iD4e8 JVGe6+bk4aygrRdU82YmalMbLfyrs/P/+trfeG0LkFlV+WGz9KgTssjLzVUcO6AVsPCV QWBPkqsrYQsyMAUYV6kNTXRuKYEsZ9LQXbOPrpcZLJ6XKHANQT62Cf7T5V+iX2B/cAKa VdfA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:subject:cc:to:from:message-id:date; bh=DRK15BsltI0n73qv2S49VP0ehb5lf9EJWgRtPE09aTM=; b=yEnJRUhi0FBAzrl2jjoHS4CNaNPOSGY4RMbWdYisjtbeVc80SSJ/a8E7HhggmqsrPA OgW2adB9PvyufiLCeAg9Gah2JMYm8+m+PV8Lwm9d+mNfE31lmMS6n/TEHTEufiCK562M mBx8eQC77s7yC3rTjz60ae7FRFZnUZQDYY2hJAbysx8RWPL4YXHBs+7kvUeAvxDSD2jj USKyD83IEKwXz1NXOCHvWjBMXFgUBOm4d2yCyEsbGJ7UyRzu87Ml1Zl7pUbKRFxhqHKA o5TB7Zhz+rTtz2lUUpv3ry8qCEUp0CGcc0cVjqylaEL6zkm2G/MxD1OvoAH2NcVVAV/P cUFQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y19si15334596ejm.324.2020.07.07.08.16.10; Tue, 07 Jul 2020 08:16:33 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728256AbgGGPOB (ORCPT + 99 others); Tue, 7 Jul 2020 11:14:01 -0400 Received: from mx2.suse.de ([195.135.220.15]:55468 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726911AbgGGPOB (ORCPT ); Tue, 7 Jul 2020 11:14:01 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 369B6AE25; Tue, 7 Jul 2020 15:14:00 +0000 (UTC) Date: Tue, 07 Jul 2020 17:13:59 +0200 Message-ID: From: Takashi Iwai To: Greg Kroah-Hartman Cc: linux-kernel@vger.kernel.org, stable@vger.kernel.org, Alexander Tsoy , Takashi Iwai , Sasha Levin , Hans de Goede Subject: Re: [PATCH 4.4 14/19] Revert "ALSA: usb-audio: Improve frames size computation" In-Reply-To: <20200707145748.216607526@linuxfoundation.org> References: <20200707145747.493710555@linuxfoundation.org> <20200707145748.216607526@linuxfoundation.org> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL/10.8 Emacs/25.3 (x86_64-suse-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 07 Jul 2020 17:10:17 +0200, Greg Kroah-Hartman wrote: > > From: Greg Kroah-Hartman > > This reverts commit 02c56650f3c118d3752122996d96173d26bb13aa which is > commit f0bd62b64016508938df9babe47f65c2c727d25c upstream. > > It causes a number of reported issues and a fix for it has not hit > Linus's tree yet. FYI, I'm going to send a pull request to Linus in tomorrow. So the fix will be available in a couple of days. Though... > Revert this to resolve those problems. ... I'm not against the revert itself if this needs to be addressed right now. thanks, Takashi > > Cc: Alexander Tsoy > Cc: Takashi Iwai > Cc: Sasha Levin > Cc: Hans de Goede > Signed-off-by: Greg Kroah-Hartman > --- > sound/usb/card.h | 4 ---- > sound/usb/endpoint.c | 43 +++++-------------------------------------- > sound/usb/endpoint.h | 1 - > sound/usb/pcm.c | 2 -- > 4 files changed, 5 insertions(+), 45 deletions(-) > > --- a/sound/usb/card.h > +++ b/sound/usb/card.h > @@ -80,10 +80,6 @@ struct snd_usb_endpoint { > dma_addr_t sync_dma; /* DMA address of syncbuf */ > > unsigned int pipe; /* the data i/o pipe */ > - unsigned int framesize[2]; /* small/large frame sizes in samples */ > - unsigned int sample_rem; /* remainder from division fs/fps */ > - unsigned int sample_accum; /* sample accumulator */ > - unsigned int fps; /* frames per second */ > unsigned int freqn; /* nominal sampling rate in fs/fps in Q16.16 format */ > unsigned int freqm; /* momentary sampling rate in fs/fps in Q16.16 format */ > int freqshift; /* how much to shift the feedback value to get Q16.16 */ > --- a/sound/usb/endpoint.c > +++ b/sound/usb/endpoint.c > @@ -137,12 +137,12 @@ int snd_usb_endpoint_implicit_feedback_s > > /* > * For streaming based on information derived from sync endpoints, > - * prepare_outbound_urb_sizes() will call slave_next_packet_size() to > + * prepare_outbound_urb_sizes() will call next_packet_size() to > * determine the number of samples to be sent in the next packet. > * > - * For implicit feedback, slave_next_packet_size() is unused. > + * For implicit feedback, next_packet_size() is unused. > */ > -int snd_usb_endpoint_slave_next_packet_size(struct snd_usb_endpoint *ep) > +int snd_usb_endpoint_next_packet_size(struct snd_usb_endpoint *ep) > { > unsigned long flags; > int ret; > @@ -159,29 +159,6 @@ int snd_usb_endpoint_slave_next_packet_s > return ret; > } > > -/* > - * For adaptive and synchronous endpoints, prepare_outbound_urb_sizes() > - * will call next_packet_size() to determine the number of samples to be > - * sent in the next packet. > - */ > -int snd_usb_endpoint_next_packet_size(struct snd_usb_endpoint *ep) > -{ > - int ret; > - > - if (ep->fill_max) > - return ep->maxframesize; > - > - ep->sample_accum += ep->sample_rem; > - if (ep->sample_accum >= ep->fps) { > - ep->sample_accum -= ep->fps; > - ret = ep->framesize[1]; > - } else { > - ret = ep->framesize[0]; > - } > - > - return ret; > -} > - > static void retire_outbound_urb(struct snd_usb_endpoint *ep, > struct snd_urb_ctx *urb_ctx) > { > @@ -226,8 +203,6 @@ static void prepare_silent_urb(struct sn > > if (ctx->packet_size[i]) > counts = ctx->packet_size[i]; > - else if (ep->sync_master) > - counts = snd_usb_endpoint_slave_next_packet_size(ep); > else > counts = snd_usb_endpoint_next_packet_size(ep); > > @@ -904,17 +879,10 @@ int snd_usb_endpoint_set_params(struct s > ep->maxpacksize = fmt->maxpacksize; > ep->fill_max = !!(fmt->attributes & UAC_EP_CS_ATTR_FILL_MAX); > > - if (snd_usb_get_speed(ep->chip->dev) == USB_SPEED_FULL) { > + if (snd_usb_get_speed(ep->chip->dev) == USB_SPEED_FULL) > ep->freqn = get_usb_full_speed_rate(rate); > - ep->fps = 1000; > - } else { > + else > ep->freqn = get_usb_high_speed_rate(rate); > - ep->fps = 8000; > - } > - > - ep->sample_rem = rate % ep->fps; > - ep->framesize[0] = rate / ep->fps; > - ep->framesize[1] = (rate + (ep->fps - 1)) / ep->fps; > > /* calculate the frequency in 16.16 format */ > ep->freqm = ep->freqn; > @@ -973,7 +941,6 @@ int snd_usb_endpoint_start(struct snd_us > ep->active_mask = 0; > ep->unlink_mask = 0; > ep->phase = 0; > - ep->sample_accum = 0; > > snd_usb_endpoint_start_quirk(ep); > > --- a/sound/usb/endpoint.h > +++ b/sound/usb/endpoint.h > @@ -27,7 +27,6 @@ void snd_usb_endpoint_release(struct snd > void snd_usb_endpoint_free(struct snd_usb_endpoint *ep); > > int snd_usb_endpoint_implicit_feedback_sink(struct snd_usb_endpoint *ep); > -int snd_usb_endpoint_slave_next_packet_size(struct snd_usb_endpoint *ep); > int snd_usb_endpoint_next_packet_size(struct snd_usb_endpoint *ep); > > void snd_usb_handle_sync_urb(struct snd_usb_endpoint *ep, > --- a/sound/usb/pcm.c > +++ b/sound/usb/pcm.c > @@ -1473,8 +1473,6 @@ static void prepare_playback_urb(struct > for (i = 0; i < ctx->packets; i++) { > if (ctx->packet_size[i]) > counts = ctx->packet_size[i]; > - else if (ep->sync_master) > - counts = snd_usb_endpoint_slave_next_packet_size(ep); > else > counts = snd_usb_endpoint_next_packet_size(ep); > > >