From nobody Mon Feb 9 13:24:58 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3D154C77B62 for ; Mon, 27 Mar 2023 14:42:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232657AbjC0OmH (ORCPT ); Mon, 27 Mar 2023 10:42:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42988 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232235AbjC0OmE (ORCPT ); Mon, 27 Mar 2023 10:42:04 -0400 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 311D819AC; Mon, 27 Mar 2023 07:42:03 -0700 (PDT) Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 32RD0ZmP006772; Mon, 27 Mar 2023 14:42:00 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=qcppdkim1; bh=BNtdJXJ3kB/+rUHxTz/r6t3HER8y8mIRr6a8CGUEPKs=; b=Ylmiil+3wI1Fz0D6kIa/ozBqD2nMq/RUTIMsMSHkaQJMRMobUNiUMTKcE7EvrloEEWrc EyuLeAcK7bZNhj5ZFfRyXkE3Uu5JqAX/QKebSoSb4idJq5pZEM3XMMSKkGIcGUjotce7 mnuRgcBxJ/8WsPphngdZZaQyqYA4C7sSz+yJLRAKXOELSxIA8GCLWKycbr9RgNtq8FIJ WbL04nYUbmZ6XD8KiXa4ILMO3Pjvaez1de3DOFkUFE+DrJ0q/8bTOnITOo2rtqXag3dn 2phE6E2HVldhxX7xbWMz7PAXVL86mf81u16JkNcrpWPgY6/TP4K5ga5mAqVoHiZrZu3U ew== Received: from nalasppmta04.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3pkbmyr7gx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 27 Mar 2023 14:42:00 +0000 Received: from nalasex01c.na.qualcomm.com (nalasex01c.na.qualcomm.com [10.47.97.35]) by NALASPPMTA04.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 32REfxcs027002 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 27 Mar 2023 14:41:59 GMT Received: from hu-bjorande-lv.qualcomm.com (10.49.16.6) by nalasex01c.na.qualcomm.com (10.47.97.35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Mon, 27 Mar 2023 07:41:59 -0700 From: Bjorn Andersson To: Bjorn Andersson , Mathieu Poirier , Chris Lew CC: , , Subject: [PATCH 1/2] rpmsg: glink: Propagate TX failures in intentless mode as well Date: Mon, 27 Mar 2023 07:41:52 -0700 Message-ID: <20230327144153.3133425-2-quic_bjorande@quicinc.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230327144153.3133425-1-quic_bjorande@quicinc.com> References: <20230327144153.3133425-1-quic_bjorande@quicinc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.49.16.6] X-ClientProxiedBy: nalasex01c.na.qualcomm.com (10.47.97.35) To nalasex01c.na.qualcomm.com (10.47.97.35) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-ORIG-GUID: kav-ocxqdqX7aIcw15z5Sk4_EoUD3JIP X-Proofpoint-GUID: kav-ocxqdqX7aIcw15z5Sk4_EoUD3JIP X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-03-24_11,2023-03-27_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 spamscore=0 adultscore=0 bulkscore=0 mlxlogscore=999 mlxscore=0 suspectscore=0 phishscore=0 malwarescore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303200000 definitions=main-2303270116 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" As support for splitting transmision over several messages using TX_DATA_CONT was introduced it does not immediately return the return value of qcom_glink_tx(). The result is that in the intentless case (i.e. intent =3D=3D NULL), the code will continue to send all additional chunks. This is wasteful, and it's possible that the send operation could incorrectly indicate success, if the last chunk fits in the TX fifo. Fix the condition. Fixes: 8956927faed3 ("rpmsg: glink: Add TX_DATA_CONT command while sending") Signed-off-by: Bjorn Andersson Reviewed-by: Chris Lew --- drivers/rpmsg/qcom_glink_native.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/rpmsg/qcom_glink_native.c b/drivers/rpmsg/qcom_glink_n= ative.c index 01d2805fe30f..62634d020d13 100644 --- a/drivers/rpmsg/qcom_glink_native.c +++ b/drivers/rpmsg/qcom_glink_native.c @@ -1356,8 +1356,9 @@ static int __qcom_glink_send(struct glink_channel *ch= annel, ret =3D qcom_glink_tx(glink, &req, sizeof(req), data, chunk_size, wait); =20 /* Mark intent available if we failed */ - if (ret && intent) { - intent->in_use =3D false; + if (ret) { + if (intent) + intent->in_use =3D false; return ret; } =20 @@ -1378,8 +1379,9 @@ static int __qcom_glink_send(struct glink_channel *ch= annel, chunk_size, wait); =20 /* Mark intent available if we failed */ - if (ret && intent) { - intent->in_use =3D false; + if (ret) { + if (intent) + intent->in_use =3D false; break; } } --=20 2.25.1 From nobody Mon Feb 9 13:24:58 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1C2D8C76195 for ; Mon, 27 Mar 2023 14:42:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233033AbjC0OmM (ORCPT ); Mon, 27 Mar 2023 10:42:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43002 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232636AbjC0OmF (ORCPT ); Mon, 27 Mar 2023 10:42:05 -0400 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AE79CA1; Mon, 27 Mar 2023 07:42:04 -0700 (PDT) Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 32RAHAT2020927; Mon, 27 Mar 2023 14:42:01 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=qcppdkim1; bh=ivyVZR7ouQVyFI8OG9hI0akCWrLjSGGOqUuj+y5oqjY=; b=OwFRaxiDv75ylbiFN9bDDjelWINLSZdb3/fOCVyqvurmd6RyF4iHhPoVjVsVYN+tnkSV yeUa9P1GS0ImzqIfRkWWj5EJo5wBsj10hiKlMXjK868CNgpuGDeS+McMV/3QvuAhQj+O OERytUqyhBjgSBxv8dc2fjaHf/X4sT4HcqnOLqcZRGMxmKssOoelPrizCDYbiXqZ364B cvfOHEcHg8+rktpQOc15Ss/t+cwCYy6Kkl0NUOMRbrSBg2LY5S8dYk4uJu3H+5BoEv2e UVWb3Vcs0uRiq/fUxumtZkIb7EbY5oflQhUWdxaJje0qWkjbjXEfeU+dGpdpoVNzW4aX LA== Received: from nalasppmta01.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3phsqqmnhv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 27 Mar 2023 14:42:01 +0000 Received: from nalasex01c.na.qualcomm.com (nalasex01c.na.qualcomm.com [10.47.97.35]) by NALASPPMTA01.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 32REg0D1016900 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 27 Mar 2023 14:42:00 GMT Received: from hu-bjorande-lv.qualcomm.com (10.49.16.6) by nalasex01c.na.qualcomm.com (10.47.97.35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Mon, 27 Mar 2023 07:41:59 -0700 From: Bjorn Andersson To: Bjorn Andersson , Mathieu Poirier , Chris Lew CC: , , Subject: [PATCH 2/2] rpmsg: glink: Consolidate TX_DATA and TX_DATA_CONT Date: Mon, 27 Mar 2023 07:41:53 -0700 Message-ID: <20230327144153.3133425-3-quic_bjorande@quicinc.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230327144153.3133425-1-quic_bjorande@quicinc.com> References: <20230327144153.3133425-1-quic_bjorande@quicinc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.49.16.6] X-ClientProxiedBy: nalasex01c.na.qualcomm.com (10.47.97.35) To nalasex01c.na.qualcomm.com (10.47.97.35) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: rbb0htesICTgjRuC6CVEWGyKTHhMS7Rt X-Proofpoint-ORIG-GUID: rbb0htesICTgjRuC6CVEWGyKTHhMS7Rt X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-03-24_11,2023-03-27_02,2023-02-09_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 phishscore=0 mlxlogscore=999 bulkscore=0 adultscore=0 clxscore=1015 mlxscore=0 spamscore=0 priorityscore=1501 malwarescore=0 impostorscore=0 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303200000 definitions=main-2303270116 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Rather than duplicating most of the code for constructing the initial TX_DATA and subsequent TX_DATA_CONT packets, roll them into a single loop. Signed-off-by: Bjorn Andersson --- drivers/rpmsg/qcom_glink_native.c | 46 +++++++++---------------------- 1 file changed, 13 insertions(+), 33 deletions(-) diff --git a/drivers/rpmsg/qcom_glink_native.c b/drivers/rpmsg/qcom_glink_n= ative.c index 62634d020d13..082cf7f4888e 100644 --- a/drivers/rpmsg/qcom_glink_native.c +++ b/drivers/rpmsg/qcom_glink_native.c @@ -1309,7 +1309,7 @@ static int __qcom_glink_send(struct glink_channel *ch= annel, int ret; unsigned long flags; int chunk_size =3D len; - int left_size =3D 0; + size_t offset =3D 0; =20 if (!glink->intentless) { while (!intent) { @@ -1343,49 +1343,29 @@ static int __qcom_glink_send(struct glink_channel *= channel, iid =3D intent->id; } =20 - if (wait && chunk_size > SZ_8K) { - chunk_size =3D SZ_8K; - left_size =3D len - chunk_size; - } - req.msg.cmd =3D cpu_to_le16(GLINK_CMD_TX_DATA); - req.msg.param1 =3D cpu_to_le16(channel->lcid); - req.msg.param2 =3D cpu_to_le32(iid); - req.chunk_size =3D cpu_to_le32(chunk_size); - req.left_size =3D cpu_to_le32(left_size); - - ret =3D qcom_glink_tx(glink, &req, sizeof(req), data, chunk_size, wait); - - /* Mark intent available if we failed */ - if (ret) { - if (intent) - intent->in_use =3D false; - return ret; - } - - while (left_size > 0) { - data =3D (void *)((char *)data + chunk_size); - chunk_size =3D left_size; - if (chunk_size > SZ_8K) + while (offset < len) { + chunk_size =3D len - offset; + if (chunk_size > SZ_8K && (wait || offset > 0)) chunk_size =3D SZ_8K; - left_size -=3D chunk_size; =20 - req.msg.cmd =3D cpu_to_le16(GLINK_CMD_TX_DATA_CONT); + req.msg.cmd =3D cpu_to_le16(offset =3D=3D 0 ? GLINK_CMD_TX_DATA : GLINK_= CMD_TX_DATA_CONT); req.msg.param1 =3D cpu_to_le16(channel->lcid); req.msg.param2 =3D cpu_to_le32(iid); req.chunk_size =3D cpu_to_le32(chunk_size); - req.left_size =3D cpu_to_le32(left_size); + req.left_size =3D cpu_to_le32(len - offset - chunk_size); =20 - ret =3D qcom_glink_tx(glink, &req, sizeof(req), data, - chunk_size, wait); - - /* Mark intent available if we failed */ + ret =3D qcom_glink_tx(glink, &req, sizeof(req), data + offset, chunk_siz= e, wait); if (ret) { + /* Mark intent available if we failed */ if (intent) intent->in_use =3D false; - break; + return ret; } + + offset +=3D chunk_size; } - return ret; + + return 0; } =20 static int qcom_glink_send(struct rpmsg_endpoint *ept, void *data, int len) --=20 2.25.1