Loading include/linux/ipc_router.h +35 −0 Original line number Diff line number Diff line Loading @@ -75,6 +75,11 @@ struct comm_mode_info { void *xprt_info; }; enum ipc_rtr_af_event_type { IPCRTR_AF_INIT = 1, IPCRTR_AF_DEINIT, }; /** * msm_ipc_port - Definition of IPC Router port * @list: List(local/control ports) in which this port is present. Loading Loading @@ -242,6 +247,26 @@ int msm_ipc_router_register_server(struct msm_ipc_port *server_port, */ int msm_ipc_router_unregister_server(struct msm_ipc_port *server_port); /** * register_ipcrtr_af_init_notifier() - Register for ipc router socket * address family initialization callback * @nb: Notifier block which will be notified once address family is * initialized. * * Return: 0 on success, standard error code otherwise. */ int register_ipcrtr_af_init_notifier(struct notifier_block *nb); /** * unregister_ipcrtr_af_init_notifier() - Unregister for ipc router socket * address family initialization callback * @nb: Notifier block which will be notified once address family is * initialized. * * Return: 0 on success, standard error code otherwise. */ int unregister_ipcrtr_af_init_notifier(struct notifier_block *nb); #else struct msm_ipc_port *msm_ipc_router_create_port( Loading Loading @@ -304,6 +329,16 @@ static inline int msm_ipc_router_unregister_server( return -ENODEV; } int register_ipcrtr_af_notifier(struct notifier_block *nb) { return -ENODEV; } int register_ipcrtr_af_notifier(struct notifier_block *nb) { return -ENODEV; } #endif #endif net/ipc_router/ipc_router_core.c +6 −5 Original line number Diff line number Diff line Loading @@ -4125,10 +4125,6 @@ static int msm_ipc_router_init(void) rt_entry = create_routing_table_entry(IPC_ROUTER_NID_LOCAL, NULL); kref_put(&rt_entry->ref, ipc_router_release_rtentry); ret = msm_ipc_router_init_sockets(); if (ret < 0) IPC_RTR_ERR("%s: Init sockets failed\n", __func__); ret = msm_ipc_router_security_init(); if (ret < 0) IPC_RTR_ERR("%s: Security Init failed\n", __func__); Loading @@ -4139,13 +4135,18 @@ static int msm_ipc_router_init(void) mutex_unlock(&ipc_router_init_lock); return -ENOMEM; } is_ipc_router_inited = true; ret = platform_driver_register(&ipc_router_driver); if (ret) IPC_RTR_ERR( "%s: ipc_router_driver register failed %d\n", __func__, ret); ret = msm_ipc_router_init_sockets(); if (ret < 0) IPC_RTR_ERR("%s: Init sockets failed\n", __func__); is_ipc_router_inited = true; ipc_router_log_ctx_init(); mutex_unlock(&ipc_router_init_lock); return ret; Loading net/ipc_router/ipc_router_socket.c +53 −1 Original line number Diff line number Diff line Loading @@ -45,6 +45,8 @@ static int sockets_enabled; static struct proto msm_ipc_proto; static const struct proto_ops msm_ipc_proto_ops; static RAW_NOTIFIER_HEAD(ipcrtr_af_init_chain); static DEFINE_MUTEX(ipcrtr_af_init_lock); static struct sk_buff_head *msm_ipc_router_build_msg(unsigned int num_sect, struct iovec const *msg_sect, Loading Loading @@ -561,6 +563,48 @@ static int msm_ipc_router_close(struct socket *sock) return ret; } /** * register_ipcrtr_af_init_notifier() - Register for ipc router socket * address family initialization callback * @nb: Notifier block which will be notified when address family is * initialized. * * Return: 0 on success, standard error code otherwise. */ int register_ipcrtr_af_init_notifier(struct notifier_block *nb) { int ret; if (!nb) return -EINVAL; mutex_lock(&ipcrtr_af_init_lock); if (sockets_enabled) nb->notifier_call(nb, IPCRTR_AF_INIT, NULL); ret = raw_notifier_chain_register(&ipcrtr_af_init_chain, nb); mutex_unlock(&ipcrtr_af_init_lock); return ret; } EXPORT_SYMBOL(register_ipcrtr_af_init_notifier); /** * unregister_ipcrtr_af_init_notifier() - Unregister for ipc router socket * address family initialization callback * @nb: Notifier block which will be notified once address family is * initialized. * * Return: 0 on success, standard error code otherwise. */ int unregister_ipcrtr_af_init_notifier(struct notifier_block *nb) { int ret; if (!nb) return -EINVAL; ret = raw_notifier_chain_unregister(&ipcrtr_af_init_chain, nb); return ret; } EXPORT_SYMBOL(unregister_ipcrtr_af_init_notifier); static const struct net_proto_family msm_ipc_family_ops = { .owner = THIS_MODULE, .family = AF_MSM_IPC, Loading Loading @@ -620,7 +664,11 @@ int msm_ipc_router_init_sockets(void) goto out_init_sockets; } mutex_lock(&ipcrtr_af_init_lock); sockets_enabled = 1; raw_notifier_call_chain(&ipcrtr_af_init_chain, IPCRTR_AF_INIT, NULL); mutex_unlock(&ipcrtr_af_init_lock); out_init_sockets: return ret; } Loading @@ -630,7 +678,11 @@ void msm_ipc_router_exit_sockets(void) if (!sockets_enabled) return; sockets_enabled = 0; sock_unregister(msm_ipc_family_ops.family); proto_unregister(&msm_ipc_proto); mutex_lock(&ipcrtr_af_init_lock); sockets_enabled = 0; raw_notifier_call_chain(&ipcrtr_af_init_chain, IPCRTR_AF_DEINIT, NULL); mutex_unlock(&ipcrtr_af_init_lock); } Loading
include/linux/ipc_router.h +35 −0 Original line number Diff line number Diff line Loading @@ -75,6 +75,11 @@ struct comm_mode_info { void *xprt_info; }; enum ipc_rtr_af_event_type { IPCRTR_AF_INIT = 1, IPCRTR_AF_DEINIT, }; /** * msm_ipc_port - Definition of IPC Router port * @list: List(local/control ports) in which this port is present. Loading Loading @@ -242,6 +247,26 @@ int msm_ipc_router_register_server(struct msm_ipc_port *server_port, */ int msm_ipc_router_unregister_server(struct msm_ipc_port *server_port); /** * register_ipcrtr_af_init_notifier() - Register for ipc router socket * address family initialization callback * @nb: Notifier block which will be notified once address family is * initialized. * * Return: 0 on success, standard error code otherwise. */ int register_ipcrtr_af_init_notifier(struct notifier_block *nb); /** * unregister_ipcrtr_af_init_notifier() - Unregister for ipc router socket * address family initialization callback * @nb: Notifier block which will be notified once address family is * initialized. * * Return: 0 on success, standard error code otherwise. */ int unregister_ipcrtr_af_init_notifier(struct notifier_block *nb); #else struct msm_ipc_port *msm_ipc_router_create_port( Loading Loading @@ -304,6 +329,16 @@ static inline int msm_ipc_router_unregister_server( return -ENODEV; } int register_ipcrtr_af_notifier(struct notifier_block *nb) { return -ENODEV; } int register_ipcrtr_af_notifier(struct notifier_block *nb) { return -ENODEV; } #endif #endif
net/ipc_router/ipc_router_core.c +6 −5 Original line number Diff line number Diff line Loading @@ -4125,10 +4125,6 @@ static int msm_ipc_router_init(void) rt_entry = create_routing_table_entry(IPC_ROUTER_NID_LOCAL, NULL); kref_put(&rt_entry->ref, ipc_router_release_rtentry); ret = msm_ipc_router_init_sockets(); if (ret < 0) IPC_RTR_ERR("%s: Init sockets failed\n", __func__); ret = msm_ipc_router_security_init(); if (ret < 0) IPC_RTR_ERR("%s: Security Init failed\n", __func__); Loading @@ -4139,13 +4135,18 @@ static int msm_ipc_router_init(void) mutex_unlock(&ipc_router_init_lock); return -ENOMEM; } is_ipc_router_inited = true; ret = platform_driver_register(&ipc_router_driver); if (ret) IPC_RTR_ERR( "%s: ipc_router_driver register failed %d\n", __func__, ret); ret = msm_ipc_router_init_sockets(); if (ret < 0) IPC_RTR_ERR("%s: Init sockets failed\n", __func__); is_ipc_router_inited = true; ipc_router_log_ctx_init(); mutex_unlock(&ipc_router_init_lock); return ret; Loading
net/ipc_router/ipc_router_socket.c +53 −1 Original line number Diff line number Diff line Loading @@ -45,6 +45,8 @@ static int sockets_enabled; static struct proto msm_ipc_proto; static const struct proto_ops msm_ipc_proto_ops; static RAW_NOTIFIER_HEAD(ipcrtr_af_init_chain); static DEFINE_MUTEX(ipcrtr_af_init_lock); static struct sk_buff_head *msm_ipc_router_build_msg(unsigned int num_sect, struct iovec const *msg_sect, Loading Loading @@ -561,6 +563,48 @@ static int msm_ipc_router_close(struct socket *sock) return ret; } /** * register_ipcrtr_af_init_notifier() - Register for ipc router socket * address family initialization callback * @nb: Notifier block which will be notified when address family is * initialized. * * Return: 0 on success, standard error code otherwise. */ int register_ipcrtr_af_init_notifier(struct notifier_block *nb) { int ret; if (!nb) return -EINVAL; mutex_lock(&ipcrtr_af_init_lock); if (sockets_enabled) nb->notifier_call(nb, IPCRTR_AF_INIT, NULL); ret = raw_notifier_chain_register(&ipcrtr_af_init_chain, nb); mutex_unlock(&ipcrtr_af_init_lock); return ret; } EXPORT_SYMBOL(register_ipcrtr_af_init_notifier); /** * unregister_ipcrtr_af_init_notifier() - Unregister for ipc router socket * address family initialization callback * @nb: Notifier block which will be notified once address family is * initialized. * * Return: 0 on success, standard error code otherwise. */ int unregister_ipcrtr_af_init_notifier(struct notifier_block *nb) { int ret; if (!nb) return -EINVAL; ret = raw_notifier_chain_unregister(&ipcrtr_af_init_chain, nb); return ret; } EXPORT_SYMBOL(unregister_ipcrtr_af_init_notifier); static const struct net_proto_family msm_ipc_family_ops = { .owner = THIS_MODULE, .family = AF_MSM_IPC, Loading Loading @@ -620,7 +664,11 @@ int msm_ipc_router_init_sockets(void) goto out_init_sockets; } mutex_lock(&ipcrtr_af_init_lock); sockets_enabled = 1; raw_notifier_call_chain(&ipcrtr_af_init_chain, IPCRTR_AF_INIT, NULL); mutex_unlock(&ipcrtr_af_init_lock); out_init_sockets: return ret; } Loading @@ -630,7 +678,11 @@ void msm_ipc_router_exit_sockets(void) if (!sockets_enabled) return; sockets_enabled = 0; sock_unregister(msm_ipc_family_ops.family); proto_unregister(&msm_ipc_proto); mutex_lock(&ipcrtr_af_init_lock); sockets_enabled = 0; raw_notifier_call_chain(&ipcrtr_af_init_chain, IPCRTR_AF_DEINIT, NULL); mutex_unlock(&ipcrtr_af_init_lock); }