From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ej1-f53.google.com (mail-ej1-f53.google.com [209.85.218.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5FE6B4C77A5 for ; Wed, 22 Jul 2026 10:24:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.53 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784715841; cv=none; b=o4eoBUzaV2Xzzxwkv8KE/5caRL5qfzhJvs1R3Ih2Ww9zJmnxgXJyAKYr2LNS7Pa3UgbIEtukM6RPuyhLoOrBXnOlvBPQTQGtvjBlWXZlxCGMigFs5Tgozk4p6TV+97kspqST22GUeJJ0Gzxa68+CJ5MGbAsWWyo12hKyj3aWo8U= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784715841; c=relaxed/simple; bh=R9x84WLfy9N3m82gL3BIzsT4teMe51dzCzda44DTspc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References; b=WSxxNeo0I65LmiuWl9IP/Vb8oZnxZvZnZg10WGYaSQRCwQRsqL6f9vPnGAtkNp52ztvYuydPapILyBRmXQss8o5CfTnYWnq1MX/VvUmK9Wn7Tfwm6BU2AMaZzLIJxaCbkb+ZA6ybEq1gWFcPyn+Uy1t+J1hfNxl3KnUhLFfZiYA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=p4Sk4A3/; arc=none smtp.client-ip=209.85.218.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="p4Sk4A3/" Received: by mail-ej1-f53.google.com with SMTP id a640c23a62f3a-c15b33f7b23so1794838566b.3 for ; Wed, 22 Jul 2026 03:24:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784715839; x=1785320639; darn=vger.kernel.org; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to:content-type; bh=Npyeg4mA7fQmbHsvxRYXXpRAdqgboF4U7hMMrZcw+wI=; b=p4Sk4A3/PYq5zy3UDV3QE5WbpV6Gd+EGp0I9tWPiVNA4TaJ3U8jKIkH13qhv4gOSm6 Xe4vPQii7mi8jNRzXT4QeeCt5aGGhPFq/RYqvI3z8Ubo/VP+SfbxTJopCg8+4doMFwcj GwDakMA15vUNSvLCMI7hsKWodj+9M4es26mgQ2w7LQ2BWKepx1MqznKCCGmLs5ZSGV6Q 5lX+vMxEC5daFFeFFE8OFfVzZifQtwdcI3gG5ACIPkwBqX59Uknd9edEck3mh8mVWoje C0P9lD1uGJDscLG7gns3TD3MrvLbSR6VGh4oPNF41uGNwaGY6NsrYAatS2zQpZXb6oAJ 8dHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784715839; x=1785320639; h=references:in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=Npyeg4mA7fQmbHsvxRYXXpRAdqgboF4U7hMMrZcw+wI=; b=PTVt3IRTq6CCq1K9u9W0jA4OkXgrkoc47Sov+2RECH+jeWABnSia6IQ53clz4/DJCk 8YLPTJUhF7N102SMp+z71NoQ5tMYr970xnso/HsCMVqnpQc2td9GcIJcMesfIBdHb1gU /lI0Cr8I2rvWjLDmxU7hBs4gHtT/qMSKiLRPCYHYug+/gkSN8ezYUyKzJyzrMJY8KH+0 JRmCZRnuAOPbpo+kBdvbrsLpsVTWKoY89E9Q3av3cCTdBu6JgW+zL1ZDM1nnRE9K31fL n+WN9dCHI0DyNgGSGprwzpzLfTW8qRmoO2mo4ohf7rCECg4e7Zmp3H9RNU/fdTFX24p4 uQCA== X-Forwarded-Encrypted: i=1; AHgh+Rou1/INkz3ksn4LWv/CqeTOfD9bN5iheQy8U3qr51sMe6azuV4ezXq7NSNuRo556delgJhHCS3RjflHHrg=@vger.kernel.org X-Gm-Message-State: AOJu0YwSwNQU6m0EO89qvTGWzuWwO//d+Dms/PBJd/ad6LfwZDNWqKvd Wcvu4Yy0+hnZj8QP76lTkIDsr5pgIWO/R8B4/dBb8ai2rRWk6U4j2z3nDHO2Aw== X-Gm-Gg: AR+sD11cAciyCY6TVWSCpdLHxha1yeHPVT9V6RHpC/OSL9LVYNZ3IQVu/5PiiUZQWPw r1Oako0H87H5G27uk424WcDYM0UU1IkTB7gpSfK0HLFSsyi6C97Cd+CUe8OoyqFaA5JiM2xgksK 3E7pqAHlMm2Z/7dhFSHAjCkMlThZjOvcnDyTX3dBxAw3FRV5yaxT9YRKmo6jWkVnTBRUIKZohQK /Ut5UMWAtbgWIl53FKEknpjy0I/hOljzs6cfKM+SQQDtWQWs0XXEmdCDCw62g4fRLzm7JanZf7I 7ZRga0uR484yzouho6dlu8Kv9IgW3LLQpmwzQArKPcqIM5DvYivWN3xEFigELzBzz74kxRE3OY0 3AeYZjf+YydvPtaauXI8v2lEm+UUqoRuYT9wemdJUL/9PIz9Zwn8wjSSTFP0fdiMT7u+nWYM9tR j5M8wNy4PdcBMgyCJMQm/hc97zzMLy/g== X-Received: by 2002:a17:907:980a:b0:c16:2f5d:6153 with SMTP id a640c23a62f3a-c16b46d2c3dmr967776766b.20.1784715838584; Wed, 22 Jul 2026 03:23:58 -0700 (PDT) Received: from localhost (c-85-228-45-68.bbcust.telenor.se. [85.228.45.68]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c1c32c9030dsm83825266b.36.2026.07.22.03.23.57 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Wed, 22 Jul 2026 03:23:57 -0700 (PDT) From: Eli Billauer To: gregkh@linuxfoundation.org Cc: arnd@arndb.de, linux-kernel@vger.kernel.org, Eli Billauer Subject: [PATCH v2 3/7] char: xillybus: Avoid possible bandwidth inefficiency Date: Wed, 22 Jul 2026 12:23:03 +0200 Message-Id: <20260722102307.49090-4-eli.billauer@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20260722102307.49090-1-eli.billauer@gmail.com> References: <20260722102307.49090-1-eli.billauer@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: The host flow controls the payload data flow from the FPGA by sending OPCODE_SET_CHECKPOINT messages. Fix the condition for sending such a message, to correctly handle the case where leap < 0. The previous expression leap > (fifo->size >> 3) was not intended to evaluate true when leap is negative. However, due to C's integer promotion rules, leap (of s32 type) is promoted to unsigned int when compared with the unsigned fifo->size >> 3 expression. As a result, negative leap values are interpreted as large positive numbers, causing the condition to evaluate true unintentionally. Consequently, the device receives correctly formed checkpoint messages that encourage it to send data, but too frequently. This may cause the device to send short data chunks, wasting USB bandwidth. Signed-off-by: Eli Billauer --- Notes: No change on v1->v2. drivers/char/xillybus/xillyusb.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/char/xillybus/xillyusb.c b/drivers/char/xillybus/xillyusb.c index ab5f9159aa17..7d2434c02fa7 100644 --- a/drivers/char/xillybus/xillyusb.c +++ b/drivers/char/xillybus/xillyusb.c @@ -1507,8 +1507,8 @@ static ssize_t xillyusb_read(struct file *filp, char __user *userbuf, */ if (chan->read_data_ok && - (leap > (fifo->size >> 3) || - (checkpoint_for_complete && leap > 0))) { + (leap > 0 && (leap > (fifo->size >> 3) || + checkpoint_for_complete))) { chan->in_current_checkpoint = checkpoint; rc = xillyusb_send_opcode(xdev, chan_num, OPCODE_SET_CHECKPOINT, -- 2.34.1