From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail04.ics.ntt-tx.co.jp (mail05.ics.ntt-tx.co.jp [210.232.35.69]) by dpdk.org (Postfix) with ESMTP id 1F17B7CEA for ; Thu, 28 Dec 2017 05:56:16 +0100 (CET) Received: from gwchk03.silk.ntt-tx.co.jp (gwchk03.silk.ntt-tx.co.jp [10.107.0.111]) by mail04.ics.ntt-tx.co.jp (unknown) with ESMTP id vBS4uFxT025349 for unknown; Thu, 28 Dec 2017 13:56:15 +0900 Received: (from root@localhost) by gwchk03.silk.ntt-tx.co.jp (unknown) id vBS4u7Gg027332 for unknown; Thu, 28 Dec 2017 13:56:07 +0900 Received: from gwchk.silk.ntt-tx.co.jp [10.107.0.110] by gwchk03.silk.ntt-tx.co.jp with ESMTP id PAA27322; Thu, 28 Dec 2017 13:56:07 +0900 Received: from imss03.silk.ntt-tx.co.jp (localhost [127.0.0.1]) by imss03.silk.ntt-tx.co.jp (unknown) with ESMTP id vBS4u6PD011050 for unknown; Thu, 28 Dec 2017 13:56:06 +0900 Received: from mgate01.silk.ntt-tx.co.jp (smtp02.silk.ntt-tx.co.jp [10.107.0.37]) by imss03.silk.ntt-tx.co.jp (unknown) with ESMTP id vBS4u6Mm011029 for unknown; Thu, 28 Dec 2017 13:56:06 +0900 Message-Id: <201712280456.vBS4u6Mm011029@imss03.silk.ntt-tx.co.jp> Received: from localhost by mgate01.silk.ntt-tx.co.jp (unknown) id vBS4u4b7025622 ; Thu, 28 Dec 2017 13:56:06 +0900 From: x-fn-spp@sl.ntt-tx.co.jp To: spp@dpdk.org Date: Thu, 28 Dec 2017 13:55:40 +0900 X-Mailer: git-send-email 1.9.1 In-Reply-To: <4aae78ff-3b6c-cdfe-a8b7-24ec08b73935@lab.ntt.co.jp> References: <4aae78ff-3b6c-cdfe-a8b7-24ec08b73935@lab.ntt.co.jp> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-TM-AS-MML: No Subject: [spp] [PATCH 33/57] spp_vf: update sending error status X-BeenThere: spp@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Soft Patch Panel List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 Dec 2017 04:56:18 -0000 From: Hiroyuki Nakamura Update status code to tell if sending error is temporary or fatal. Signed-off-by: Daiki Yamashita Signed-off-by: Yasufum Ogawa --- src/vf/command_conn.c | 10 +++++----- src/vf/command_conn.h | 23 +++++++++++++++-------- src/vf/command_proc.c | 14 +++++++++----- src/vf/command_proc.h | 9 ++++++--- src/vf/spp_vf.c | 11 ++++++++++- 5 files changed, 45 insertions(+), 22 deletions(-) diff --git a/src/vf/command_conn.c b/src/vf/command_conn.c index ae60c4b..f3aa76f 100644 --- a/src/vf/command_conn.c +++ b/src/vf/command_conn.c @@ -49,7 +49,7 @@ spp_connect_to_controller(int *sock) if (unlikely(*sock < 0)) { RTE_LOG(ERR, SPP_COMMAND_PROC, "Cannot create tcp socket. errno=%d\n", errno); - return -1; + return SPP_CONNERR_TEMPORARY; } memset(&controller_addr, 0, sizeof(controller_addr)); @@ -66,7 +66,7 @@ spp_connect_to_controller(int *sock) "Cannot connect to controller. errno=%d\n", errno); close(*sock); *sock = -1; - return -1; + return SPP_CONNERR_TEMPORARY; } RTE_LOG(INFO, SPP_COMMAND_PROC, "Connected\n"); @@ -105,7 +105,7 @@ spp_receive_message(int *sock, char **strbuf) RTE_LOG(INFO, SPP_COMMAND_PROC, "Assume Server closed connection.\n"); close(*sock); *sock = -1; - return -1; + return SPP_CONNERR_TEMPORARY; } RTE_LOG(DEBUG, SPP_COMMAND_PROC, "Receive message. count=%d\n", ret); @@ -115,7 +115,7 @@ spp_receive_message(int *sock, char **strbuf) if (unlikely(new_strbuf == NULL)) { RTE_LOG(ERR, SPP_COMMAND_PROC, "Cannot allocate memory for receive data.\n"); - rte_exit(-1, "Cannot allocate memory for receive data.\n"); + return SPP_CONNERR_FATAL; } *strbuf = new_strbuf; @@ -134,7 +134,7 @@ spp_send_message(int *sock, const char* message, size_t message_len) RTE_LOG(ERR, SPP_COMMAND_PROC, "Send failure. ret=%d\n", ret); close(*sock); *sock = -1; - return -1; + return SPP_CONNERR_TEMPORARY; } return 0; diff --git a/src/vf/command_conn.h b/src/vf/command_conn.h index 0136d75..932c647 100644 --- a/src/vf/command_conn.h +++ b/src/vf/command_conn.h @@ -1,6 +1,11 @@ #ifndef _COMMAND_CONN_H_ #define _COMMAND_CONN_H_ +/** result code - temporary error. please retry */ +#define SPP_CONNERR_TEMPORARY -1 +/** result code - fatal error occurred. should teminate process. */ +#define SPP_CONNERR_FATAL -2 + /** * intialize command connection. * @@ -10,8 +15,8 @@ * @param controller_port * controller listen port number. * - * @ret_val 0 succeeded. - * @ret_val -1 failed. + * @retval 0 succeeded. + * @retval SPP_CONNERR_TEMPORARY temporary error. please retry. */ int spp_command_conn_init(const char *controller_ip, int controller_port); @@ -23,8 +28,8 @@ int spp_command_conn_init(const char *controller_ip, int controller_port); * @param sock * socket that connect to controller. * - * @ret_val 0 succeeded. - * @ret_val -1 failed. + * @retval 0 succeeded. + * @retval -1 failed. */ int spp_connect_to_controller(int *sock); @@ -36,8 +41,10 @@ int spp_connect_to_controller(int *sock); * @param sock * socket that read data. * - * @ret_val 0 succeeded. - * @ret_val -1 failed. + * @retval 0 < succeeded. number of bytes received. + * @retval 0 no receive message. + * @retval SPP_CONNERR_TEMPORARY temporary error. please reconnect. + * @retval SPP_CONNERR_FATAL fatal error occurred. should teminate process. */ int spp_receive_message(int *sock, char **msgbuf); @@ -55,8 +62,8 @@ int spp_receive_message(int *sock, char **msgbuf); * @param message_len * send data length. * - * @ret_val 0 succeeded. - * @ret_val -1 failed. + * @retval 0 succeeded. + * @retval SPP_CONNERR_TEMPORARY temporary error. please reconnect. */ int spp_send_message(int *sock, const char* message, size_t message_len); diff --git a/src/vf/command_proc.c b/src/vf/command_proc.c index fafb007..c921b51 100644 --- a/src/vf/command_proc.c +++ b/src/vf/command_proc.c @@ -390,7 +390,7 @@ spp_command_proc_init(const char *controller_ip, int controller_port) } /* process command from controller. */ -void +int spp_command_proc_do(void) { int ret = -1; @@ -409,17 +409,19 @@ spp_command_proc_do(void) if (unlikely(msgbuf == NULL)) { RTE_LOG(ERR, SPP_COMMAND_PROC, "Cannot allocate memory for receive data(init).\n"); - rte_exit(-1, "Cannot allocate memory for receive data(init).\n"); + return -1; } } ret = spp_connect_to_controller(&sock); if (unlikely(ret != 0)) - return; + return 0; msg_ret = spp_receive_message(&sock, &msgbuf); - if (likely(msg_ret <= 0)) { - return; + if (unlikely(msg_ret == 0 || msg_ret == SPP_CONNERR_TEMPORARY)) { + return 0; + } else if (unlikely(msg_ret < 0)) { + return -1; } for (i = 0; i < msg_ret; ++i) { @@ -445,4 +447,6 @@ spp_command_proc_do(void) } msg_len = msg_len + msg_ret; + + return 0; } diff --git a/src/vf/command_proc.h b/src/vf/command_proc.h index 8774070..37e55ad 100644 --- a/src/vf/command_proc.h +++ b/src/vf/command_proc.h @@ -10,16 +10,19 @@ * @param controller_port * controller listen port number. * - * @ret_val 0 succeeded. - * @ret_val -1 failed. + * @retval 0 succeeded. + * @retval -1 failed. */ int spp_command_proc_init(const char *controller_ip, int controller_port); /** * process command from controller. + * + * @retval 0 succeeded. + * @retval -1 failed. */ -void +int spp_command_proc_do(void); #endif /* _COMMAND_PROC_H_ */ diff --git a/src/vf/spp_vf.c b/src/vf/spp_vf.c index 7bb1ac0..bd97818 100644 --- a/src/vf/spp_vf.c +++ b/src/vf/spp_vf.c @@ -954,13 +954,17 @@ ut_main(int argc, char *argv[]) RTE_LOG(INFO, APP, "[Press Ctrl-C to quit ...]\n"); /* loop */ + int ret_do = 0; #ifndef USE_UT_SPP_VF while(likely(g_core_info[main_lcore_id].status != SPP_CORE_STOP_REQUEST)) { #else { #endif /* コマンド受付 */ - spp_command_proc_do(); + ret_do = spp_command_proc_do(); + if (unlikely(ret_do != 0)) { + break; + } /* CPUを占有しない様に1秒スリープ */ sleep(1); @@ -970,6 +974,11 @@ ut_main(int argc, char *argv[]) #endif /* SPP_RINGLATENCYSTATS_ENABLE */ } + /* エラー終了 */ + if (unlikely(ret_do != 0)) { + break; + } + /* 正常終了 */ ret = 0; break; -- 1.9.1