ath10k: Add ath10k QMI client driver
PATCH 3/12 ath10k: Add ath10k QMI client driver
Add QMI client driver for Q6 integrated WLAN connectivity subsystem. This module is responsible for communicating WLAN control messages to FW over QUALCOMM MSM Interface (QMI).
--- drivers/net/wireless/ath/ath10k/Kconfig | 2 +- drivers/net/wireless/ath/ath10k/Makefile | 4 + drivers/net/wireless/ath/ath10k/qmi.c | 121 +++++++++++++++++++++++++++++++ drivers/net/wireless/ath/ath10k/qmi.h | 24 ++++++ 4 files changed, 150 insertions(+), 1 deletion(-) create mode 100644 drivers/net/wireless/ath/ath10k/qmi.c create mode 100644 drivers/net/wireless/ath/ath10k/qmi.h
drivers/net/wireless/ath/ath10k/Kconfig +1 -1
@@ -42,7 +42,7 @@ config ATH10K_USB config ATH10K_SNOC tristate "Qualcomm ath10k SNOC support (EXPERIMENTAL)" - depends on ATH10K && ARCH_QCOM + depends on ATH10K && ARCH_QCOM && QCOM_QMI_HELPERS ---help--- This module adds support for integrated WCN3990 chip connected to system NOC(SNOC). Currently work in progress and will not
drivers/net/wireless/ath/ath10k/Makefile +4 -0
@@ -38,5 +38,9 @@ ath10k_usb-y += usb.o obj-$(CONFIG_ATH10K_SNOC) += ath10k_snoc.o ath10k_snoc-y += snoc.o +obj-$(CONFIG_ATH10K_SNOC) += ath10k_qmi.o +ath10k_qmi-y += qmi.o \ + qmi_svc_v01.o + # for tracing framework to find trace.h CFLAGS_trace.o := -I$(src)
drivers/net/wireless/ath/ath10k/qmi.c new file +121 -0
121 lines not on this page · raw message
drivers/net/wireless/ath/ath10k/qmi.h new file +24 -0
@@ -0,0 +1,24 @@ +/* +* Copyright (c) 2018 The Linux Foundation. All rights reserved. +* +* Permission to use, copy, modify, and/or distribute this software for any +* purpose with or without fee is hereby granted, provided that the above +* copyright notice and this permission notice appear in all copies. +* +* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ +#ifndef _QMI_H_ +#define _QMI_H_ + +struct ath10k_qmi { +struct platform_device *pdev; +struct qmi_handle qmi_hdl; +struct sockaddr_qrtr sq; +}; +#endif /* _QMI_H_ */
Signature · 1 line
1.9.1
Quoted 19 lines · Govind Singh
Add QMI client driver for Q6 integrated WLAN connectivity subsystem. This module is responsible for communicating WLAN control messages to FW over QUALCOMM MSM Interface (QMI).
Signed-off-by Govind Singh <[email protected]>--- drivers/net/wireless/ath/ath10k/Kconfig | 2 +- drivers/net/wireless/ath/ath10k/Makefile | 4 + drivers/net/wireless/ath/ath10k/qmi.c | 121 +++++++++++++++++++++++++++++++ drivers/net/wireless/ath/ath10k/qmi.h | 24 ++++++ 4 files changed, 150 insertions(+), 1 deletion(-) create mode 100644 drivers/net/wireless/ath/ath10k/qmi.c create mode 100644 drivers/net/wireless/ath/ath10k/qmi.hdrivers/net/wireless/ath/ath10k/Kconfig +0
-0
drivers/net/wireless/ath/ath10k/Kconfig config ATH10K_USB · line 45
Quoted 5 lines
drivers/net/wireless/ath/ath10k/Kconfig +1
-1@@ -42,7 +42,7 @@ config ATH10K_USB config ATH10K_SNOC tristate "Qualcomm ath10k SNOC support (EXPERIMENTAL)" - depends on ATH10K && ARCH_QCOM + depends on ATH10K && ARCH_QCOM && QCOM_QMI_HELPERS
QCOM_QMI_HELPERS is expected to be selected by the clients, so this would be:
select QCOM_QMI_HELPERS
Quoted 28 lines
drivers/net/wireless/ath/ath10k/Kconfig +0
-0---help--- This module adds support for integrated WCN3990 chip connected to system NOC(SNOC). Currently work in progress and will notdrivers/net/wireless/ath/ath10k/Makefile +4
-0@@ -38,5 +38,9 @@ ath10k_usb-y += usb.o obj-$(CONFIG_ATH10K_SNOC) += ath10k_snoc.o ath10k_snoc-y += snoc.o +obj-$(CONFIG_ATH10K_SNOC) += ath10k_qmi.o +ath10k_qmi-y += qmi.o \ + qmi_svc_v01.o + # for tracing framework to find trace.h CFLAGS_trace.o := -I$(src)drivers/net/wireless/ath/ath10k/qmi.c new file +5
-0@@ -0,0 +1,121 @@ +/* +* Copyright (c) 2018 The Linux Foundation. All rights reserved. +* +* Permission to use, copy, modify, and/or distribute this software for any +* purpose with or without fee is hereby granted, provided that the above
drivers/net/wireless/ath/ath10k/qmi.c line 15
Quoted 10 lines
drivers/net/wireless/ath/ath10k/qmi.c new file +10
-0+* copyright notice and this permission notice appear in all copies. +* +* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/
SPDX headers for new files please.
Quoted 7 lines
drivers/net/wireless/ath/ath10k/qmi.c new file +7
-0+ +#include <linux/kernel.h> +#include <linux/module.h> +#include <linux/debugfs.h> +#include <linux/device.h> +#include <linux/platform_device.h> +#include <linux/qrtr.h>
drivers/net/wireless/ath/ath10k/qmi.c line 32
Quoted 10 lines
drivers/net/wireless/ath/ath10k/qmi.c new file +10
-0+#include <linux/net.h> +#include <linux/completion.h> +#include <linux/idr.h> +#include <linux/string.h> +#include <net/sock.h> +#include <linux/soc/qcom/qmi.h> +#include "qmi.h" +#include "qmi_svc_v01.h" + +static struct ath10k_qmi *qmi;
Please design your code so that you don't depend on a global state pointer.
Quoted 13 lines
drivers/net/wireless/ath/ath10k/qmi.c new file +13
-0+ +static int ath10k_qmi_new_server (struct qmi_handle *qmi_hdl, +struct qmi_service *service) +{ +return 0 ; +} + +static void ath10k_qmi_del_server (struct qmi_handle *qmi_hdl, +struct qmi_service *service) +{ +} + +static struct qmi_ops ath10k_qmi_ops = {
drivers/net/wireless/ath/ath10k/qmi.c line 55
Quoted 10 lines
drivers/net/wireless/ath/ath10k/qmi.c new file +10
-0+ .new_server = ath10k_qmi_new_server, + .del_server = ath10k_qmi_del_server, +}; + +static int ath10k_qmi_probe (struct platform_device *pdev) +{ +int ret; + + qmi =devm_kzalloc (&pdev->dev,sizeof (*qmi), +GFP_KERNEL );
This doesn't need to be line wrapped.
drivers/net/wireless/ath/ath10k/qmi.c line 59
Quoted 4 lines
drivers/net/wireless/ath/ath10k/qmi.c new file +4
-0+if (!qmi) +return -ENOMEM ; + + qmi->pdev = pdev;
The only place you use this is to access pdev->dev, so carry the struct device * instead.
drivers/net/wireless/ath/ath10k/qmi.c line 72
Quoted 13 lines
drivers/net/wireless/ath/ath10k/qmi.c new file +13
-0+platform_set_drvdata (pdev, qmi); + ret =qmi_handle_init (&qmi->qmi_hdl, +WLFW_BDF_DOWNLOAD_REQ_MSG_V01_MAX_MSG_LEN , + &ath10k_qmi_ops,NULL ); +if (ret <0 ) + goto err; + + ret =qmi_add_lookup (&qmi->qmi_hdl,WLFW_SERVICE_ID_V01 , +WLFW_SERVICE_VERS_V01 ,0 ); +if (ret <0 ) + goto err; + +pr_debug ("qmi client driver probed successfully\n" );
Rather than printing a line to indicate that your driver probed you can check /sys/bus/platform/drivers/ath10k_QMI_client for for devices, regardless of debug level.
drivers/net/wireless/ath/ath10k/qmi.c line 74
Quoted 2 lines
drivers/net/wireless/ath/ath10k/qmi.c new file +2
-0+ +return 0 ;
qmi_add_lookup() returns 0 on success, so you can have a common return, preferably after renaming "err" to "out" or something that indicates that it covers both cases.
Quoted 12 lines
drivers/net/wireless/ath/ath10k/qmi.c new file +12
-0+ +err: +return ret; +} + +static int ath10k_qmi_remove (struct platform_device *pdev) +{ +struct ath10k_qmi *qmi =platform_get_drvdata (pdev); + +qmi_handle_release (&qmi->qmi_hdl); + +return 0 ;
drivers/net/wireless/ath/ath10k/qmi.c line 96
Quoted 10 lines
drivers/net/wireless/ath/ath10k/qmi.c new file +10
-0+} + +static const struct of_device_id ath10k_qmi_dt_match[] = { + {.compatible ="qcom,ath10k-qmi" }, + {} +}; + +MODULE_DEVICE_TABLE (of, ath10k_qmi_dt_match); + +static struct platform_driver ath10k_qmi_clinet = {
Spelling of "client".
drivers/net/wireless/ath/ath10k/qmi.c line 101
Quoted 5 lines
drivers/net/wireless/ath/ath10k/qmi.c new file +5
-0+ .probe = ath10k_qmi_probe, + .remove = ath10k_qmi_remove, + .driver = { + .name = "ath10k QMI client", + .owner = THIS_MODULE,
platform_driver_register() will fill out .owner for you, so skip this.
Quoted 6 lines
drivers/net/wireless/ath/ath10k/qmi.c new file +6
-0+ .of_match_table = ath10k_qmi_dt_match, + }, +}; + +static int __init ath10k_qmi_init (void ) +{
drivers/net/wireless/ath/ath10k/qmi.c line 117
Quoted 10 lines
drivers/net/wireless/ath/ath10k/qmi.c new file +10
-0+return platform_driver_register (&ath10k_qmi_clinet); +} + +static void __exit ath10k_qmi_exit(void) +{ +platform_driver_unregister (&ath10k_qmi_clinet); +} + +module_init (ath10k_qmi_init); +module_exit (ath10k_qmi_exit);
Replace all this with:
module_platform_driver(ath10k_qmi_clinet);
Quoted 15 lines
drivers/net/wireless/ath/ath10k/qmi.c new file +4
-0+ +MODULE_AUTHOR ("Qualcomm" ); +MODULE_LICENSE ("Dual BSD/GPL" ); +MODULE_DESCRIPTION ("ath10k QMI client driver" );drivers/net/wireless/ath/ath10k/qmi.h new file +5
-0@@ -0,0 +1,24 @@ +/* +* Copyright (c) 2018 The Linux Foundation. All rights reserved. +* +* Permission to use, copy, modify, and/or distribute this software for any +* purpose with or without fee is hereby granted, provided that the above
drivers/net/wireless/ath/ath10k/qmi.h line 15
Quoted 10 lines
drivers/net/wireless/ath/ath10k/qmi.h new file +10
-0+* copyright notice and this permission notice appear in all copies. +* +* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/
SPDX headers, please.
drivers/net/wireless/ath/ath10k/qmi.h line 17
Quoted 2 lines
drivers/net/wireless/ath/ath10k/qmi.h new file +2
-0+#ifndef _QMI_H_ +#define _QMI_H_
This is not a good guard name, be more specific to avoid collisions.
drivers/net/wireless/ath/ath10k/qmi.h line 19
Quoted 2 lines
drivers/net/wireless/ath/ath10k/qmi.h new file +2
-0+ +struct ath10k_qmi {
Afaict ath10k_qmi is not used outside "qmi.c", so there's no reason to have it in a header file.
drivers/net/wireless/ath/ath10k/qmi.h line 22
Quoted 3 lines
drivers/net/wireless/ath/ath10k/qmi.h new file +3
-0+struct platform_device *pdev; +struct qmi_handle qmi_hdl; +struct sockaddr_qrtr sq;
Add sq in the patch that actually uses it.
drivers/net/wireless/ath/ath10k/qmi.h line 24
Quoted 2 lines
drivers/net/wireless/ath/ath10k/qmi.h new file +2
-0+}; +#endif /* _QMI_H_ */
Regards,
Bjorn
Hi Bjorn,
Thanks for the review.
Quoted 31 lines · Bjorn Andersson
Quoted 20 lines · Govind Singh
Add QMI client driver for Q6 integrated WLAN connectivity subsystem. This module is responsible for communicating WLAN control messages to FW over QUALCOMM MSM Interface (QMI).
Signed-off-by Govind Singh <[email protected]>--- drivers/net/wireless/ath/ath10k/Kconfig | 2 +- drivers/net/wireless/ath/ath10k/Makefile | 4 + drivers/net/wireless/ath/ath10k/qmi.c | 121 +++++++++++++++++++++++++++++++ drivers/net/wireless/ath/ath10k/qmi.h | 24 ++++++ 4 files changed, 150 insertions(+), 1 deletion(-) create mode 100644 drivers/net/wireless/ath/ath10k/qmi.c create mode 100644 drivers/net/wireless/ath/ath10k/qmi.hdrivers/net/wireless/ath/ath10k/Kconfig +0
-0drivers/net/wireless/ath/ath10k/Kconfig config ATH10K_USB · line 45
Quoted 5 lines
drivers/net/wireless/ath/ath10k/Kconfig +1
-1@@ -42,7 +42,7 @@ config ATH10K_USB config ATH10K_SNOC tristate "Qualcomm ath10k SNOC support (EXPERIMENTAL)" - depends on ATH10K && ARCH_QCOM + depends on ATH10K && ARCH_QCOM && QCOM_QMI_HELPERS
QCOM_QMI_HELPERSis expected to be selected by the clients, so this would be:
Quoted 1 line
select
QCOM_QMI_HELPERS
Sure, will do in next version.
Quoted 11 lines
Quoted 10 lines
drivers/net/wireless/ath/ath10k/Kconfig +1
-0+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BELIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
Quoted 2 lines
SPDX headers for new files please.
Sure, will do in next version.
Quoted 5 lines
Quoted 1 line
+static struct
ath10k_qmi*qmi;Please design your code so that you don't depend on a global state pointer.
Actually i thought about this, i can save this in platform drvdata and get this at run time by saving the pdev in qmi_service->priv.
But qmi_service is available only in new_server/del_server, but not in the qmi indication callbacks. Qmi handle also does not have the reference to the qmi_service.
Can you pls suggest something here.
Quoted 17 lines
Quoted 17 lines
drivers/net/wireless/ath/ath10k/Kconfig +17
-0+ +static int ath10k_qmi_new_server(struct qmi_handle *qmi_hdl, + struct qmi_service *service) +{ + return 0; +} + +static void ath10k_qmi_del_server(struct qmi_handle *qmi_hdl, + struct qmi_service *service) +{ +} + +static struct qmi_ops ath10k_qmi_ops = { + .new_server = ath10k_qmi_new_server, + .del_server = ath10k_qmi_del_server, +}; +
Quoted 9 lines
drivers/net/wireless/ath/ath10k/Kconfig
Quoted 6 lines
drivers/net/wireless/ath/ath10k/Kconfig +6
-0+static int ath10k_qmi_probe(struct platform_device *pdev) +{ + int ret; + + qmi = devm_kzalloc(&pdev->dev, sizeof(*qmi), + GFP_KERNEL);This doesn't need to be line wrapped.
Sure, will do in next version.
Quoted 8 lines
drivers/net/wireless/ath/ath10k/Kconfig
Quoted 4 lines
drivers/net/wireless/ath/ath10k/Kconfig +4
-0+ if (!qmi) + return -ENOMEM; + + qmi->pdev = pdev;The only place you use this is to access
pdev->dev, so carry the struct device * instead.
Sure, will do in next version.
Quoted 9 lines
Quoted 9 lines
drivers/net/wireless/ath/ath10k/Kconfig +9
-0+ platform_set_drvdata(pdev, qmi); + ret = qmi_handle_init(&qmi->qmi_hdl, + WLFW_BDF_DOWNLOAD_REQ_MSG_V01_MAX_MSG_LEN, + &ath10k_qmi_ops, NULL); + if (ret < 0) + goto err; + + ret = qmi_add_lookup(&qmi->qmi_hdl, WLFW_SERVICE_ID_V01, + WLFW_SERVICE_VERS_V01, 0);
Quoted 9 lines
drivers/net/wireless/ath/ath10k/Kconfig
Quoted 4 lines
drivers/net/wireless/ath/ath10k/Kconfig +4
-0+ if (ret < 0) + goto err; + + pr_debug("qmi client driver probed successfully\n");Rather than printing a line to indicate that your driver probed you can check
/sys/bus/platform/drivers/ath10k_QMI_clientfor for devices, regardless of debug level.
Sure, will do in next version.
Quoted 23 lines
drivers/net/wireless/ath/ath10k/Kconfig
Quoted 2 lines
drivers/net/wireless/ath/ath10k/Kconfig +2
-0+ + return 0;
qmi_add_lookup()returns 0 on success, so you can have a common return, preferably after renaming "err" to "out" or something that indicates that it covers both cases.Quoted 16 lines
drivers/net/wireless/ath/ath10k/Kconfig +16
-0+ +err: + return ret; +} + +static int ath10k_qmi_remove(struct platform_device *pdev) +{ + struct ath10k_qmi *qmi = platform_get_drvdata(pdev); + + qmi_handle_release(&qmi->qmi_hdl); + + return 0; +} + +static const struct of_device_id ath10k_qmi_dt_match[] = { + {.compatible = "qcom,ath10k-qmi"},
Quoted 9 lines
drivers/net/wireless/ath/ath10k/Kconfig
Quoted 6 lines
drivers/net/wireless/ath/ath10k/Kconfig +6
-0+ {} +}; + +MODULE_DEVICE_TABLE(of, ath10k_qmi_dt_match); + +static struct platform_driver ath10k_qmi_clinet = {Spelling of "client".
Sure, will do in next version.
Quoted 18 lines
drivers/net/wireless/ath/ath10k/Kconfig
Quoted 5 lines
drivers/net/wireless/ath/ath10k/Kconfig +5
-0+ .probe = ath10k_qmi_probe, + .remove = ath10k_qmi_remove, + .driver = { + .name = "ath10k QMI client", + .owner = THIS_MODULE,
platform_driver_register()will fill out .owner for you, so skip this.Quoted 10 lines
drivers/net/wireless/ath/ath10k/Kconfig +10
-0+ .of_match_table = ath10k_qmi_dt_match, + }, +}; + +static int __init ath10k_qmi_init(void) +{ + return platform_driver_register(&ath10k_qmi_clinet); +} + +static void __exit ath10k_qmi_exit(void)
Quoted 9 lines
drivers/net/wireless/ath/ath10k/Kconfig
Quoted 6 lines
drivers/net/wireless/ath/ath10k/Kconfig +6
-0+{ + platform_driver_unregister(&ath10k_qmi_clinet); +} + +module_init(ath10k_qmi_init); +module_exit(ath10k_qmi_exit);Replace all this with:
Sure, will do in next version.
Quoted 37 lines
module_platform_driver(ath10k_qmi_clinet);Quoted 24 lines
drivers/net/wireless/ath/ath10k/Kconfig +4
-0+ +MODULE_AUTHOR("Qualcomm"); +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_DESCRIPTION("ath10k QMI client driver");drivers/net/wireless/ath/ath10k/qmi.h new file +4
-0@@ -0,0 +1,24 @@ +/* +* Copyright (c) 2018 The Linux Foundation. All rights reserved. +* +* Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FORQuoted 8 lines
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */SPDX headers, please.
Quoted 5 lines
drivers/net/wireless/ath/ath10k/qmi.h line 17
Quoted 2 lines
drivers/net/wireless/ath/ath10k/qmi.h new file +2
-0+#ifndef _QMI_H_ +#define _QMI_H_This is not a good guard name, be more specific to avoid collisions.
Sure, will do in next version.
Quoted 6 lines
drivers/net/wireless/ath/ath10k/qmi.h line 19
Quoted 2 lines
drivers/net/wireless/ath/ath10k/qmi.h new file +2
-0+ +struct ath10k_qmi {Afaict
ath10k_qmiis not used outside "qmi.c", so there's no reason to have it in a header file.
Quoted 6 lines
drivers/net/wireless/ath/ath10k/qmi.h line 22
Quoted 3 lines
drivers/net/wireless/ath/ath10k/qmi.h new file +3
-0+struct platform_device *pdev; +struct qmi_handle qmi_hdl; +struct sockaddr_qrtr sq;Add sq in the patch that actually uses it.
Sure, will do in next version.
Quoted 5 lines
drivers/net/wireless/ath/ath10k/qmi.h line 24
Quoted 2 lines
drivers/net/wireless/ath/ath10k/qmi.h new file +2
-0+}; +#endif /* _QMI_H_ */ Regards,
Bjorn