diff --git a/arch/arm/configs/apq8084-perf_defconfig b/arch/arm/configs/apq8084-perf_defconfig index ce7a61f65273..704b9c831dcb 100644 --- a/arch/arm/configs/apq8084-perf_defconfig +++ b/arch/arm/configs/apq8084-perf_defconfig @@ -44,10 +44,7 @@ CONFIG_MSM_SMD=y CONFIG_MSM_PCIE=y CONFIG_MSM_SMP2P=y CONFIG_MSM_SMP2P_TEST=y -CONFIG_MSM_IPC_ROUTER=y -CONFIG_MSM_IPC_ROUTER_SMD_XPRT=y -CONFIG_MSM_IPC_ROUTER_HSIC_XPRT=y -CONFIG_MSM_IPC_ROUTER_SECURITY=y +CONFIG_EXTERNAL_MDM=y CONFIG_MSM_QMI_INTERFACE=y CONFIG_MSM_SUBSYSTEM_RESTART=y CONFIG_MSM_SYSMON_COMM=y @@ -64,6 +61,8 @@ CONFIG_MSM_DLOAD_MODE=y CONFIG_MSM_JTAG=y CONFIG_MSM_RUN_QUEUE_STATS=y CONFIG_MSM_ADSP_LOADER=y +CONFIG_MSM_IPC_ROUTER_SMD_XPRT=y +CONFIG_MSM_IPC_ROUTER_HSIC_XPRT=y CONFIG_MSM_OCMEM=y CONFIG_MSM_OCMEM_LOCAL_POWER_CTRL=y CONFIG_MSM_OCMEM_DEBUG=y @@ -240,6 +239,8 @@ CONFIG_CFG80211=y CONFIG_CFG80211_INTERNAL_REGDB=y CONFIG_RFKILL=y CONFIG_NFC_QNCI=y +CONFIG_IPC_ROUTER=y +CONFIG_IPC_ROUTER_SECURITY=y CONFIG_CMA=y CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_RAM=y diff --git a/arch/arm/configs/apq8084_defconfig b/arch/arm/configs/apq8084_defconfig index da6bc41084a6..778d560f3324 100644 --- a/arch/arm/configs/apq8084_defconfig +++ b/arch/arm/configs/apq8084_defconfig @@ -43,10 +43,7 @@ CONFIG_MSM_SMD=y CONFIG_MSM_PCIE=y CONFIG_MSM_SMP2P=y CONFIG_MSM_SMP2P_TEST=y -CONFIG_MSM_IPC_ROUTER=y -CONFIG_MSM_IPC_ROUTER_SMD_XPRT=y -CONFIG_MSM_IPC_ROUTER_HSIC_XPRT=y -CONFIG_MSM_IPC_ROUTER_SECURITY=y +CONFIG_EXTERNAL_MDM=y CONFIG_MSM_QMI_INTERFACE=y CONFIG_MSM_SUBSYSTEM_RESTART=y CONFIG_MSM_SYSMON_COMM=y @@ -62,6 +59,8 @@ CONFIG_MSM_MEMORY_DUMP=y CONFIG_MSM_DLOAD_MODE=y CONFIG_MSM_RUN_QUEUE_STATS=y CONFIG_MSM_ADSP_LOADER=y +CONFIG_MSM_IPC_ROUTER_SMD_XPRT=y +CONFIG_MSM_IPC_ROUTER_HSIC_XPRT=y CONFIG_MSM_OCMEM=y CONFIG_MSM_OCMEM_LOCAL_POWER_CTRL=y CONFIG_MSM_OCMEM_DEBUG=y @@ -242,6 +241,8 @@ CONFIG_CFG80211=y CONFIG_CFG80211_INTERNAL_REGDB=y CONFIG_RFKILL=y CONFIG_NFC_QNCI=y +CONFIG_IPC_ROUTER=y +CONFIG_IPC_ROUTER_SECURITY=y CONFIG_CMA=y CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_RAM=y diff --git a/arch/arm/configs/fsm9900-perf_defconfig b/arch/arm/configs/fsm9900-perf_defconfig index f2a2466ac54d..9bbc4e98c60a 100644 --- a/arch/arm/configs/fsm9900-perf_defconfig +++ b/arch/arm/configs/fsm9900-perf_defconfig @@ -43,8 +43,6 @@ CONFIG_MSM_MPM_OF=y CONFIG_CPU_HAS_L2_PMU=y CONFIG_MSM_SMD=y CONFIG_MSM_PCIE=y -CONFIG_MSM_IPC_ROUTER=y -CONFIG_MSM_IPC_ROUTER_SMD_XPRT=y CONFIG_MSM_SUBSYSTEM_RESTART=y CONFIG_MSM_SYSMON_COMM=y CONFIG_MSM_PIL_FEMTO=y @@ -138,6 +136,7 @@ CONFIG_BRIDGE_EBT_PKTTYPE=m CONFIG_BRIDGE_EBT_VLAN=m CONFIG_BRIDGE=y CONFIG_VLAN_8021Q=y +CONFIG_IPC_ROUTER=y CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_RAM=y @@ -242,6 +241,7 @@ CONFIG_REMOTE_SPINLOCK_MSM=y CONFIG_PWM=y CONFIG_PWM_QPNP=y CONFIG_MSM_SMEM=y +CONFIG_MSM_IPC_ROUTER_SMD_XPRT=y CONFIG_EXT2_FS=y CONFIG_EXT2_FS_XATTR=y CONFIG_EXT3_FS=y diff --git a/arch/arm/configs/fsm9900_defconfig b/arch/arm/configs/fsm9900_defconfig index 30512eb0ca6b..deb208366507 100644 --- a/arch/arm/configs/fsm9900_defconfig +++ b/arch/arm/configs/fsm9900_defconfig @@ -42,8 +42,6 @@ CONFIG_MSM_MPM_OF=y CONFIG_CPU_HAS_L2_PMU=y CONFIG_MSM_SMD=y CONFIG_MSM_PCIE=y -CONFIG_MSM_IPC_ROUTER=y -CONFIG_MSM_IPC_ROUTER_SMD_XPRT=y CONFIG_MSM_SUBSYSTEM_RESTART=y CONFIG_MSM_SYSMON_COMM=y CONFIG_MSM_PIL_FEMTO=y @@ -139,6 +137,7 @@ CONFIG_BRIDGE_EBT_PKTTYPE=m CONFIG_BRIDGE_EBT_VLAN=m CONFIG_BRIDGE=y CONFIG_VLAN_8021Q=y +CONFIG_IPC_ROUTER=y CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_RAM=y @@ -241,6 +240,7 @@ CONFIG_REMOTE_SPINLOCK_MSM=y CONFIG_PWM=y CONFIG_PWM_QPNP=y CONFIG_MSM_SMEM=y +CONFIG_MSM_IPC_ROUTER_SMD_XPRT=y CONFIG_EXT2_FS=y CONFIG_EXT2_FS_XATTR=y CONFIG_EXT3_FS=y diff --git a/arch/arm/configs/mdm9630_defconfig b/arch/arm/configs/mdm9630_defconfig index 64c4c54481c7..595a5a99a87a 100644 --- a/arch/arm/configs/mdm9630_defconfig +++ b/arch/arm/configs/mdm9630_defconfig @@ -38,8 +38,6 @@ CONFIG_MSM_SMD=y CONFIG_MSM_PCIE=y CONFIG_MSM_SMP2P=y CONFIG_MSM_SMP2P_TEST=y -CONFIG_MSM_IPC_ROUTER=y -CONFIG_MSM_IPC_ROUTER_SMD_XPRT=y CONFIG_MSM_QMI_INTERFACE=y CONFIG_MSM_SUBSYSTEM_RESTART=y CONFIG_MSM_SYSMON_COMM=y @@ -168,6 +166,7 @@ CONFIG_RMNET_DATA=y CONFIG_RMNET_DATA_DEBUG_PKT=y CONFIG_CFG80211=y CONFIG_CFG80211_INTERNAL_REGDB=y +CONFIG_IPC_ROUTER=y CONFIG_CMA=y CONFIG_MTD=y CONFIG_MTD_CMDLINE_PARTS=y @@ -299,6 +298,7 @@ CONFIG_CORESIGHT_AUDIO_ETM=y CONFIG_CORESIGHT_MODEM_ETM=y CONFIG_CORESIGHT_RPM_ETM=y CONFIG_MSM_SMEM=y +CONFIG_MSM_IPC_ROUTER_SMD_XPRT=y CONFIG_EXT3_FS=y CONFIG_VFAT_FS=y CONFIG_TMPFS=y diff --git a/arch/arm/configs/mpq8092_defconfig b/arch/arm/configs/mpq8092_defconfig index 1bb9b14b3578..fdd8f556395d 100644 --- a/arch/arm/configs/mpq8092_defconfig +++ b/arch/arm/configs/mpq8092_defconfig @@ -40,9 +40,6 @@ CONFIG_CPU_HAS_L2_PMU=y CONFIG_MSM_SMD=y CONFIG_MSM_SMP2P=y CONFIG_MSM_SMP2P_TEST=y -CONFIG_MSM_IPC_ROUTER=y -CONFIG_MSM_IPC_ROUTER_SMD_XPRT=y -CONFIG_MSM_IPC_ROUTER_SECURITY=y CONFIG_MSM_QMI_INTERFACE=y CONFIG_MSM_SUBSYSTEM_RESTART=y CONFIG_MSM_SYSMON_COMM=y @@ -198,6 +195,8 @@ CONFIG_NET_EMATCH_TEXT=y CONFIG_NET_CLS_ACT=y CONFIG_CFG80211=y CONFIG_RFKILL=y +CONFIG_IPC_ROUTER=y +CONFIG_IPC_ROUTER_SECURITY=y CONFIG_CMA=y CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_RAM=y @@ -311,6 +310,7 @@ CONFIG_BACKLIGHT_LCD_SUPPORT=y CONFIG_BACKLIGHT_CLASS_DEVICE=y # CONFIG_BACKLIGHT_GENERIC is not set CONFIG_MSM_ADSP_LOADER=y +CONFIG_MSM_IPC_ROUTER_SMD_XPRT=y CONFIG_SOUND=y CONFIG_SND=y CONFIG_SND_SOC=y diff --git a/arch/arm/configs/msm8226-perf_defconfig b/arch/arm/configs/msm8226-perf_defconfig index 9607eac82cca..a987100fcc56 100644 --- a/arch/arm/configs/msm8226-perf_defconfig +++ b/arch/arm/configs/msm8226-perf_defconfig @@ -42,8 +42,6 @@ CONFIG_MSM_SMD=y CONFIG_MSM_BAM_DMUX=y CONFIG_MSM_SMP2P=y CONFIG_MSM_SMP2P_TEST=y -CONFIG_MSM_IPC_ROUTER=y -CONFIG_MSM_IPC_ROUTER_SMD_XPRT=y CONFIG_MSM_QMI_INTERFACE=y CONFIG_MSM_SMCMOD=y CONFIG_MSM_SUBSYSTEM_RESTART=y @@ -60,6 +58,7 @@ CONFIG_MSM_WATCHDOG_V2=y CONFIG_MSM_MEMORY_DUMP=y CONFIG_MSM_DLOAD_MODE=y CONFIG_MSM_ADSP_LOADER=y +CONFIG_MSM_IPC_ROUTER_SMD_XPRT=y CONFIG_MSM_OCMEM=y CONFIG_MSM_OCMEM_LOCAL_POWER_CTRL=y CONFIG_MSM_OCMEM_DEBUG=y @@ -201,6 +200,7 @@ CONFIG_CFG80211=y CONFIG_NL80211_TESTMODE=y CONFIG_CFG80211_INTERNAL_REGDB=y CONFIG_NFC_QNCI=y +CONFIG_IPC_ROUTER=y CONFIG_CMA=y CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_RAM=y diff --git a/arch/arm/configs/msm8226_defconfig b/arch/arm/configs/msm8226_defconfig index 765d2937ffa3..c472fde6954f 100644 --- a/arch/arm/configs/msm8226_defconfig +++ b/arch/arm/configs/msm8226_defconfig @@ -41,8 +41,6 @@ CONFIG_MSM_SMD=y CONFIG_MSM_BAM_DMUX=y CONFIG_MSM_SMP2P=y CONFIG_MSM_SMP2P_TEST=y -CONFIG_MSM_IPC_ROUTER=y -CONFIG_MSM_IPC_ROUTER_SMD_XPRT=y CONFIG_MSM_QMI_INTERFACE=y CONFIG_MSM_SMCMOD=y CONFIG_MSM_SUBSYSTEM_RESTART=y @@ -59,6 +57,7 @@ CONFIG_MSM_WATCHDOG_V2=y CONFIG_MSM_MEMORY_DUMP=y CONFIG_MSM_DLOAD_MODE=y CONFIG_MSM_ADSP_LOADER=y +CONFIG_MSM_IPC_ROUTER_SMD_XPRT=y CONFIG_MSM_OCMEM=y CONFIG_MSM_OCMEM_LOCAL_POWER_CTRL=y CONFIG_MSM_OCMEM_DEBUG=y @@ -201,6 +200,7 @@ CONFIG_CFG80211=y CONFIG_NL80211_TESTMODE=y CONFIG_CFG80211_INTERNAL_REGDB=y CONFIG_NFC_QNCI=y +CONFIG_IPC_ROUTER=y CONFIG_CMA=y CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_RAM=y diff --git a/arch/arm/configs/msm8610-perf_defconfig b/arch/arm/configs/msm8610-perf_defconfig index 01565f54bdbf..436afdd44367 100644 --- a/arch/arm/configs/msm8610-perf_defconfig +++ b/arch/arm/configs/msm8610-perf_defconfig @@ -44,8 +44,6 @@ CONFIG_MSM_SMD=y CONFIG_MSM_BAM_DMUX=y CONFIG_MSM_SMP2P=y CONFIG_MSM_SMP2P_TEST=y -CONFIG_MSM_IPC_ROUTER=y -CONFIG_MSM_IPC_ROUTER_SMD_XPRT=y CONFIG_MSM_QMI_INTERFACE=y CONFIG_MSM_SUBSYSTEM_RESTART=y CONFIG_MSM_SYSMON_COMM=y @@ -61,6 +59,7 @@ CONFIG_MSM_WATCHDOG_V2=y CONFIG_MSM_MEMORY_DUMP=y CONFIG_MSM_DLOAD_MODE=y CONFIG_MSM_ADSP_LOADER=y +CONFIG_MSM_IPC_ROUTER_SMD_XPRT=y CONFIG_SENSORS_ADSP=y CONFIG_MSM_ENABLE_WDOG_DEBUG_CONTROL=y CONFIG_MSM_BOOT_STATS=y @@ -192,6 +191,7 @@ CONFIG_CFG80211=y CONFIG_NL80211_TESTMODE=y CONFIG_CFG80211_INTERNAL_REGDB=y CONFIG_NFC_QNCI=y +CONFIG_IPC_ROUTER=y CONFIG_CMA=y CONFIG_CMA_SIZE_MBYTES=4 CONFIG_BLK_DEV_LOOP=y diff --git a/arch/arm/configs/msm8610_defconfig b/arch/arm/configs/msm8610_defconfig index d902b7d5ca76..f60cc605d17e 100644 --- a/arch/arm/configs/msm8610_defconfig +++ b/arch/arm/configs/msm8610_defconfig @@ -41,8 +41,6 @@ CONFIG_MSM_SMD=y CONFIG_MSM_BAM_DMUX=y CONFIG_MSM_SMP2P=y CONFIG_MSM_SMP2P_TEST=y -CONFIG_MSM_IPC_ROUTER=y -CONFIG_MSM_IPC_ROUTER_SMD_XPRT=y CONFIG_MSM_QMI_INTERFACE=y CONFIG_MSM_SUBSYSTEM_RESTART=y CONFIG_MSM_SYSMON_COMM=y @@ -58,6 +56,7 @@ CONFIG_MSM_WATCHDOG_V2=y CONFIG_MSM_MEMORY_DUMP=y CONFIG_MSM_DLOAD_MODE=y CONFIG_MSM_ADSP_LOADER=y +CONFIG_MSM_IPC_ROUTER_SMD_XPRT=y CONFIG_SENSORS_ADSP=y CONFIG_MSM_ENABLE_WDOG_DEBUG_CONTROL=y CONFIG_MSM_BOOT_STATS=y @@ -190,6 +189,7 @@ CONFIG_CFG80211=y CONFIG_NL80211_TESTMODE=y CONFIG_CFG80211_INTERNAL_REGDB=y CONFIG_NFC_QNCI=y +CONFIG_IPC_ROUTER=y CONFIG_CMA=y CONFIG_CMA_SIZE_MBYTES=4 CONFIG_BLK_DEV_LOOP=y diff --git a/arch/arm/configs/msm8974-perf_defconfig b/arch/arm/configs/msm8974-perf_defconfig index 0220509a0c9f..2efe9a7b3e43 100644 --- a/arch/arm/configs/msm8974-perf_defconfig +++ b/arch/arm/configs/msm8974-perf_defconfig @@ -46,9 +46,6 @@ CONFIG_MSM_SMD=y CONFIG_MSM_BAM_DMUX=y CONFIG_MSM_SMP2P=y CONFIG_MSM_SMP2P_TEST=y -CONFIG_MSM_IPC_ROUTER=y -CONFIG_MSM_IPC_ROUTER_SMD_XPRT=y -CONFIG_MSM_IPC_ROUTER_SECURITY=y CONFIG_MSM_QMI_INTERFACE=y CONFIG_MSM_SUBSYSTEM_RESTART=y CONFIG_MSM_SYSMON_COMM=y @@ -66,6 +63,7 @@ CONFIG_MSM_WATCHDOG_V2=y CONFIG_MSM_MEMORY_DUMP=y CONFIG_MSM_DLOAD_MODE=y CONFIG_MSM_ADSP_LOADER=y +CONFIG_MSM_IPC_ROUTER_SMD_XPRT=y CONFIG_MSM_OCMEM=y CONFIG_MSM_OCMEM_LOCAL_POWER_CTRL=y CONFIG_MSM_OCMEM_DEBUG=y @@ -232,6 +230,8 @@ CONFIG_NL80211_TESTMODE=y CONFIG_CFG80211_INTERNAL_REGDB=y CONFIG_RFKILL=y CONFIG_NFC_QNCI=y +CONFIG_IPC_ROUTER=y +CONFIG_IPC_ROUTER_SECURITY=y CONFIG_CMA=y CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_RAM=y diff --git a/arch/arm/configs/msm8974_defconfig b/arch/arm/configs/msm8974_defconfig index c5bb63145b73..372c11944063 100644 --- a/arch/arm/configs/msm8974_defconfig +++ b/arch/arm/configs/msm8974_defconfig @@ -45,9 +45,6 @@ CONFIG_MSM_SMD=y CONFIG_MSM_BAM_DMUX=y CONFIG_MSM_SMP2P=y CONFIG_MSM_SMP2P_TEST=y -CONFIG_MSM_IPC_ROUTER=y -CONFIG_MSM_IPC_ROUTER_SMD_XPRT=y -CONFIG_MSM_IPC_ROUTER_SECURITY=y CONFIG_MSM_QMI_INTERFACE=y CONFIG_MSM_SUBSYSTEM_RESTART=y CONFIG_MSM_SYSMON_COMM=y @@ -65,6 +62,7 @@ CONFIG_MSM_WATCHDOG_V2=y CONFIG_MSM_MEMORY_DUMP=y CONFIG_MSM_DLOAD_MODE=y CONFIG_MSM_ADSP_LOADER=y +CONFIG_MSM_IPC_ROUTER_SMD_XPRT=y CONFIG_MSM_OCMEM=y CONFIG_MSM_OCMEM_LOCAL_POWER_CTRL=y CONFIG_MSM_OCMEM_DEBUG=y @@ -237,6 +235,8 @@ CONFIG_NL80211_TESTMODE=y CONFIG_CFG80211_INTERNAL_REGDB=y CONFIG_RFKILL=y CONFIG_NFC_QNCI=y +CONFIG_IPC_ROUTER=y +CONFIG_IPC_ROUTER_SECURITY=y CONFIG_CMA=y CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_RAM=y diff --git a/arch/arm/mach-msm/Kconfig b/arch/arm/mach-msm/Kconfig index 4225a7bacd2b..db4c50037ec8 100644 --- a/arch/arm/mach-msm/Kconfig +++ b/arch/arm/mach-msm/Kconfig @@ -678,44 +678,8 @@ config MSM_SMD_LOGGING If in doubt, say yes. -config MSM_IPC_ROUTER - depends on NET - default n - bool "MSM IPC Router support" - help - Support for the MSM IPC Router for communication between - the APPs and the MODEM - -config MSM_IPC_ROUTER_SMD_XPRT - depends on MSM_SMD - depends on MSM_IPC_ROUTER - default n - bool "MSM SMD XPRT Layer" - help - SMD Transport Layer for IPC Router - -config MSM_IPC_ROUTER_HSIC_XPRT - depends on USB_QCOM_IPC_BRIDGE - depends on MSM_IPC_ROUTER - bool "MSM HSIC XPRT Layer" - help - HSIC Transport Layer that enables off-chip communication of - IPC Router. When the HSIC endpoint becomes available, this layer - registers the transport with IPC Router and enable message - exchange. - -config MSM_IPC_ROUTER_SECURITY - depends on MSM_IPC_ROUTER - bool "MSM IPC Router Security support" - help - This feature of IPC Router will enforce security rules - configured by a security script from the user-space. IPC Router - once configured with the security rules will ensure that the - sender of the message to a service belongs to the relevant - Linux group as configured by the security script. - config MSM_QMI_INTERFACE - depends on MSM_IPC_ROUTER + depends on IPC_ROUTER depends on QMI_ENCDEC default n bool "MSM QMI Interface Library" diff --git a/arch/arm/mach-msm/Makefile b/arch/arm/mach-msm/Makefile index ef1293809813..bac4c414092b 100644 --- a/arch/arm/mach-msm/Makefile +++ b/arch/arm/mach-msm/Makefile @@ -49,11 +49,6 @@ obj-$(CONFIG_MSM_PIL_BCSS) += pil-bcss.o obj-$(CONFIG_MSM_BAM_DMUX) += bam_dmux.o obj-$(CONFIG_MSM_SMD_LOGGING) += smem_log.o obj-y += socinfo.o -obj-$(CONFIG_MSM_IPC_ROUTER_SMD_XPRT) += ipc_router_smd_xprt.o -obj-$(CONFIG_MSM_IPC_ROUTER_HSIC_XPRT) += ipc_router_hsic_xprt.o -obj-$(CONFIG_MSM_IPC_ROUTER) += ipc_router.o -obj-$(CONFIG_MSM_IPC_ROUTER)+= ipc_socket.o -obj-$(CONFIG_MSM_IPC_ROUTER_SECURITY)+= msm_ipc_router_security.o obj-$(CONFIG_MSM_QMI_INTERFACE) += msm_qmi_interface.o obj-$(CONFIG_MSM_TEST_QMI_CLIENT) += kernel_test_service_v01.o test_qmi_client.o obj-$(CONFIG_DEBUG_FS) += smd_rpc_sym.o diff --git a/arch/arm/mach-msm/msm_qmi_interface.c b/arch/arm/mach-msm/msm_qmi_interface.c index 163e330e61be..180e0e8fba56 100644 --- a/arch/arm/mach-msm/msm_qmi_interface.c +++ b/arch/arm/mach-msm/msm_qmi_interface.c @@ -28,9 +28,9 @@ #include #include #include +#include #include -#include #include "msm_qmi_interface_priv.h" diff --git a/drivers/soc/qcom/Kconfig b/drivers/soc/qcom/Kconfig index 1ea417e3b313..d4e674ed8402 100644 --- a/drivers/soc/qcom/Kconfig +++ b/drivers/soc/qcom/Kconfig @@ -2,6 +2,26 @@ if ARCH_MSM +config MSM_IPC_ROUTER_SMD_XPRT + depends on MSM_SMD + depends on IPC_ROUTER + bool "MSM SMD XPRT Layer" + help + SMD Transport Layer that enables IPC Router communication within + a System-on-Chip(SoC). When the SMD channels become available, + this layer registers a transport with IPC Router and enable + message exchange. + +config MSM_IPC_ROUTER_HSIC_XPRT + depends on USB_QCOM_IPC_BRIDGE + depends on IPC_ROUTER + bool "MSM HSIC XPRT Layer" + help + HSIC Transport Layer that enables off-chip communication of + IPC Router. When the HSIC endpoint becomes available, this layer + registers the transport with IPC Router and enable message + exchange. + config MSM_SMEM depends on REMOTE_SPINLOCK_MSM bool "MSM Shared Memory (SMEM)" diff --git a/drivers/soc/qcom/Makefile b/drivers/soc/qcom/Makefile index 3cc5f0ddd799..9db826144a4f 100644 --- a/drivers/soc/qcom/Makefile +++ b/drivers/soc/qcom/Makefile @@ -2,5 +2,7 @@ obj-y += qdsp6v2/ +obj-$(CONFIG_MSM_IPC_ROUTER_HSIC_XPRT) += ipc_router_hsic_xprt.o +obj-$(CONFIG_MSM_IPC_ROUTER_SMD_XPRT) += ipc_router_smd_xprt.o obj-$(CONFIG_MSM_SMEM) += smem.o smem_debug.o obj-$(CONFIG_MEM_SHARE_QMI_SERVICE) += memshare/ diff --git a/arch/arm/mach-msm/ipc_router_hsic_xprt.c b/drivers/soc/qcom/ipc_router_hsic_xprt.c similarity index 99% rename from arch/arm/mach-msm/ipc_router_hsic_xprt.c rename to drivers/soc/qcom/ipc_router_hsic_xprt.c index 502391ab6c8c..8d2c8ab7d55f 100644 --- a/arch/arm/mach-msm/ipc_router_hsic_xprt.c +++ b/drivers/soc/qcom/ipc_router_hsic_xprt.c @@ -19,12 +19,14 @@ #include #include #include +#include +#include +#include +#include #include #include -#include "ipc_router.h" - static int msm_ipc_router_hsic_xprt_debug_mask; module_param_named(debug_mask, msm_ipc_router_hsic_xprt_debug_mask, int, S_IRUGO | S_IWUSR | S_IWGRP); diff --git a/arch/arm/mach-msm/ipc_router_smd_xprt.c b/drivers/soc/qcom/ipc_router_smd_xprt.c similarity index 99% rename from arch/arm/mach-msm/ipc_router_smd_xprt.c rename to drivers/soc/qcom/ipc_router_smd_xprt.c index 6bbeeaf26d4a..39043452f639 100644 --- a/arch/arm/mach-msm/ipc_router_smd_xprt.c +++ b/drivers/soc/qcom/ipc_router_smd_xprt.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2011-2013, The Linux Foundation. All rights reserved. +/* Copyright (c) 2011-2014, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -19,13 +19,15 @@ #include #include #include +#include +#include +#include +#include #include #include #include -#include "ipc_router.h" - static int msm_ipc_router_smd_xprt_debug_mask; module_param_named(debug_mask, msm_ipc_router_smd_xprt_debug_mask, int, S_IRUGO | S_IWUSR | S_IWGRP); diff --git a/arch/arm/mach-msm/include/mach/msm_ipc_router.h b/include/linux/ipc_router.h similarity index 98% rename from arch/arm/mach-msm/include/mach/msm_ipc_router.h rename to include/linux/ipc_router.h index f5adfd739ded..ace57220116f 100644 --- a/arch/arm/mach-msm/include/mach/msm_ipc_router.h +++ b/include/linux/ipc_router.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2012-2013, The Linux Foundation. All rights reserved. +/* Copyright (c) 2012-2014, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -10,8 +10,8 @@ * GNU General Public License for more details. */ -#ifndef _MSM_IPC_ROUTER_H -#define _MSM_IPC_ROUTER_H +#ifndef _IPC_ROUTER_H +#define _IPC_ROUTER_H #include #include @@ -129,7 +129,7 @@ struct msm_ipc_port { void *priv; }; -#ifdef CONFIG_MSM_IPC_ROUTER +#ifdef CONFIG_IPC_ROUTER /** * msm_ipc_router_create_port() - Create a IPC Router port/endpoint * @notify: Callback function to notify any event on the port. diff --git a/arch/arm/mach-msm/ipc_router.h b/include/linux/ipc_router_xprt.h similarity index 60% rename from arch/arm/mach-msm/ipc_router.h rename to include/linux/ipc_router_xprt.h index 801a908b46ff..b957f5cea806 100644 --- a/arch/arm/mach-msm/ipc_router.h +++ b/include/linux/ipc_router_xprt.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2011-2013, The Linux Foundation. All rights reserved. +/* Copyright (c) 2011-2014, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -10,66 +10,23 @@ * GNU General Public License for more details. */ -#ifndef _ARCH_ARM_MACH_MSM_IPC_ROUTER_H -#define _ARCH_ARM_MACH_MSM_IPC_ROUTER_H +#ifndef _IPC_ROUTER_XPRT_H +#define _IPC_ROUTER_XPRT_H #include -#include #include #include #include #include #include - -#include - -#include - -/* definitions for the R2R wire protcol */ -#define IPC_ROUTER_V1 1 -/* - * Ambiguous definition but will enable multiplexing IPC_ROUTER_V2 packets - * with an existing alternate transport in user-space, if needed. - */ -#define IPC_ROUTER_V2 3 - -#define IPC_ROUTER_ADDRESS 0x0000FFFF - -#define IPC_ROUTER_NID_LOCAL 1 -#define MAX_IPC_PKT_SIZE 66000 - -#define IPC_ROUTER_DEFAULT_RX_QUOTA 5 +#include #define IPC_ROUTER_XPRT_EVENT_DATA 1 #define IPC_ROUTER_XPRT_EVENT_OPEN 2 #define IPC_ROUTER_XPRT_EVENT_CLOSE 3 -#define IPC_ROUTER_INFINITY -1 -#define DEFAULT_RCV_TIMEO 0 - -#define ALIGN_SIZE(x) ((4 - ((x) & 3)) & 3) - -#define ALL_SERVICE 0xFFFFFFFF -#define ALL_INSTANCE 0xFFFFFFFF - -#define CONTROL_FLAG_CONFIRM_RX 0x1 -#define CONTROL_FLAG_OPT_HDR 0x2 - #define FRAG_PKT_WRITE_ENABLE 0x1 -enum { - CLIENT_PORT, - SERVER_PORT, - CONTROL_PORT, - IRSC_PORT, -}; - -enum { - NULL_MODE, - SINGLE_LINK_MODE, - MULTI_LINK_MODE, -}; - /** * rr_header_v1 - IPC Router header version 1 * @version: Version information. @@ -135,12 +92,6 @@ struct rr_packet { uint32_t length; }; -struct msm_ipc_sock { - struct sock sk; - struct msm_ipc_port *port; - void *default_pil; -}; - /** * msm_ipc_router_xprt - Structure to hold XPRT specific information * @name: Name of the XPRT. @@ -181,49 +132,6 @@ void msm_ipc_router_xprt_notify(struct msm_ipc_router_xprt *xprt, struct rr_packet *clone_pkt(struct rr_packet *pkt); void release_pkt(struct rr_packet *pkt); -/** - * msm_ipc_router_create_raw_port() - Create an IPC Router port - * @endpoint: User-space space socket information to be cached. - * @notify: Function to notify incoming events on the port. - * @event: Event ID to be handled. - * @oob_data: Any out-of-band data associated with the event. - * @oob_data_len: Size of the out-of-band data, if valid. - * @priv: Private data registered during the port creation. - * @priv: Private Data to be passed during the event notification. - * - * @return: Valid pointer to port on success, NULL on failure. - * - * This function is used to create an IPC Router port. The port is used for - * communication locally or outside the subsystem. - */ -struct msm_ipc_port *msm_ipc_router_create_raw_port(void *endpoint, - void (*notify)(unsigned event, void *oob_data, - size_t oob_data_len, void *priv), - void *priv); -int msm_ipc_router_send_to(struct msm_ipc_port *src, - struct sk_buff_head *data, - struct msm_ipc_addr *dest); -int msm_ipc_router_read(struct msm_ipc_port *port_ptr, - struct rr_packet **pkt, - size_t buf_len); - -int msm_ipc_router_recv_from(struct msm_ipc_port *port_ptr, - struct rr_packet **pkt, - struct msm_ipc_addr *src_addr, - long timeout); -int msm_ipc_router_register_server(struct msm_ipc_port *server_port, - struct msm_ipc_addr *name); -int msm_ipc_router_unregister_server(struct msm_ipc_port *server_port); - -int msm_ipc_router_init_sockets(void); -void msm_ipc_router_exit_sockets(void); - -void msm_ipc_sync_sec_rule(uint32_t service, uint32_t instance, void *rule); - -void msm_ipc_sync_default_sec_rule(void *rule); - -int msm_ipc_router_rx_data_wait(struct msm_ipc_port *port_ptr, long timeout); - #if defined CONFIG_MSM_IPC_ROUTER_SMD_XPRT extern void *msm_ipc_load_default_node(void); @@ -235,5 +143,4 @@ static inline void *msm_ipc_load_default_node(void) static inline void msm_ipc_unload_default_node(void *pil) { } #endif -void msm_ipc_router_free_skb(struct sk_buff_head *skb_head); #endif diff --git a/net/Kconfig b/net/Kconfig index d005cff592cc..9278d72b955f 100644 --- a/net/Kconfig +++ b/net/Kconfig @@ -351,6 +351,7 @@ source "net/9p/Kconfig" source "net/caif/Kconfig" source "net/ceph/Kconfig" source "net/nfc/Kconfig" +source "net/ipc_router/Kconfig" endif # if NET diff --git a/net/Makefile b/net/Makefile index 9934ae06dcda..7878913abba9 100644 --- a/net/Makefile +++ b/net/Makefile @@ -72,3 +72,4 @@ obj-$(CONFIG_OPENVSWITCH) += openvswitch/ obj-$(CONFIG_VSOCKETS) += vmw_vsock/ obj-$(CONFIG_NET_ACTIVITY_STATS) += activity_stats.o obj-$(CONFIG_RMNET_DATA) += rmnet_data/ +obj-$(CONFIG_IPC_ROUTER) += ipc_router/ diff --git a/net/ipc_router/Kconfig b/net/ipc_router/Kconfig new file mode 100644 index 000000000000..30cd45a70208 --- /dev/null +++ b/net/ipc_router/Kconfig @@ -0,0 +1,25 @@ +# +# IPC_ROUTER Configuration +# + +menuconfig IPC_ROUTER + bool "IPC Router support" + help + IPC Router provides a connectionless message routing service + between multiple modules within a System-on-Chip(SoC). The + communicating entities can run either in the same processor or + in a different processor within the SoC. The IPC Router has been + designed to route messages of any types and support a broader + network of processors. + + If in doubt, say N. + +config IPC_ROUTER_SECURITY + depends on IPC_ROUTER + bool "IPC Router Security support" + help + This feature of IPC Router will enforce security rules + configured by a security script from the user-space. IPC Router + once configured with the security rules will ensure that the + sender of the message to a service belongs to the relevant + Linux group as configured by the security script. diff --git a/net/ipc_router/Makefile b/net/ipc_router/Makefile new file mode 100644 index 000000000000..501688e42e3d --- /dev/null +++ b/net/ipc_router/Makefile @@ -0,0 +1,7 @@ +# +# Makefile for the Linux IPC_ROUTER +# + +obj-$(CONFIG_IPC_ROUTER) := ipc_router_core.o +obj-$(CONFIG_IPC_ROUTER) += ipc_router_socket.o +obj-$(CONFIG_IPC_ROUTER_SECURITY) += ipc_router_security.o diff --git a/arch/arm/mach-msm/ipc_router.c b/net/ipc_router/ipc_router_core.c similarity index 99% rename from arch/arm/mach-msm/ipc_router.c rename to net/ipc_router/ipc_router_core.c index 1bf6289b3592..f3b889419ee3 100644 --- a/arch/arm/mach-msm/ipc_router.c +++ b/net/ipc_router/ipc_router_core.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2011-2013, The Linux Foundation. All rights reserved. +/* Copyright (c) 2011-2014, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -29,16 +29,17 @@ #include #include #include +#include +#include +#include -#include #include #include #include -#include -#include "ipc_router.h" -#include "msm_ipc_router_security.h" +#include "ipc_router_private.h" +#include "ipc_router_security.h" enum { SMEM_LOG = 1U << 0, @@ -106,8 +107,7 @@ static DECLARE_RWSEM(control_ports_lock_lha5); static struct list_head local_ports[LP_HASH_SIZE]; static DECLARE_RWSEM(local_ports_lock_lha2); -/* - * Server info is organized as a hash table. The server's service ID is +/* Server info is organized as a hash table. The server's service ID is * used to index into the hash table. The instance ID of most of the servers * are 1 or 2. The service IDs are well distributed compared to the instance * IDs and hence choosing service ID to index into this hash table optimizes @@ -967,9 +967,8 @@ static struct msm_ipc_port *msm_ipc_router_lookup_local_port(uint32_t port_id) struct msm_ipc_port *port_ptr; list_for_each_entry(port_ptr, &local_ports[key], list) { - if (port_ptr->this_port.port_id == port_id) { + if (port_ptr->this_port.port_id == port_id) return port_ptr; - } } return NULL; } @@ -1780,8 +1779,7 @@ void msm_ipc_sync_sec_rule(uint32_t service, uint32_t instance, void *rule) instance != ALL_INSTANCE) continue; - /* - * If the rule applies to all instances and if the specific + /* If the rule applies to all instances and if the specific * instance of a service has a rule synchronized already, * do not apply the rule for that specific instance. */ @@ -1868,8 +1866,7 @@ static int process_hello_msg(struct msm_ipc_router_xprt_info *xprt_info, } xprt_info->initialized = 1; - /* - * Send list of servers from the local node and from nodes + /* Send list of servers from the local node and from nodes * outside the mesh network in which this XPRT is part of. */ down_read(&server_list_lock_lha2); @@ -1962,8 +1959,7 @@ static int process_new_server_msg(struct msm_ipc_router_xprt_info *xprt_info, } up_write(&routing_table_lock_lha3); - /* - * If the service does not exist already in the database, create and + /* If the service does not exist already in the database, create and * store the service info. Create a remote port structure in which * the service is hosted and cache the security rule for the service * in that remote port structure. @@ -2000,8 +1996,7 @@ static int process_new_server_msg(struct msm_ipc_router_xprt_info *xprt_info, } up_write(&server_list_lock_lha2); - /* - * Relay the new server message to other subsystems that do not belong + /* Relay the new server message to other subsystems that do not belong * to the cluster from which this message is received. Notify the * local clients waiting for this service. */ @@ -2442,9 +2437,8 @@ static int msm_ipc_router_write_pkt(struct msm_ipc_port *src, } update_comm_mode_info(&src->mode_info, xprt_info); - RAW_HDR("[w rr_h] " - "ver=%i,type=%s,src_nid=%08x,src_port_id=%08x," - "control_flag=%i,size=%3i,dst_pid=%08x,dst_cid=%08x\n", + RAW_HDR( + "[w rr_h] ver=%i,type=%s,src_nid=%08x,src_port_id=%08x,control_flag=%i,size=%3i,dst_pid=%08x,dst_cid=%08x\n", hdr->version, type_to_str(hdr->type), hdr->src_node_id, hdr->src_port_id, hdr->control_flag, hdr->size, @@ -2836,8 +2830,7 @@ int msm_ipc_router_close_port(struct msm_ipc_port *port_ptr) broadcast_ctl_msg_locally(&msg); } - /* - * Server port could have been a client port earlier. + /* Server port could have been a client port earlier. * Send REMOVE_CLIENT message in either case. */ RR("x REMOVE_CLIENT id=%d:%08x\n", @@ -3047,10 +3040,12 @@ static int dump_servers(char *buf, int max) list_for_each_entry(server_port, &server->server_port_list, list) { - i += scnprintf(buf + i, max - i, "Service: " - "0x%08x\n", server->name.service); - i += scnprintf(buf + i, max - i, "Instance: " - "0x%08x\n", server->name.instance); + i += scnprintf(buf + i, max - i, + "Service: 0x%08x\n", + server->name.service); + i += scnprintf(buf + i, max - i, + "Instance: 0x%08x\n", + server->name.instance); i += scnprintf(buf + i, max - i, "Node_id: 0x%08x\n", server_port->server_addr.node_id); diff --git a/net/ipc_router/ipc_router_private.h b/net/ipc_router/ipc_router_private.h new file mode 100644 index 000000000000..ddc20be2b1db --- /dev/null +++ b/net/ipc_router/ipc_router_private.h @@ -0,0 +1,117 @@ +/* Copyright (c) 2011-2014, The Linux Foundation. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 and + * only version 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#ifndef _IPC_ROUTER_PRIVATE_H +#define _IPC_ROUTER_PRIVATE_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +/* definitions for the R2R wire protcol */ +#define IPC_ROUTER_V1 1 +/* + * Ambiguous definition but will enable multiplexing IPC_ROUTER_V2 packets + * with an existing alternate transport in user-space, if needed. + */ +#define IPC_ROUTER_V2 3 + +#define IPC_ROUTER_ADDRESS 0x0000FFFF + +#define IPC_ROUTER_NID_LOCAL 1 +#define MAX_IPC_PKT_SIZE 66000 + +#define IPC_ROUTER_DEFAULT_RX_QUOTA 5 + +#define IPC_ROUTER_INFINITY -1 +#define DEFAULT_RCV_TIMEO 0 + +#define ALIGN_SIZE(x) ((4 - ((x) & 3)) & 3) + +#define ALL_SERVICE 0xFFFFFFFF +#define ALL_INSTANCE 0xFFFFFFFF + +#define CONTROL_FLAG_CONFIRM_RX 0x1 +#define CONTROL_FLAG_OPT_HDR 0x2 + +enum { + CLIENT_PORT, + SERVER_PORT, + CONTROL_PORT, + IRSC_PORT, +}; + +enum { + NULL_MODE, + SINGLE_LINK_MODE, + MULTI_LINK_MODE, +}; + +struct msm_ipc_sock { + struct sock sk; + struct msm_ipc_port *port; + void *default_pil; +}; + +/** + * msm_ipc_router_create_raw_port() - Create an IPC Router port + * @endpoint: User-space space socket information to be cached. + * @notify: Function to notify incoming events on the port. + * @event: Event ID to be handled. + * @oob_data: Any out-of-band data associated with the event. + * @oob_data_len: Size of the out-of-band data, if valid. + * @priv: Private data registered during the port creation. + * @priv: Private Data to be passed during the event notification. + * + * @return: Valid pointer to port on success, NULL on failure. + * + * This function is used to create an IPC Router port. The port is used for + * communication locally or outside the subsystem. + */ +struct msm_ipc_port *msm_ipc_router_create_raw_port(void *endpoint, + void (*notify)(unsigned event, void *oob_data, + size_t oob_data_len, void *priv), + void *priv); +int msm_ipc_router_send_to(struct msm_ipc_port *src, + struct sk_buff_head *data, + struct msm_ipc_addr *dest); +int msm_ipc_router_read(struct msm_ipc_port *port_ptr, + struct rr_packet **pkt, + size_t buf_len); + +int msm_ipc_router_recv_from(struct msm_ipc_port *port_ptr, + struct rr_packet **pkt, + struct msm_ipc_addr *src_addr, + long timeout); +int msm_ipc_router_register_server(struct msm_ipc_port *server_port, + struct msm_ipc_addr *name); +int msm_ipc_router_unregister_server(struct msm_ipc_port *server_port); + +int msm_ipc_router_init_sockets(void); +void msm_ipc_router_exit_sockets(void); + +void msm_ipc_sync_sec_rule(uint32_t service, uint32_t instance, void *rule); + +void msm_ipc_sync_default_sec_rule(void *rule); + +int msm_ipc_router_rx_data_wait(struct msm_ipc_port *port_ptr, long timeout); + +void msm_ipc_router_free_skb(struct sk_buff_head *skb_head); +#endif diff --git a/arch/arm/mach-msm/msm_ipc_router_security.c b/net/ipc_router/ipc_router_security.c similarity index 98% rename from arch/arm/mach-msm/msm_ipc_router_security.c rename to net/ipc_router/ipc_router_security.c index 5897e1fc6682..9deab65f9252 100644 --- a/arch/arm/mach-msm/msm_ipc_router_security.c +++ b/net/ipc_router/ipc_router_security.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2012-2013, The Linux Foundation. All rights reserved. +/* Copyright (c) 2012-2014, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -23,12 +23,11 @@ #include #include #include - -#include +#include #include -#include "ipc_router.h" -#include "msm_ipc_router_security.h" +#include "ipc_router_private.h" +#include "ipc_router_security.h" #define IRSC_COMPLETION_TIMEOUT_MS 30000 #define SEC_RULES_HASH_SZ 32 diff --git a/arch/arm/mach-msm/msm_ipc_router_security.h b/net/ipc_router/ipc_router_security.h similarity index 94% rename from arch/arm/mach-msm/msm_ipc_router_security.h rename to net/ipc_router/ipc_router_security.h index 9cc61e959b61..002ae84d0b95 100644 --- a/arch/arm/mach-msm/msm_ipc_router_security.h +++ b/net/ipc_router/ipc_router_security.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2012-2013, The Linux Foundation. All rights reserved. +/* Copyright (c) 2012-2014, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -10,14 +10,14 @@ * GNU General Public License for more details. */ -#ifndef _MSM_IPC_ROUTER_SECURITY_H -#define _MSM_IPC_ROUTER_SECURITY_H +#ifndef _IPC_ROUTER_SECURITY_H +#define _IPC_ROUTER_SECURITY_H #include #include #include -#ifdef CONFIG_MSM_IPC_ROUTER_SECURITY +#ifdef CONFIG_IPC_ROUTER_SECURITY #include /** diff --git a/arch/arm/mach-msm/ipc_socket.c b/net/ipc_router/ipc_router_socket.c similarity index 98% rename from arch/arm/mach-msm/ipc_socket.c rename to net/ipc_router/ipc_router_socket.c index fddfa50ae73d..979b48328509 100644 --- a/arch/arm/mach-msm/ipc_socket.c +++ b/net/ipc_router/ipc_router_socket.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2011-2013, The Linux Foundation. All rights reserved. +/* Copyright (c) 2011-2014, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -26,16 +26,14 @@ #include #include #include - -#include -#include +#include +#include +#include #include -#include - -#include "ipc_router.h" -#include "msm_ipc_router_security.h" +#include "ipc_router_private.h" +#include "ipc_router_security.h" #define msm_ipc_sk(sk) ((struct msm_ipc_sock *)(sk)) #define msm_ipc_sk_port(sk) ((struct msm_ipc_port *)(msm_ipc_sk(sk)->port)) @@ -84,8 +82,7 @@ static void msm_ipc_router_ipc_log(uint8_t tran, { struct qmi_header *hdr = (struct qmi_header *)ipc_buf->data; - /* - * IPC Logging format is as below:- + /* IPC Logging format is as below:- * (Name of the User Space Process): * (PID of the user space process) : * (TID of the user space thread) :