static long rpcrouter_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { struct msm_rpc_endpoint *ept; struct rpcrouter_ioctl_server_args server_args; int rc = 0; uint32_t n; ept = (struct msm_rpc_endpoint *) filp->private_data; switch (cmd) { case RPC_ROUTER_IOCTL_GET_VERSION: n = RPC_ROUTER_VERSION_V1; rc = put_user(n, (unsigned int *) arg); break; case RPC_ROUTER_IOCTL_GET_MTU: n = RPCROUTER_MSGSIZE_MAX - sizeof(uint32_t); rc = put_user(n, (unsigned int *) arg); break; case RPC_ROUTER_IOCTL_REGISTER_SERVER: rc = copy_from_user(&server_args, (void *) arg, sizeof(server_args)); if (rc < 0) break; msm_rpc_register_server(ept, server_args.prog, server_args.vers); break; case RPC_ROUTER_IOCTL_UNREGISTER_SERVER: rc = copy_from_user(&server_args, (void *) arg, sizeof(server_args)); if (rc < 0) break; msm_rpc_unregister_server(ept, server_args.prog, server_args.vers); break; case RPC_ROUTER_IOCTL_CLEAR_NETRESET: msm_rpc_clear_netreset(ept); break; case RPC_ROUTER_IOCTL_GET_CURR_PKT_SIZE: rc = msm_rpc_get_curr_pkt_size(ept); break; default: rc = -EINVAL; break; } return rc; }
static long rpcrouter_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { struct msm_rpc_endpoint *ept; struct rpcrouter_ioctl_server_args server_args; int rc = 0; uint32_t n; ept = (struct msm_rpc_endpoint *) filp->private_data; switch (cmd) { case RPC_ROUTER_IOCTL_GET_VERSION: n = RPC_ROUTER_VERSION_V1; rc = put_user(n, (unsigned int *) arg); break; case RPC_ROUTER_IOCTL_GET_MTU: /* the pacmark word reduces the actual payload * possible per message */ n = RPCROUTER_MSGSIZE_MAX - sizeof(uint32_t); rc = put_user(n, (unsigned int *) arg); break; case RPC_ROUTER_IOCTL_REGISTER_SERVER: rc = copy_from_user(&server_args, (void *) arg, sizeof(server_args)); if (rc < 0) break; msm_rpc_register_server(ept, server_args.prog, server_args.vers); break; case RPC_ROUTER_IOCTL_UNREGISTER_SERVER: rc = copy_from_user(&server_args, (void *) arg, sizeof(server_args)); if (rc < 0) break; msm_rpc_unregister_server(ept, server_args.prog, server_args.vers); break; case RPC_ROUTER_IOCTL_GET_MINOR_VERSION: n = MSM_RPC_GET_MINOR(msm_rpc_get_vers(ept)); rc = put_user(n, (unsigned int *)arg); break; default: rc = -EINVAL; break; } return rc; }