瀏覽代碼

msm-mmrm: Adding support for noop request/response

Adding support for noop request/response to evaluate the msg queue roundtrip.

Change-Id: I2628507ed7cb414bf620ec2e0d49edb56ad5d644
Mark Bao 3 年之前
父節點
當前提交
56d6f27d53
共有 2 個文件被更改,包括 46 次插入0 次删除
  1. 25 0
      vm/be/src/mmrm_vm_be_dispatch.c
  2. 21 0
      vm/common/inc/mmrm_vm_interface.h

+ 25 - 0
vm/be/src/mmrm_vm_be_dispatch.c

@@ -205,6 +205,28 @@ static int mmrm_vm_be_client_deregister(struct mmrm_vm_driver_data *mmrm_vm,
 	return rc;
 }
 
+/**
+ * mmrm_vm_be_client_noop - call none mmrm API to calculate msgq roundtrip time
+ * mmrm_vm: driver private data
+ * req: request parameters
+ */
+static int mmrm_vm_be_client_noop(struct mmrm_vm_driver_data *mmrm_vm,
+		struct mmrm_vm_api_request_msg *req)
+{
+	int rc = 0;
+	struct mmrm_vm_response_msg_pkt pkt;
+
+	pkt.msg.hd.cmd_id = MMRM_VM_RESPONSE_NOOP;
+	pkt.msg.hd.seq_no = req->hd.seq_no;
+
+	pkt.hdr.size = sizeof(pkt.msg.hd) + sizeof(pkt.msg.data.lptest);
+	pkt.msg.data.dereg.ret_code = rc;
+
+	rc = mmrm_vm_be_send_response(mmrm_vm, &pkt);
+	if (rc != 0)
+		d_mpr_e("%s: rc:%d\n", __func__, rc);
+	return rc;
+}
 
 /**
  * mmrm_vm_be_recv - be dispatch mmrm request to mmrm API call
@@ -237,6 +259,9 @@ int mmrm_vm_be_recv(struct mmrm_vm_driver_data *mmrm_vm, void *data, size_t size
 	case MMRM_VM_REQUEST_DEREGISTER:
 		rc = mmrm_vm_be_client_deregister(mmrm_vm, cmd);
 		break;
+	case MMRM_VM_REQUEST_NOOP:
+		rc = mmrm_vm_be_client_noop(mmrm_vm, cmd);
+		break;
 	default:
 		pr_err("%s: cmd_id:%d unknown!!!\n", __func__, cmd->hd.cmd_id);
 		break;

+ 21 - 0
vm/common/inc/mmrm_vm_interface.h

@@ -56,12 +56,14 @@ enum mmrm_vm_api_msg_id {
 	MMRM_VM_REQUEST_SETVALUE_INRANGE,
 	MMRM_VM_REQUEST_GETVALUE,
 	MMRM_VM_REQUEST_DEREGISTER,
+	MMRM_VM_REQUEST_NOOP, // this is for debug purpose,calculating msgq roundtrip time
 
 	MMRM_VM_RESPONSE_REGISTER = MMRM_VM_REQUEST_REGISTER | 0x800,
 	MMRM_VM_RESPONSE_SETVALUE,
 	MMRM_VM_RESPONSE_SETVALUE_INRANGE,
 	MMRM_VM_RESPONSE_GETVALUE,
 	MMRM_VM_RESPONSE_DEREGISTER,
+	MMRM_VM_RESPONSE_NOOP, // this is for debug purpose,calculating msgq roundtrip time
 	MMRM_VM_RESPONSE_INVALID_PKT,
 };
 
@@ -95,6 +97,14 @@ struct mmrm_vm_deregister_request {
 	u32 client_id;
 };
 
+/**
+ * struct mmrm_vm_noop_request -- noop request parameters
+ * @client: 32 bits value transfered
+ */
+struct mmrm_vm_noop_request {
+	u32 client_id;
+};
+
 /**
  * struct setvalue_request -- mmrm setvalue parameters
  * @client: client type, definition see msm_mmrm.h
@@ -141,6 +151,7 @@ struct mmrm_vm_api_request_msg {
 		struct mmrm_vm_setvalue_request setval;
 		struct mmrm_vm_setvalue_inrange_request setval_range;
 		struct mmrm_vm_getvalue_request getval;
+		struct mmrm_vm_noop_request lptest;
 	} data;
 };
 
@@ -160,6 +171,14 @@ struct mmrm_vm_deregister_response {
 	int ret_code;
 };
 
+/**
+ * struct mmrm_vm_noop_response -- noop request's response message
+ * @ret_code: return inetger
+ */
+struct mmrm_vm_noop_response {
+	int ret_code;
+};
+
 /**
  * struct mmrm_vm_setvalue_response -- mmrm_client_set_value API response message
  * @val: value that mmrm_client_set_value return
@@ -197,6 +216,7 @@ struct mmrm_vm_api_response_msg {
 		struct mmrm_vm_setvalue_response setval;
 		struct mmrm_vm_setvalue_inrange_response setval_range;
 		struct mmrm_vm_getvalue_response getval;
+		struct mmrm_vm_noop_response lptest;
 	} data;
 };
 
@@ -208,6 +228,7 @@ struct mmrm_vm_api_response_msg {
 struct mmrm_vm_request_msg_pkt {
 	struct mmrm_vm_msg_hdr hdr;
 	struct mmrm_vm_api_request_msg msg;
+	u64 start_time_ns;
 };
 
 /**