Received: by 2002:a5b:505:0:0:0:0:0 with SMTP id o5csp1127512ybp; Fri, 4 Oct 2019 09:54:50 -0700 (PDT) X-Google-Smtp-Source: APXvYqxqMv+SKVe5BBMm5+PM5G1Vi+KWGzMXVDOkRY9J23oWk4jx50+13eFgAyuvr5Sy7z9IlQfg X-Received: by 2002:a17:906:b259:: with SMTP id ce25mr12856315ejb.229.1570208089970; Fri, 04 Oct 2019 09:54:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1570208089; cv=none; d=google.com; s=arc-20160816; b=feg2apmyYWH9EZo3JFyAjhk9KkHbafZd1olP4fYthhc4/vpMTO8EQUUPN7FYSm5P7k SBd9DvV4lRkObT8wzxlRAizBf/WNwgL6w4oNZf+g64yoGX5fkS/Id6gbOnsfNiISfCA/ Z3YTph6SM1EbhrL1CYvGYZTqukk5eeYxkh+Wysrln5SRr7MMPbtrT1ylSU5q1Og1r0t7 6IJD5OR0Rx2/Cx0MoIV8YE8NphXVo2/yjnd4MIvxOCPmzE1tpjhQXQwrjPnUeIamM4RR j3FUfwQ8VhSmkaKNxJL/cHP3p0KojV/8aPXheaPue+ntz23nWzeUjNCRb2MoLaa0mZVS oTvg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=1m5jMl+j0wFCdGUDGZKKaL6nviatVJQaN7YzAwj3ZUs=; b=muIZl5G18AKMHKANIMPHzd7rdbO4StyfAwzM0ThzqEVOhnhwNvHKMea7HbmeKQvvTj +GStUJPDY1IRn1Y95Ysn8p3ttBqfoxnTKgDMWtco3LLRYVv9WWUvFUsZ0u71feyRcuLg osWT1K6fjKVn7rn0UGZmaAGg5UozYnpN2YhiBh1Gl/tewGECIAgOg+8sboMQUNl+Ldr3 ItXiQXdzvzpvB8L1v/9GS94l95zTUz9LoOpuEnjSQ1KTvSdyL1Q3+dxtQS8p1fPKdxSH UAAB+3k2/66mRH1NuIlwBO7/j54W2mtCyyz/lYHk2VvVgL43zK9/R5vjV6zmakCKXYRE g1nA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b="rtGE/maS"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 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 vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z6si3527753edr.443.2019.10.04.09.54.25; Fri, 04 Oct 2019 09:54:49 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b="rtGE/maS"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 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 S1729093AbfJDQvk (ORCPT + 99 others); Fri, 4 Oct 2019 12:51:40 -0400 Received: from mail-io1-f66.google.com ([209.85.166.66]:33930 "EHLO mail-io1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725932AbfJDQvj (ORCPT ); Fri, 4 Oct 2019 12:51:39 -0400 Received: by mail-io1-f66.google.com with SMTP id q1so15067208ion.1; Fri, 04 Oct 2019 09:51:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=1m5jMl+j0wFCdGUDGZKKaL6nviatVJQaN7YzAwj3ZUs=; b=rtGE/maStH7QAtH/Tydy2qxQVsveofu5bu6sC5eRUZYx9ILOFtWaXSSpEFFf2iHYF2 5RIK5U43/6p/zgoe7l3fvcpLHWE1il4GxscoIR+p/PS1bSNc2dmu2g+PVfpK5/rQBGck LictbWaY7Dav8baespzhw7QubnIvI09sguG/VFRmSmK/jZ84YvIV6U4SNWxWpUJq3lBd K46xH3c7BoYCZavKfwV28ETdeh+MgDs1c4yaxshWpB7fc3dc4Q9qaYaDE5DWUBiKDTIj AmczBSiM0UKf8FAa2WFLSIdrFmHcv+WBlZ/J+rUS8ySyBG9/yFHcYYyN1NuN5PBq2Fel LLKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=1m5jMl+j0wFCdGUDGZKKaL6nviatVJQaN7YzAwj3ZUs=; b=pPiQCR+Y2d3uaYdWxdNRlu5mapuS3tMq90i3j8OYo03ktUr/bqL7PijFJAziQCi88V OWnLYS8kqO90uPZ8Gwb6sJ5YE96H6Ayu7FfRdkVEwYoEWQXctYlHnVagsHVboEiYXT/A NOP0xw1d+i1gObV9qsmqxlSNV4QdysLfzXA+ZREukECU8H1ut7bxEkHbqb7pDqxXJMaP YmO6hpPUNgyswDplE9etb1YPDe/NznYFYUqHvF3tRqCsEoKDxelE+5YJhdnX9Pujfjl9 Y6H9Fq54FYagR5Qz0rcpvr1FShkwB8ZW/7lAf+8B707Vi5fVfWpGBOtcmyinvN1+6lKJ Y5OQ== X-Gm-Message-State: APjAAAVcaOptkwxsqNxzjf6GATVpT+Fo8wHiwyWFSz+1FN++Zl9kFjNr sNSfzoEBzfNIgD44h0r7Bpkm1tdNyPOfPRZlr1Q= X-Received: by 2002:a92:3314:: with SMTP id a20mr16052072ilf.276.1570207898037; Fri, 04 Oct 2019 09:51:38 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Adam Ford Date: Fri, 4 Oct 2019 11:51:27 -0500 Message-ID: Subject: Re: DM3730 Bluetooth Performance differences between SERIAL_8250_OMAP vs SERIAL_OMAP To: Yegor Yefremov Cc: Greg Kroah-Hartman , Jiri Slaby , linux-serial@vger.kernel.org, Linux Kernel Mailing List , Linux-OMAP , Vignesh R Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Oct 4, 2019 at 9:08 AM Adam Ford wrote: > > On Fri, Oct 4, 2019 at 7:27 AM Yegor Yefremov > wrote: > > > > Hi Adam, > > > > On Fri, Oct 4, 2019 at 12:39 PM Adam Ford wrote: > > > > > > On Fri, Oct 4, 2019 at 5:02 AM Adam Ford wrote: > > > > > > > > I am running Kernel 5.3.2 trying to troubleshoot some intermittent > > > > Bluetooth issues, and I think I have narrowed it down to the serial > > > > driver in use. > > > > > > I should have also noted that it's using UART2 with CTS and RTS on the > > > DM3730 (omap3630) and its configured with a baud rate of 3M. > > > I tried slowing it to 115200, but that didn't help. I tried disabling > > > the DMA hooks from the device tree, and that didn't help. > > > > > > > By default, omap2plus_defconfig enables both SERIAL_8250_OMAP and > > > > SERIAL_OMAP. I have my console device configured as ttyS0, and all > > > > appears fine. When I enable Bluetooth, however, I get intermittent > > > > errors on an DM3730 / OMAP3630. > > > > > > > > Using the 8250 driver for Blueotooth I get intermittent frame errors > > > > and data loss. > > > > > > > > Scanning ... > > > > [ 28.482452] Bluetooth: hci0: Frame reassembly failed (-84) > > > > [ 36.162170] Bluetooth: hci0: Frame reassembly failed (-84) > > > > F4:4E:FC:C9:2F:57 BluJax > > > > # l2ping F4:4E:FC:C9:2F:57 > > > > Ping: F4:4E:FC:C9:2F:57 from 00:18:30:49:7D:63 (data size 44) ... > > > > 44 bytes from F4:4E:FC:C9:2F:57 id 0 time 8.27ms > > > > no response from F4:4E:FC:C9:2F:57: id 1 > > > > ^C2 sent, 1 received, 50% loss > > > > > > > > (after a fairly long hang, I hit control-c) > > > > > > > > However, disabling the 8250 driver and using the only SERIAL_OMAP and > > > > the console routed to ttyO0, the Bluetooth works well, so I believe it > > > > to be a serial driver issue and not a Bluetooth error. > > > > > > > > # hcitool scan > > > > Scanning ... > > > > F4:4E:FC:C9:2F:57 BluJax > > > > ^C > > > > # l2ping F4:4E:FC:C9:2F:57 > > > > Ping: F4:4E:FC:C9:2F:57 from 00:18:30:49:7D:63 (data size 44) ... > > > > 44 bytes from F4:4E:FC:C9:2F:57 id 0 time 6.90ms > > > > ... > > > > 44 bytes from F4:4E:FC:C9:2F:57 id 14 time 28.29ms > > > > ^C15 sent, 15 received, 0% loss > > > > # > > > > > > > > 0% loss and regular, repeatable communication without any Frame > > > > reassembly errors. > > > > > > > > > > I tried disabling SERIAL_OMAP and using only SERIAL_8250_OMAP, but > > > that didn't help. Because the issue goes away when I disable > > > SERIAL_8250_OMAP, I am wondering if something is either being > > > misconfigured or some IRQ or DMA integration is missing that may be > > > present with the older SERIAL_OMAP driver. > > > > > > > Any suggestions on how to troubleshoot or what might cause the > > > > difference between the two drivers? > > > > Can it be related to this issue [1]? Can you confirm that 5.2 is > > working as expected with the 8250 driver? > > > > [1] https://marc.info/?l=linux-serial&m=156965039008649&w=2 > > I reverted the whole 8250 directory to d99482673f95 ("serial: > mctrl_gpio: Check if GPIO property exisits before requesting it") and > it is somewhat better, but it's not as good as the stock OMAP serial > driver. I get some frame errors and eventually, I get some timeouts, > but it's not as bad. I'll try to implement the RTS and CTS as gpio > pins and change the device tree accordingly. It might shed some light > on the situation. I tried to manually setup RTS and CTS pins as GPIO, but that didn't work, so I changed it back. It looks like the clocking is correct. I don't know enough about the DMA or the IRQ to know if it's working correctly. I was wondering if the problem is in the handshaking or not. I added " uart-has-rtscts;" to by uart node thinking it might help, but it did not. > 8250_omap.c has some checks to see if we can enable autoRTS: if (termios->c_cflag & CRTSCTS && up->port.flags & UPF_HARD_FLOW && !up->gpios) { /* Enable AUTOCTS (autoRTS is enabled when RTS is raised) */ ... } Based on this, I would expect up->gpios to always be zero if we want auto RTS CTS. I threw some debug code into the serial driver to look at the status of the various flags that go into setting up auto RTS/CTS. [ 13.837005] termios->c_cflag & CRTSCTS = 80000000 [ 13.841888] up->port.flags & UPF_HARD_FLOW = 300000 [ 13.846801] up->gpios = ce3f3cc0 [ 17.166595] termios->c_cflag & CRTSCTS = 0 [ 17.170745] up->port.flags & UPF_HARD_FLOW = 300000 [ 17.175781] up->gpios = ce3f3d40 I don't know which port is which, but I only have two active uarts (console and Bluetooth) The Bluetooth port should use handshaking and the console should not. From the look of the dump, up->gpios is never 0, so the last evaluation would always be false unless I am misinterpreting something. I tried to modify the check to remove !up->gpios check, but that didn't help either, but it made it a little better. > adam > > > > Cheers, > > Yegor