Received: by 2002:a05:622a:1442:b0:3a5:28ea:c4b9 with SMTP id v2csp667537qtx; Thu, 17 Nov 2022 04:51:59 -0800 (PST) X-Google-Smtp-Source: AA0mqf5hJ74AW7sKs8QI+kUwqpirDnXREVSKWS7Ig5ONPaOFfmwE9YkeHujKNqu0m/mGBN/Agah2 X-Received: by 2002:a17:906:7c44:b0:7b2:7096:6c2 with SMTP id g4-20020a1709067c4400b007b2709606c2mr2061099ejp.526.1668689518947; Thu, 17 Nov 2022 04:51:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668689518; cv=none; d=google.com; s=arc-20160816; b=xAQIoXpHQL543xM4B+fnX9tUkpALDuHBtXLbrWsGzUOaxrd5hnEnNYerxJCHtl7Gb4 Q2okm12BEC9eRVuNnC36fGoWKauBXwYlYOSVvurHaKxA9Xkr/ZHKEZh+C2QOI9/RIG+F Shzw7hFKKlCsQRPrJUqj2V/wSaE2nN3OCzSMwqSjISXWABK7B8P/tmmSQGl/kjXGrLPh CpM0RJb8aPDIErHhc/7nRhFmJRcIP5Upqlb/y2cvnMiGqXdSiIb1xVnQormrZvo+WKEf 0cwhz+wIqz7d+ylu/s9i23+JrGsa0mCaHPkG4QlqalsOAU59wMJ1k5V+7UNtQVikipk7 n7cQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=5e4AcuEMP7yvOysd0NEXhxudfc+f8WZ6V1JAfJswNXw=; b=VFWEN29CwCefnx7R/u3UF//Mb55cC9MnC5tN06VUrOebr0twaHQ7Hgs1hkBi8DwIkF HfBR4dFeU4QZHqhXt4q3lIEtTUZV98MyQB28gL3b5MJEsTYj5/+K+Mv4WYtDohkYyFqy XYqNc9mDb867Hw3sj1n8BqENQ5/yS5CpyhJHQinUXVQ8+yqdis5jY5OG5uIUvQ7Vjhie H0icW5ulIPTLMij1j7QW/2d0U0OUIZb8OhGzlt7E9N6XLi059yoj2fVKb1fT0VPx0i6M 8KbKO4vfTQOa++spsmvpxYd1p8xNwW556q13/Qq8Y7QF/VfYI5zM+R9nKrgHvs/WUPLQ jzoA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=E2dPFAmi; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id b17-20020a1709065e5100b00783ac0b4d32si430164eju.941.2022.11.17.04.51.37; Thu, 17 Nov 2022 04:51:58 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=E2dPFAmi; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234887AbiKQLyl (ORCPT + 92 others); Thu, 17 Nov 2022 06:54:41 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56594 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239261AbiKQLyg (ORCPT ); Thu, 17 Nov 2022 06:54:36 -0500 Received: from mail-vk1-xa34.google.com (mail-vk1-xa34.google.com [IPv6:2607:f8b0:4864:20::a34]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 57076BE12; Thu, 17 Nov 2022 03:54:34 -0800 (PST) Received: by mail-vk1-xa34.google.com with SMTP id j24so718849vkk.0; Thu, 17 Nov 2022 03:54:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=5e4AcuEMP7yvOysd0NEXhxudfc+f8WZ6V1JAfJswNXw=; b=E2dPFAmiYEZh5zRjEK/hoN9bIJ7/ekJi6cw+fgcEJqkcjFdpWwR6klg0HfzhUhROIA fXoxVhWDk03F5z8v3UYeZwwAuoMNOrapOsa5Tcs7YhA5ZuPxY9XvLYWuBla4I/z02QWY hMNHU6WtSmtlICmiI1l41dALUuhm55pCF++SvqFJLKTiKknr+Z/xTmzSYqNczDUbVS7x 5t57EXhJVg6Kmo1Z8Na9EssYaCl/w9WSjqVMJKpEzrIH+j17NOAivkoZ5/oRFuM4qjT6 Y0e+vuvT8SZ4PyJVUIhqrW0oPDlaUtLVETEe3XFcXrSGp5ozDkIQAVSe6fO5zhVZdNy+ YT7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=5e4AcuEMP7yvOysd0NEXhxudfc+f8WZ6V1JAfJswNXw=; b=20YyKls8kJpukgvqo8lYJuLik9LdgZ+QCFdIaavoxUKrx4Pw8jlS1+n6XYmBAKPa57 yV4BC4Znj2oQ+eE1LN7DTk+gGF64u4ZEa/vmncQGaSOZ4MRgpDfb/0mmZcpf8AFQGjx7 GLbHImbA6YxoRO0ZBDY01MTeCSxnJAt2MCI7k1INNlj6qcF+YSwPhRHhPSf2QC2NIis8 34D00p0rjOmWBH7q7Rx0zdqfXHjuTKRP533iOnBBgy3ZUCBiFeEPvNSnC+F+HL3/3Axz 9V5oCrmVOLcemWgoY2pfuseo4ToTEkTW61Fvv1/vqYeYSJ2J4v4jjyllXee8p3afJu7P TNvg== X-Gm-Message-State: ANoB5pnbTYyyEVr4RLX7PSa7+7R15eM7W7g6LOHEnsIqcliHz/Jb/9aZ joteFtJk3OZPqccAuwAVGXBzDQ+mxZIcU22xnJ4= X-Received: by 2002:ac5:c38e:0:b0:3b7:25e2:6e1f with SMTP id s14-20020ac5c38e000000b003b725e26e1fmr942882vkk.19.1668686073386; Thu, 17 Nov 2022 03:54:33 -0800 (PST) MIME-Version: 1.0 References: <20221115092218.421267-1-pawell@cadence.com> In-Reply-To: <20221115092218.421267-1-pawell@cadence.com> From: Peter Chen Date: Thu, 17 Nov 2022 19:53:24 +0800 Message-ID: Subject: Re: [PATCH v3] usb: cdnsp: fix issue with ZLP - added TD_SIZE = 1 To: Pawel Laszczak Cc: peter.chen@kernel.org, gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Nov 15, 2022 at 5:22 PM Pawel Laszczak wrote: > > Patch modifies the TD_SIZE in TRB before ZLP TRB. > The TD_SIZE in TRB before ZLP TRB must be set to 1 to force > processing ZLP TRB by controller. > > cc: > Fixes: 3d82904559f4 ("usb: cdnsp: cdns3 Add main part of Cadence USBSSP DRD Driver") > Signed-off-by: Pawel Laszczak Reviewed-by: Peter Chen Peter > --- > v2: > - returned value for last TRB must be 0 > v3: > - fix issue for request->length > 64KB > > drivers/usb/cdns3/cdnsp-ring.c | 14 ++++++++++---- > 1 file changed, 10 insertions(+), 4 deletions(-) > > diff --git a/drivers/usb/cdns3/cdnsp-ring.c b/drivers/usb/cdns3/cdnsp-ring.c > index 794e413800ae..86e1141e150f 100644 > --- a/drivers/usb/cdns3/cdnsp-ring.c > +++ b/drivers/usb/cdns3/cdnsp-ring.c > @@ -1763,10 +1763,15 @@ static u32 cdnsp_td_remainder(struct cdnsp_device *pdev, > int trb_buff_len, > unsigned int td_total_len, > struct cdnsp_request *preq, > - bool more_trbs_coming) > + bool more_trbs_coming, > + bool zlp) > { > u32 maxp, total_packet_count; > > + /* Before ZLP driver needs set TD_SIZE = 1. */ > + if (zlp) > + return 1; > + > /* One TRB with a zero-length data packet. */ > if (!more_trbs_coming || (transferred == 0 && trb_buff_len == 0) || > trb_buff_len == td_total_len) > @@ -1960,7 +1965,8 @@ int cdnsp_queue_bulk_tx(struct cdnsp_device *pdev, struct cdnsp_request *preq) > /* Set the TRB length, TD size, and interrupter fields. */ > remainder = cdnsp_td_remainder(pdev, enqd_len, trb_buff_len, > full_len, preq, > - more_trbs_coming); > + more_trbs_coming, > + zero_len_trb); > > length_field = TRB_LEN(trb_buff_len) | TRB_TD_SIZE(remainder) | > TRB_INTR_TARGET(0); > @@ -2025,7 +2031,7 @@ int cdnsp_queue_ctrl_tx(struct cdnsp_device *pdev, struct cdnsp_request *preq) > > if (preq->request.length > 0) { > remainder = cdnsp_td_remainder(pdev, 0, preq->request.length, > - preq->request.length, preq, 1); > + preq->request.length, preq, 1, 0); > > length_field = TRB_LEN(preq->request.length) | > TRB_TD_SIZE(remainder) | TRB_INTR_TARGET(0); > @@ -2225,7 +2231,7 @@ static int cdnsp_queue_isoc_tx(struct cdnsp_device *pdev, > /* Set the TRB length, TD size, & interrupter fields. */ > remainder = cdnsp_td_remainder(pdev, running_total, > trb_buff_len, td_len, preq, > - more_trbs_coming); > + more_trbs_coming, 0); > > length_field = TRB_LEN(trb_buff_len) | TRB_INTR_TARGET(0); > > -- > 2.25.1 >