From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 92BF330FC39 for ; Mon, 22 Jun 2026 14:52:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782139946; cv=none; b=q1bneVqo+WogtbEICX+vBNLa9dAVh4v5tYkGmc/SHDapteI6Lyp6q47/iOaGPnEv9et8XIozCzsB1M/3OITWbledVSE0PHBKAlk24kz2vbDpgw8iF7/QYIzpAt1sK0VXpJlil85c0z/1A9C5aTauOoy9kG0ERZCWyj/ngge0Ms8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782139946; c=relaxed/simple; bh=p8F6QkLRVD5oUWLabKHDe/oJZxyvmx/Gd6VZzexn/jk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fUEIcrpnFamyfBnCi6937RD1NfG3BbdtUDrJ3PucZ4FuSoZY20CfYxQeO9KV/q33+OYlwHoEJpnqS7U2DwOYLv3aetuaK/JWHaCJJEZ88fRGd3+HwKkJGu03FxH82Xc2hmsykiUDRXFIc7WspCYlSwoFwbHtFvfSMHhiR7fsWa0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=D9LEvdIY; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=HSW1BG6Q; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="D9LEvdIY"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="HSW1BG6Q" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 65MDGDEW2387035 for ; Mon, 22 Jun 2026 14:52:21 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 235gNcfFV3kkqtG19jSUUgPcN6QOmLAdx+z2l1LbSmQ=; b=D9LEvdIYxnmkt9ii ayvBSa4dw34JRptMP9+deN5McctdoeE2DkkcDMesWlM9EjmsmygX8UxNf2OxSpuu ylBysrUMB9kVuK9i0sJhCic8woanaKO6ZCbbRsU2w9QwJ3x6oL+t6jMwamjvWjIA zGSh0vvSO3JP7uN3PlMc/3Wv0wZ3HcfWyivlvSC+PP6wgQMCEgaf4SstQ+FMDxzj xID2J3+7Kgx0uDKPDRYxrZxAW00FjAAAprbZCnNOf4+SHQ/FY8oqLyDmsP5x9Oo0 KTFogrYi4Atenx52TT111Lxf8kWTFu6oDJrropsWvmlMGm/fX/+mIbt+FFXzq6e0 GAVudg== Received: from mail-dy1-f198.google.com (mail-dy1-f198.google.com [74.125.82.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ey5sn0bk0-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 22 Jun 2026 14:52:21 +0000 (GMT) Received: by mail-dy1-f198.google.com with SMTP id 5a478bee46e88-30beba84d2bso2682eec.0 for ; Mon, 22 Jun 2026 07:52:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1782139941; x=1782744741; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=235gNcfFV3kkqtG19jSUUgPcN6QOmLAdx+z2l1LbSmQ=; b=HSW1BG6QoEKpL69f8FH4OKY76hgFeFEB/hmwRocCrMTkyKyzAwU/PdaZmumdTFtP9j HfFxVh5qcSABVippZgv07RnviwichRf+S197pxqe3pZYhndR/4nNrv98Ae5hY1QNqsKV w/zqxdoCKyFQM2p7ndQamrWuvT8eGXm4OXW8Hsie7pYh79/tOBDYvB4nzqX5ctsnRaCN frYSFZR1oZDhnNJfh6zk4+9Jax9qtRrgU8EXygE84k7Gk3znn7gmG++JthnBf/kIjZaS Sp5lBwPFQ73bLpgjG55LtABpWfUnjnCSrMZwXrwct9r9cVf9NKlAaERs6gg0tp62yhY2 3tOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782139941; x=1782744741; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=235gNcfFV3kkqtG19jSUUgPcN6QOmLAdx+z2l1LbSmQ=; b=C+IGvZxpOyy7nohZ4KTzcDlQC/nzULuzs232+4ocd9bWUXTUh7QzDmDGJlCJBux5SX do1BOjco7qClJzEJmKEzkXzoB+aMti4Zil9ik9GU9qWJkRJtaxrOrsRuEUUPiOYVR6DE SPa9PiX4hkbbX4t2/A4xL+3ZMeRJJS7DH2DxzgASY96PwSYdKtKAlIyYfHLoG9qh9nqR +WsGxUBVQVvHJ+qu9vFDVyvw3D33zhJ9LiH3cdLA/OKUGaAfwiBOsxmnGr8pWQoWk7u8 pUjmvQADjGaUJ3qMjXJhF14MmRF9waahmvSKn3FM0ICL9mFZ3vbtVrrPbhZjB0jT4EsX S9qw== X-Forwarded-Encrypted: i=1; AHgh+RqqxQop5LdTwO1Fe23Cw7wEdzSpHeNcF0ZjFhjCNY7VhpRZ4U8BIlvopeCw+TxXZQ1tHZ3JOdZWHbApCaU=@vger.kernel.org X-Gm-Message-State: AOJu0YxoZ1cFloaCXTu23SbUu4x53oQ1U+ZwdlorgnQumks/sgAvWJOM KKgMfjjdoRhH3hHWCZMDvoGii45dw3GZcphf2r3GHOECCvMKlZm8msCZQKj+gPzu4jtG7i58cya mR9hDFEM0lEdE8tzTjLBV3lbKg2R84SNzNw9GSifNqwzqubJM/u00X7SB6VVf6OD/tr8= X-Gm-Gg: AfdE7cn2LHhVbB+lo9jVI9rRDWg+ZY8KVGVO9qqmIuzE0/E1Og6OpRQKs4M9WqT6TXO GHmF79lVIxiXDEn1NMLaYQVY5kRM4hVrKqE4IIxxB9znl70JXWp9LjrMjrbsEWGQguWfrDTPFim QtEO++uee5I8+XuoMSNoXzL46KwLCsVs5utsZdy2DCp1vg189VQQvEcfzhnwfG9ucrVxBJN1+et CLLQ0ma2nEeZIHiSe3yoBaun7hi4uWWgAtSoyrSGyRKDsicbNJZk2GPhipoWmgGIdlnE2MgkbQD a4g0wCB9iBP6OY+R1GIq6pWEj09+4xWNAoKMv4KJWgLPbZAi6TL+ZlMpjO9GFb6D26QWfKnb1Id XQmGnU5/+8yG8g84I8MzJPvnEKGtzbh3Baevjr1/dUb3i6O9WVv16v9ByoQ== X-Received: by 2002:a05:7301:10c1:b0:304:e327:aef8 with SMTP id 5a478bee46e88-30c17b68722mr3562196eec.2.1782139940813; Mon, 22 Jun 2026 07:52:20 -0700 (PDT) X-Received: by 2002:a05:7301:10c1:b0:304:e327:aef8 with SMTP id 5a478bee46e88-30c17b68722mr3562168eec.2.1782139940087; Mon, 22 Jun 2026 07:52:20 -0700 (PDT) Received: from hu-zijuhu-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-30c1bddfe34sm12025561eec.20.2026.06.22.07.52.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Jun 2026 07:52:19 -0700 (PDT) From: Zijun Hu Date: Mon, 22 Jun 2026 07:52:18 -0700 Subject: [PATCH 05/13] Bluetooth: btusb: QCA: move qca_dump out of struct btusb_data Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260622-bt_bugfix-v1-5-11f936d84e72@oss.qualcomm.com> References: <20260622-bt_bugfix-v1-0-11f936d84e72@oss.qualcomm.com> In-Reply-To: <20260622-bt_bugfix-v1-0-11f936d84e72@oss.qualcomm.com> To: Marcel Holtmann , Luiz Augusto von Dentz , Rocky Liao , Bartosz Golaszewski , Ben Young Tae Kim , Balakrishna Godavarthi , Matthias Kaehlcke Cc: Zijun Hu , linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org, Luiz Augusto von Dentz , linux-arm-msm@vger.kernel.org, Zijun Hu X-Mailer: b4 0.14.3 X-Proofpoint-GUID: j9Dpf2PXmLZiojSsrcfa3fHyhwz43f_D X-Proofpoint-ORIG-GUID: j9Dpf2PXmLZiojSsrcfa3fHyhwz43f_D X-Authority-Analysis: v=2.4 cv=PuKjqQM3 c=1 sm=1 tr=0 ts=6a394c25 cx=c_pps a=wEP8DlPgTf/vqF+yE6f9lg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=0qFWW5pOsv3iMAJ541kA:9 a=QEXdDO2ut3YA:10 a=bBxd6f-gb0O0v-kibOvt:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwNjIyMDE0NyBTYWx0ZWRfX/em/WptfSHi/ wcGy5E7IdUPbMi/Rmw6sx7yFbLqYlwVmjVEJR66VUi9uKNWhvoHXu0adC2dJF/gK+wa5kt/rIyj 88sy8SiJtKJEkAOL53i94zHqv/ciyfk= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjIyMDE0NyBTYWx0ZWRfX3hRNctPdmWqY nbDaR2Kv/OStdupNlApGAXHugPx2uK5lmrGBac6pzUD6u2VzaOzZSkhoTdfVrtKLGHmRwY8R7Hh UuGDoCOssAWfMLEpIspeApzdnSlqmNvIm9t0I/YTriMgCQwvjnEnltg1DaIeC5STfvzKD8pKJYi 4fCb1Muf9JgwKsIuP3HEecNevBRCg6JB0R1cDHXTnhZnGGovXUTb2YoOCmXad9ulEtf57fPwZoW /X245JwwnTBt93bwGvi2YtwvDA/QszeUgliWGKHWdZrlUDbmjIXiMOYbVnVrm/0JIAqTno0qHDv FPWOEIkzyBdzmANxlOfTSRrGHvpjVIQxKUjz1jUAGxJXGkBp3WvkL1evAJLV1ujV2Q2nyupcFdw p6nzWt7eIkPFYZSC7NMDlKJE+wWmqMSfpykrqr+66/z4JTPUS5jo4SKlVHpkChaIOdWvJtrDUW5 5wAM3cuw9wCfISe9BSw== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-22_02,2026-06-22_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 suspectscore=0 priorityscore=1501 phishscore=0 impostorscore=0 adultscore=0 clxscore=1015 bulkscore=0 spamscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606220147 'struct btusb_data' ideally should not include vendor specific fields, but it currently includes the QCA devcoredump member 'struct qca_dump_info qca_dump'. Fix by moving it into hci_dev private area accessed by hci_get_priv(). Signed-off-by: Zijun Hu --- drivers/bluetooth/btusb.c | 56 ++++++++++++++++++++++++++++------------------- 1 file changed, 34 insertions(+), 22 deletions(-) diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c index 184a87d1234c..6f965c313dff 100644 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c @@ -939,6 +939,10 @@ struct qca_dump_info { u16 ram_dump_seqno; }; +struct btqca_data { + struct qca_dump_info qca_dump; +}; + #define BTUSB_MAX_ISOC_FRAMES 10 #define BTUSB_INTR_RUNNING 0 @@ -1025,8 +1029,6 @@ struct btusb_data { int (*disconnect)(struct hci_dev *hdev); int oob_wake_irq; /* irq for out-of-band wake-on-bt */ - - struct qca_dump_info qca_dump; }; static void btusb_reset(struct hci_dev *hdev) @@ -3116,14 +3118,15 @@ struct qca_dump_hdr { static void btusb_dump_hdr_qca(struct hci_dev *hdev, struct sk_buff *skb) { char buf[128]; - struct btusb_data *btdata = hci_get_drvdata(hdev); + struct btqca_data *btqca_data = hci_get_priv(hdev); + struct qca_dump_info *qca_dump_ptr = &btqca_data->qca_dump; snprintf(buf, sizeof(buf), "Controller Name: 0x%x\n", - btdata->qca_dump.controller_id); + qca_dump_ptr->controller_id); skb_put_data(skb, buf, strlen(buf)); snprintf(buf, sizeof(buf), "Firmware Version: 0x%x\n", - btdata->qca_dump.fw_version); + qca_dump_ptr->fw_version); skb_put_data(skb, buf, strlen(buf)); snprintf(buf, sizeof(buf), "Driver: %s\nVendor: qca\n", @@ -3131,7 +3134,7 @@ static void btusb_dump_hdr_qca(struct hci_dev *hdev, struct sk_buff *skb) skb_put_data(skb, buf, strlen(buf)); snprintf(buf, sizeof(buf), "VID: 0x%x\nPID:0x%x\n", - btdata->qca_dump.id_vendor, btdata->qca_dump.id_product); + qca_dump_ptr->id_vendor, qca_dump_ptr->id_product); skb_put_data(skb, buf, strlen(buf)); snprintf(buf, sizeof(buf), "Lmp Subversion: 0x%x\n", @@ -3160,6 +3163,8 @@ static int handle_dump_pkt_qca(struct hci_dev *hdev, struct sk_buff *skb) struct qca_dump_hdr *dump_hdr; struct btusb_data *btdata = hci_get_drvdata(hdev); + struct btqca_data *btqca_data = hci_get_priv(hdev); + struct qca_dump_info *qca_dump_ptr = &btqca_data->qca_dump; struct usb_device *udev = btdata->udev; pkt_type = hci_skb_pkt_type(skb); @@ -3187,8 +3192,8 @@ static int handle_dump_pkt_qca(struct hci_dev *hdev, struct sk_buff *skb) goto out; } - btdata->qca_dump.ram_dump_size = dump_size; - btdata->qca_dump.ram_dump_seqno = 0; + qca_dump_ptr->ram_dump_size = dump_size; + qca_dump_ptr->ram_dump_seqno = 0; skb_pull(skb, offsetof(struct qca_dump_hdr, data0)); @@ -3200,29 +3205,29 @@ static int handle_dump_pkt_qca(struct hci_dev *hdev, struct sk_buff *skb) skb_pull(skb, offsetof(struct qca_dump_hdr, data)); } - if (!btdata->qca_dump.ram_dump_size) { + if (!qca_dump_ptr->ram_dump_size) { ret = -EINVAL; bt_dev_err(hdev, "memdump is not active"); goto out; } - if ((seqno > btdata->qca_dump.ram_dump_seqno + 1) && (seqno != QCA_LAST_SEQUENCE_NUM)) { - dump_size = QCA_MEMDUMP_PKT_SIZE * (seqno - btdata->qca_dump.ram_dump_seqno - 1); + if ((seqno > qca_dump_ptr->ram_dump_seqno + 1) && seqno != QCA_LAST_SEQUENCE_NUM) { + dump_size = QCA_MEMDUMP_PKT_SIZE * (seqno - qca_dump_ptr->ram_dump_seqno - 1); hci_devcd_append_pattern(hdev, 0x0, dump_size); bt_dev_err(hdev, "expected memdump seqno(%u) is not received(%u)\n", - btdata->qca_dump.ram_dump_seqno, seqno); - btdata->qca_dump.ram_dump_seqno = seqno; + qca_dump_ptr->ram_dump_seqno, seqno); + qca_dump_ptr->ram_dump_seqno = seqno; kfree_skb(skb); return ret; } hci_devcd_append(hdev, skb); - btdata->qca_dump.ram_dump_seqno++; + qca_dump_ptr->ram_dump_seqno++; if (seqno == QCA_LAST_SEQUENCE_NUM) { bt_dev_info(hdev, "memdump done: pkts(%u), total(%u)\n", - btdata->qca_dump.ram_dump_seqno, btdata->qca_dump.ram_dump_size); + qca_dump_ptr->ram_dump_seqno, qca_dump_ptr->ram_dump_size); hci_devcd_complete(hdev); goto out; @@ -3230,10 +3235,10 @@ static int handle_dump_pkt_qca(struct hci_dev *hdev, struct sk_buff *skb) return ret; out: - if (btdata->qca_dump.ram_dump_size) + if (qca_dump_ptr->ram_dump_size) usb_enable_autosuspend(udev); - btdata->qca_dump.ram_dump_size = 0; - btdata->qca_dump.ram_dump_seqno = 0; + qca_dump_ptr->ram_dump_size = 0; + qca_dump_ptr->ram_dump_seqno = 0; clear_bit(BTUSB_HW_SSR_ACTIVE, &btdata->flags); if (ret < 0) @@ -3709,8 +3714,10 @@ static int btusb_setup_qca(struct hci_dev *hdev) return err; if (btdata->match_id->driver_info & BTUSB_QCA_WCN6855) { - btdata->qca_dump.fw_version = le32_to_cpu(ver.patch_version); - btdata->qca_dump.controller_id = le32_to_cpu(ver.rom_version); + struct btqca_data *btqca_data = hci_get_priv(hdev); + + btqca_data->qca_dump.fw_version = le32_to_cpu(ver.patch_version); + btqca_data->qca_dump.controller_id = le32_to_cpu(ver.rom_version); } if (!(status & QCA_SYSCFG_UPDATED)) { @@ -4174,6 +4181,9 @@ static int btusb_probe(struct usb_interface *intf, } else if (id->driver_info & BTUSB_MEDIATEK) { /* Allocate extra space for Mediatek device */ priv_size += sizeof(struct btmtk_data); + } else if (id->driver_info & BTUSB_QCA_WCN6855) { + /* Allocate extra space for QCA WCN6855 device */ + priv_size += sizeof(struct btqca_data); } data->recv_acl = hci_recv_frame; @@ -4316,8 +4326,10 @@ static int btusb_probe(struct usb_interface *intf, } if (id->driver_info & BTUSB_QCA_WCN6855) { - data->qca_dump.id_vendor = id->idVendor; - data->qca_dump.id_product = id->idProduct; + struct btqca_data *btqca_data = hci_get_priv(hdev); + + btqca_data->qca_dump.id_vendor = id->idVendor; + btqca_data->qca_dump.id_product = id->idProduct; data->recv_event = btusb_recv_evt_qca; data->recv_acl = btusb_recv_acl_qca; hci_devcd_register(hdev, btusb_coredump_qca, btusb_dump_hdr_qca, NULL); -- 2.34.1