Soft Patch Panel
 help / color / mirror / Atom feed
From: x-fn-spp@sl.ntt-tx.co.jp
To: spp@dpdk.org
Subject: [spp] [PATCH 48/57] spp_vf: refactor for commnets in spp_vf.c
Date: Thu, 28 Dec 2017 13:55:55 +0900	[thread overview]
Message-ID: <201712280456.vBS4uAf8011243@imss03.silk.ntt-tx.co.jp> (raw)
In-Reply-To: <4aae78ff-3b6c-cdfe-a8b7-24ec08b73935@lab.ntt.co.jp>

From: Hiroyuki Nakamura <nakamura.hioryuki@po.ntt-tx.co.jp>

* Update remaining Japanese to English.
* Remove meaningless comments, for instance, 'Get client ID' for
  spp_get_client_id() or 'initialize' for init functions.
* Add suplementary comments for more understandable
* Add TODOs for futher revising.

Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
---
 src/vf/spp_vf.c | 297 ++++++++++++++++++++++++++++----------------------------
 1 file changed, 147 insertions(+), 150 deletions(-)

diff --git a/src/vf/spp_vf.c b/src/vf/spp_vf.c
index 20a3b40..33373f5 100644
--- a/src/vf/spp_vf.c
+++ b/src/vf/spp_vf.c
@@ -12,7 +12,7 @@
 #include "spp_forward.h"
 #include "command_proc.h"
 
-/* define */
+/* TODO(yasufum) add desc how there are used */
 #define SPP_CORE_STATUS_CHECK_MAX 5
 #define SPP_RING_LATENCY_STATS_SAMPLING_INTERVAL 1000000
 
@@ -21,13 +21,13 @@ enum SPP_LONGOPT_RETVAL {
 	SPP_LONGOPT_RETVAL__ = 127,
 
 	/* add below */
-
+	/* TODO(yasufum) add description what and why add below */
 	SPP_LONGOPT_RETVAL_CONFIG,
 	SPP_LONGOPT_RETVAL_CLIENT_ID,
 	SPP_LONGOPT_RETVAL_VHOST_CLIENT
 };
 
-/* struct */
+/* Manage given options as global variable */
 struct startup_param {
 	int client_id;
 	char server_ip[INET_ADDRSTRLEN];
@@ -35,9 +35,10 @@ struct startup_param {
 	int vhost_client;
 };
 
+/* Status of patch and its cores, mac address assinged for it and port info */
 struct patch_info {
 	int      use_flg;
-	int      dpdk_port;
+	int      dpdk_port;  /* TODO(yasufum) add desc for what is this */
 	int      rx_core_no;
 	int      tx_core_no;
 	char     mac_addr_str[SPP_CONFIG_STR_LEN];
@@ -46,6 +47,8 @@ struct patch_info {
 	struct   spp_core_port_info *tx_core;
 };
 
+/* Manage number of interfaces and patch information  as global variable */
+/* TODO(yasufum) refactor, change if to iface */
 struct if_info {
 	int num_nic;
 	int num_vhost;
@@ -55,17 +58,16 @@ struct if_info {
 	struct patch_info ring_patchs[RTE_MAX_ETHPORTS];
 };
 
+/* Declare global variables */
 static struct spp_config_area	g_config;
 static struct startup_param	g_startup_param;
 static struct if_info		g_if_info;
 static struct spp_core_info	g_core_info[SPP_CONFIG_CORE_MAX];
-static int 			g_change_core[SPP_CONFIG_CORE_MAX];
+static int 			g_change_core[SPP_CONFIG_CORE_MAX];  /* TODO(yasufum) add desc how it is used and why changed core is kept */
 
 static char config_file_path[PATH_MAX];
 
-/*
- * print a usage message
- */
+/* Print help message */
 static void
 usage(const char *progname)
 {
@@ -81,16 +83,13 @@ usage(const char *progname)
 			, progname);
 }
 
-/*
- * Set RING PMD
- */
 static int
 add_ring_pmd(int ring_id)
 {
 	struct rte_ring *ring;
 	int ring_port_id;
 
-	/* look up ring, based on user's provided id*/
+	/* Lookup ring of given id */
 	ring = rte_ring_lookup(get_rx_queue_name(ring_id));
 	if (unlikely(ring == NULL)) {
 		RTE_LOG(ERR, APP,
@@ -98,16 +97,13 @@ add_ring_pmd(int ring_id)
 		return -1;
 	}
 
-	/* create ring pmd*/
+	/* Create ring pmd */
 	ring_port_id = rte_eth_from_ring(ring);
 	RTE_LOG(DEBUG, APP, "ring port id %d\n", ring_port_id);
 
 	return ring_port_id;
 }
 
-/*
- * Set VHOST PMD
- */
 static int
 add_vhost_pmd(int index, int client)
 {
@@ -187,27 +183,31 @@ add_vhost_pmd(int index, int client)
 	return vhost_port_id;
 }
 
-/*
- * Check core status
+/**
+ * Check status of all of cores is same as given
+ *
+ * It returns -1 as status mismatch if status is not same.
+ * If status is SPP_CONFIG_UNUSE, check is skipped.
  */
 static int
 check_core_status(enum spp_core_status status)
 {
-	int cnt;
+	int cnt;  /* increment core id */
 	for (cnt = 0; cnt < SPP_CONFIG_CORE_MAX; cnt++) {
 		if (g_core_info[cnt].type == SPP_CONFIG_UNUSE) {
 			continue;
 		}
 		if (g_core_info[cnt].status != status) {
-			/* Status mismatch */
+			/* Status is mismatched */
 			return -1;
 		}
 	}
 	return 0;
 }
 
-/*
- * Wait for core status check
+/**
+ * Run check_core_status() for SPP_CORE_STATUS_CHECK_MAX times with
+ * interval time (1sec)
  */
 static int
 check_core_status_wait(enum spp_core_status status)
@@ -225,34 +225,35 @@ check_core_status_wait(enum spp_core_status status)
 	return -1;
 }
 
-/*
- * Set core status
- */
+/* Set all core to given status */
 static void
 set_core_status(enum spp_core_status status)
 {
-	int core_cnt = 0;
+	int core_cnt = 0;  /* increment core id */
 	for(core_cnt = 0; core_cnt < SPP_CONFIG_CORE_MAX; core_cnt++) {
 		g_core_info[core_cnt].status = status;
 	}
 }
 
-/*
- * Process stop
+/**
+ * Set all of core status to SPP_CORE_STOP_REQUEST if received signal
+ * is SIGTERM or SIGINT
  */
 static void
 stop_process(int signal) {
 	if (unlikely(signal != SIGTERM) &&
 			unlikely(signal != SIGINT)) {
-		/* Other signals */
 		return;
 	}
 
 	set_core_status(SPP_CORE_STOP_REQUEST);
 }
 
-/*
- * Parses the client ID of the application argument.
+/**
+ * Convert string of given client id to inteter
+ *
+ * If succeeded, client id of interger is assigned to client_id and
+ * reuturn 0. Or return -1 if failed.
  */
 static int
 parse_app_client_id(const char *client_id_str, int *client_id)
@@ -272,9 +273,7 @@ parse_app_client_id(const char *client_id_str, int *client_id)
 	return 0;
 }
 
-/*
- * Parses server information of application arguments.
- */
+/* Parse options for server ip and port */
 static int
 parse_app_server(const char *server_str, char *server_ip, int *server_port)
 {
@@ -299,9 +298,7 @@ parse_app_server(const char *server_str, char *server_ip, int *server_port)
 	return 0;
 }
 
-/*
- * Parse the application arguments to the client app.
- */
+/* Parse options for client app */
 static int
 parse_app_args(int argc, char *argv[])
 {
@@ -319,7 +316,10 @@ parse_app_args(int argc, char *argv[])
 			{ 0 },
 	};
 
-	/* getoptを使用するとargvが並び変わるみたいなので、コピーを実施 */
+	/**
+	 * Save argv to argvopt to aovid loosing the order of options
+	 * by getopt_long()
+	 */
 	for (cnt = 0; cnt < argcopt; cnt++) {
 		argvopt[cnt] = argv[cnt];
 	}
@@ -327,7 +327,7 @@ parse_app_args(int argc, char *argv[])
 	/* Clear startup parameters */
 	memset(&g_startup_param, 0x00, sizeof(g_startup_param));
 
-	/* Check application parameter */
+	/* Check options of application */
 	optind = 0;
 	opterr = 0;
 	while ((opt = getopt_long(argc, argvopt, "s:", lgopts,
@@ -370,7 +370,8 @@ parse_app_args(int argc, char *argv[])
 		usage(progname);
 		return -1;
 	}
-	RTE_LOG(INFO, APP, "application arguments value. (client id = %d, config = %s, server = %s:%d, vhost client = %d)\n",
+	RTE_LOG(INFO, APP,
+			"app opts (client_id=%d,config=%s,server=%s:%d,vhost_client=%d)\n",
 			g_startup_param.client_id,
 			config_file_path,
 			g_startup_param.server_ip,
@@ -379,8 +380,13 @@ parse_app_args(int argc, char *argv[])
 	return 0;
 }
 
-/*
- * IF種別&IF番号のIF情報の領域取得
+/**
+ * Return patch info of given type and num of interface
+ *
+ * It returns NULL value if given type is invalid.
+ * TODO(yasufum) refactor name of func to be more understandable (area?)
+ * TODO(yasufum) refactor, change if to iface.
+ * TODO(yasufum) confirm why it returns not -1 but NULL.
  */
 static struct patch_info *
 get_if_area(enum port_type if_type, int if_no)
@@ -396,19 +402,20 @@ get_if_area(enum port_type if_type, int if_no)
 		return &g_if_info.ring_patchs[if_no];
 		break;
 	default:
-		/* エラー出力は呼び元でチェック */
 		return NULL;
 		break;
 	}
 }
 
-/*
- * IF情報初期化
+/**
+ * Initialize all of patch info by assingning -1
+ *
+ * TODO(yasufum) refactor, change if to iface.
  */
 static void
 init_if_info(void)
 {
-	int port_cnt;
+	int port_cnt;  /* increment ether ports */
 	memset(&g_if_info, 0x00, sizeof(g_if_info));
 	for (port_cnt = 0; port_cnt < RTE_MAX_ETHPORTS; port_cnt++) {
 		g_if_info.nic_patchs[port_cnt].rx_core_no   = -1;
@@ -420,8 +427,11 @@ init_if_info(void)
 	}
 }
 
-/*
- * CORE情報初期化
+/**
+ * Initialize g_core_info and its port info
+ *
+ * Clear g_core_info and set interface type of its port info to UNDEF.
+ * TODO(yasufum) refactor, change if to iface.
  */
 static void
 init_core_info(void)
@@ -438,13 +448,15 @@ init_core_info(void)
 	memset(g_change_core, 0x00, sizeof(g_change_core));
 }
 
-/*
- * Configのプロセス情報から管理情報に設定
+/**
+ * Set properties of g_core_info from config
+ *
+ * TODO(yasufum) refactor, change if to iface.
+ * TODO(yasufum) confirm meaning of funciton name and is typo ?
  */
 static int
 set_form_proc_info(struct spp_config_area *config)
 {
-	/* Configのproc_infoから内部管理情報へ設定 */
 	int core_cnt, rx_start, rx_cnt, tx_start, tx_cnt;
 	enum port_type if_type;
 	int if_no;
@@ -459,17 +471,17 @@ set_form_proc_info(struct spp_config_area *config)
 			continue;
 		}
 
-		/* Forwardをまとめる事は可、他種別は不可 */
-		if ((core_info->type != SPP_CONFIG_UNUSE) &&
-				((core_info->type != SPP_CONFIG_FORWARD) ||
-				(core_func->type != SPP_CONFIG_FORWARD))) {
-			RTE_LOG(ERR, APP, "Core in use. (core = %d, type = %d/%d)\n",
-					core_func->core_no,
-					core_func->type, core_info->type);
-			return -1;
-		}
+    /* Forwardをまとめる事は可、他種別は不可 */
+    /* TODO(yasufum) confirm what is the purpose and meaning */
+    if ((core_info->type != SPP_CONFIG_UNUSE) &&
+        ((core_info->type != SPP_CONFIG_FORWARD) ||
+         (core_func->type != SPP_CONFIG_FORWARD))) {
+      RTE_LOG(ERR, APP, "Core in use. (core = %d, type = %d/%d)\n",
+          core_func->core_no,
+          core_func->type, core_info->type);
+      return -1;
+    }
 
-		/* Set CORE type */
 		core_info->type = core_func->type;
 		if (!rte_lcore_is_enabled(core_func->core_no)) {
 			/* CPU mismatch */
@@ -478,7 +490,6 @@ set_form_proc_info(struct spp_config_area *config)
 			return -1;
 		}
 
-		/* Set RX port */
 		rx_start = core_info->num_rx_port;
 		core_info->num_rx_port += core_func->num_rx_port;
 		for (rx_cnt = 0; rx_cnt < core_func->num_rx_port; rx_cnt++) {
@@ -488,7 +499,7 @@ set_form_proc_info(struct spp_config_area *config)
 			core_info->rx_ports[rx_start + rx_cnt].if_type = if_type;
 			core_info->rx_ports[rx_start + rx_cnt].if_no   = if_no;
 
-			/* IF種別とIF番号に対応するIF情報の領域取得 */
+			/* Retrieve patch corresponding to type and number of the interface */
 			patch_info = get_if_area(if_type, if_no);
 
 			patch_info->use_flg = 1;
@@ -499,6 +510,7 @@ set_form_proc_info(struct spp_config_area *config)
 			}
 
 			/* IF情報からCORE情報を変更する場合用に設定 */
+      /* TODO(yasufum) confirm the meaning of this comment */
 			patch_info->rx_core_no = core_func->core_no;
 			patch_info->rx_core    = &core_info->rx_ports[rx_start + rx_cnt];
 		}
@@ -513,7 +525,6 @@ set_form_proc_info(struct spp_config_area *config)
 			core_info->tx_ports[tx_start + tx_cnt].if_type = if_type;
 			core_info->tx_ports[tx_start + tx_cnt].if_no   = if_no;
 
-			/* IF種別とIF番号に対応するIF情報の領域取得 */
 			patch_info = get_if_area(if_type, if_no);
 
 			patch_info->use_flg = 1;
@@ -524,6 +535,7 @@ set_form_proc_info(struct spp_config_area *config)
 			}
 
 			/* IF情報からCORE情報を変更する場合用に設定 */
+      /* TODO(yasufum) confirm the meaning of this comment */
 			patch_info->tx_core_no = core_func->core_no;
 			patch_info->tx_core    = &core_info->tx_ports[tx_start + tx_cnt];
 		}
@@ -532,13 +544,15 @@ set_form_proc_info(struct spp_config_area *config)
 	return 0;
 }
 
-/*
- * ConfigのMACテーブル情報から管理情報に設定
+/**
+ * Load mac table entries from config and setup patches
+ *
+ * TODO(yasufum) refactor, change if to iface.
+ * TODO(yasufum) confirm if additional description for the structure of mac table is needed.
  */
 static int
 set_from_classifier_table(struct spp_config_area *config)
 {
-	/* MAC table */
 	enum port_type if_type;
 	int if_no = 0;
 	int mac_cnt = 0;
@@ -550,7 +564,7 @@ set_from_classifier_table(struct spp_config_area *config)
 		if_type = mac_table->port.if_type;
 		if_no   = mac_table->port.if_no;
 
-		/* IF種別とIF番号に対応するIF情報の領域取得 */
+    /* Retrieve patch corresponding to type and number of the interface */
 		patch_info = get_if_area(if_type, if_no);
 
 		if (unlikely(patch_info->use_flg == 0)) {
@@ -559,8 +573,7 @@ set_from_classifier_table(struct spp_config_area *config)
 			return -1;
 		}
 
-		/* CORE情報側にもMACアドレスの情報設定 */
-		/* MACアドレスは送信側のみに影響する為、送信側のみ設定 */
+    /* Set mac address from the table for destination tx, not need for rx */
 		patch_info->mac_addr = mac_table->mac_addr;
 		strcpy(patch_info->mac_addr_str, mac_table->mac_addr_str);
 		if (unlikely(patch_info->tx_core != NULL)) {
@@ -571,8 +584,10 @@ set_from_classifier_table(struct spp_config_area *config)
 	return 0;
 }
 
-/*
- * NIC用の情報設定
+/**
+ * Setup patch info of port on host
+ *
+ * TODO(yasufum) refactor, change if to iface.
  */
 static int
 set_nic_interface(struct spp_config_area *config __attribute__ ((unused)))
@@ -587,15 +602,14 @@ set_nic_interface(struct spp_config_area *config __attribute__ ((unused)))
 	struct patch_info *patch_info = NULL;
 	for (nic_cnt = 0; nic_cnt < RTE_MAX_ETHPORTS; nic_cnt++) {
 		patch_info = &g_if_info.nic_patchs[nic_cnt];
-		/* Set DPDK port */
 		patch_info->dpdk_port = nic_cnt;
 
+    /* TODO(yasufum) confirm why it is needed */
 		if (patch_info->use_flg == 0) {
 			/* Not Used */
 			continue;
 		}
 
-		/* CORE情報側にもDPDKポート番号の情報設定 */
 		if (patch_info->rx_core != NULL) {
 			patch_info->rx_core->dpdk_port = nic_cnt;
 		}
@@ -603,7 +617,6 @@ set_nic_interface(struct spp_config_area *config __attribute__ ((unused)))
 			patch_info->tx_core->dpdk_port = nic_cnt;
 		}
 
-		/* NICの設定数カウント */
 		nic_num++;
 	}
 
@@ -612,17 +625,18 @@ set_nic_interface(struct spp_config_area *config __attribute__ ((unused)))
 				nic_num, g_if_info.num_nic);
 		return -1;
 	}
-	
+
 	return 0;
 }
 
-/*
- * VHOST用の情報設定
+/**
+ * Setup vhost interfaces from config
+ *
+ * TODO(yasufum) refactor, change if to iface.
  */
 static int
 set_vhost_interface(struct spp_config_area *config)
 {
-	/* VHOST Setting */
 	int vhost_cnt, vhost_num = 0;
 	g_if_info.num_vhost = config->proc.num_vhost;
 	struct patch_info *patch_info = NULL;
@@ -633,7 +647,6 @@ set_vhost_interface(struct spp_config_area *config)
 			continue;
 		}
 
-		/* Set DPDK port */
 		int dpdk_port = add_vhost_pmd(vhost_cnt, g_startup_param.vhost_client);
 		if (unlikely(dpdk_port < 0)) {
 			RTE_LOG(ERR, APP, "VHOST add failed. (no = %d)\n",
@@ -642,7 +655,6 @@ set_vhost_interface(struct spp_config_area *config)
 		}
 		patch_info->dpdk_port = dpdk_port;
 
-		/* CORE情報側にもDPDKポート番号の情報設定 */
 		if (patch_info->rx_core != NULL) {
 			patch_info->rx_core->dpdk_port = dpdk_port;
 		}
@@ -659,24 +671,26 @@ set_vhost_interface(struct spp_config_area *config)
 	return 0;
 }
 
-/*
- * RING用の情報設定
+/**
+ * Setup ring interfaces from config
+ *
+ * TODO(yasufum) refactor, change if to iface.
  */
 static int
 set_ring_interface(struct spp_config_area *config)
 {
-	/* RING Setting */
 	int ring_cnt, ring_num = 0;
 	g_if_info.num_ring = config->proc.num_ring;
 	struct patch_info *patch_info = NULL;
 	for (ring_cnt = 0; ring_cnt < RTE_MAX_ETHPORTS; ring_cnt++) {
 		patch_info = &g_if_info.ring_patchs[ring_cnt];
+
+    /* TODO(yasufum) confirm why it is needed */
 		if (patch_info->use_flg == 0) {
 			/* Not Used */
 			continue;
 		}
 
-		/* Set DPDK port */
 		int dpdk_port = add_ring_pmd(ring_cnt);
 		if (unlikely(dpdk_port < 0)) {
 			RTE_LOG(ERR, APP, "RING add failed. (no = %d)\n",
@@ -685,7 +699,6 @@ set_ring_interface(struct spp_config_area *config)
 		}
 		patch_info->dpdk_port = dpdk_port;
 
-		/* CORE情報側にもDPDKポート番号の情報設定 */
 		if (patch_info->rx_core != NULL) {
 			patch_info->rx_core->dpdk_port = dpdk_port;
 		}
@@ -702,60 +715,61 @@ set_ring_interface(struct spp_config_area *config)
 	return 0;
 }
 
-/*
- * 管理データ初期設定
+/**
+ * Setup management info for spp_vf
+ *
+ * TODO(yasufum) refactor, change if to iface.
+ * TODO(yasufum) refactor, change function name from manage to mng or management
  */
 static int
 init_manage_data(struct spp_config_area *config)
 {
-	/* Initialize */
+	/* Initialize interface and core infomation */
 	init_if_info();
 	init_core_info();
 
-	/* Set config data */
+  /* Load config for resource assingment and network configuration */
 	int ret_proc = set_form_proc_info(config);
 	if (unlikely(ret_proc != 0)) {
-		/* 関数内でログ出力済みなので、省略 */
 		return -1;
 	}
 	int ret_classifier = set_from_classifier_table(config);
 	if (unlikely(ret_classifier != 0)) {
-		/* 関数内でログ出力済みなので、省略 */
 		return -1;
 	}
 
-	/* Set interface data */
 	int ret_nic = set_nic_interface(config);
 	if (unlikely(ret_nic != 0)) {
-		/* 関数内でログ出力済みなので、省略 */
 		return -1;
 	}
 
 	int ret_vhost = set_vhost_interface(config);
 	if (unlikely(ret_vhost != 0)) {
-		/* 関数内でログ出力済みなので、省略 */
 		return -1;
 	}
 
 	int ret_ring = set_ring_interface(config);
 	if (unlikely(ret_ring != 0)) {
-		/* 関数内でログ出力済みなので、省略 */
 		return -1;
 	}
 
 	return 0;
 }
 
-#ifdef SPP_RINGLATENCYSTATS_ENABLE /* RING滞留時間 */
+#ifdef SPP_RINGLATENCYSTATS_ENABLE
+/**
+ * Print statistics of time for packet processing in ring interface
+ *
+ * TODO(yasufum) refactor, change if to iface.
+ */
 static void
 print_ring_latency_stats(void)
 {
-	/* Clear screen and move to top left */
+	/* Clear screen and move cursor to top left */
 	const char topLeft[] = { 27, '[', '1', ';', '1', 'H', '\0' };
 	const char clr[] = { 27, '[', '2', 'J', '\0' };
 	printf("%s%s", clr, topLeft);
 
-	/* Print per RING */
 	int ring_cnt, stats_cnt;
 	struct spp_ringlatencystats_ring_latency_stats stats[RTE_MAX_ETHPORTS];
 	memset(&stats, 0x00, sizeof(stats));
@@ -787,32 +801,30 @@ print_ring_latency_stats(void)
 }
 #endif /* SPP_RINGLATENCYSTATS_ENABLE */
 
-/*
- * VHOST用ソケットファイル削除
+/**
+ * Remove sock file
  */
 static void
 del_vhost_sockfile(struct patch_info *vhost_patchs)
 {
 	int cnt;
 
-	/* Do not delete for vhost client. */
+	/* Do not rmeove for if it is running in vhost-client mode. */
 	if (g_startup_param.vhost_client != 0)
 		return;
 
 	for (cnt = 0; cnt < RTE_MAX_ETHPORTS; cnt++) {
 		if (likely(vhost_patchs[cnt].use_flg == 0)) {
-			/* VHOST未使用はスキップ */
+			/* Skip removing if it is not using vhost */
 			continue;
 		}
 
-		/* 使用していたVHOSTについて削除を行う */
 		remove(get_vhost_iface_name(cnt));
 	}
 }
 
-/*
- * main
- */
+/* TODO(yasufum) refactor, change if to iface. */
+/* TODO(yasufum) change test using ut_main(), or add desccription for what and why use it */
 int
 #ifndef USE_UT_SPP_VF
 main(int argc, char *argv[])
@@ -834,25 +846,23 @@ ut_main(int argc, char *argv[])
 	signal(SIGTERM, stop_process);
 	signal(SIGINT,  stop_process);
 
-	/* set default config file path */
+	/* Setup config wiht default file path */
 	strcpy(config_file_path, SPP_CONFIG_FILE_PATH);
 
 	unsigned int main_lcore_id = 0xffffffff;
 	while(1) {
-		/* DPDK initialize */
 		int ret_dpdk = rte_eal_init(argc, argv);
 		if (unlikely(ret_dpdk < 0)) {
 			break;
 		}
 
-		/* Skip dpdk parameters */
 		argc -= ret_dpdk;
 		argv += ret_dpdk;
 
 		/* Set log level  */
 		rte_log_set_global_level(RTE_LOG_LEVEL);
 
-		/* Parse application parameters */
+		/* Parse spp_vf specific parameters */
 		int ret_parse = parse_app_args(argc, argv);
 		if (unlikely(ret_parse != 0)) {
 			break;
@@ -860,30 +870,25 @@ ut_main(int argc, char *argv[])
 
 		RTE_LOG(INFO, APP, "Load config file(%s)\n", config_file_path);
 
-		/* Load config */
 		int ret_config = spp_config_load_file(config_file_path, 0, &g_config);
 		if (unlikely(ret_config != 0)) {
 			break;
 		}
 
-		/* Get core id. */
+		/* Get lcore id of main thread to set its status after */
 		main_lcore_id = rte_lcore_id();
 
-		/* 起動パラメータとコンフィグチェック */
-		/* 各IF情報設定 */
 		int ret_manage = init_manage_data(&g_config);
 		if (unlikely(ret_manage != 0)) {
 			break;
 		}
 
-		/* 他機能部初期化 */
-		/* MAC振分初期化 */
 		int ret_classifier_mac_init = spp_classifier_mac_init();
 		if (unlikely(ret_classifier_mac_init != 0)) {
 			break;
 		}
 
-		/* コマンド機能部初期化 */
+    /* Setup connection for accepting commands from controller */
 		int ret_command_init = spp_command_proc_init(
 				g_startup_param.server_ip,
 				g_startup_param.server_port);
@@ -891,7 +896,7 @@ ut_main(int argc, char *argv[])
 			break;
 		}
 
-#ifdef SPP_RINGLATENCYSTATS_ENABLE /* RING滞留時間 */
+#ifdef SPP_RINGLATENCYSTATS_ENABLE
 		int ret_ringlatency = spp_ringlatencystats_init(
 				SPP_RING_LATENCY_STATS_SAMPLING_INTERVAL, g_if_info.num_ring);
 		if (unlikely(ret_ringlatency != 0)) {
@@ -899,7 +904,7 @@ ut_main(int argc, char *argv[])
 		}
 #endif /* SPP_RINGLATENCYSTATS_ENABLE */
 
-		/* Start  thread */
+		/* Start worker threads of classifier and forwarder */
 		unsigned int lcore_id = 0;
 		RTE_LCORE_FOREACH_SLAVE(lcore_id) {
 			if (g_core_info[lcore_id].type == SPP_CONFIG_CLASSIFIER_MAC) {
@@ -913,50 +918,48 @@ ut_main(int argc, char *argv[])
 			}
 		}
 
-		/* スレッド状態確認 */
+    /* Set the status of main thread to idle */
 		g_core_info[main_lcore_id].status = SPP_CORE_IDLE;
 		int ret_wait = check_core_status_wait(SPP_CORE_IDLE);
 		if (unlikely(ret_wait != 0)) {
 			break;
 		}
 
-		/* Start forward */
+		/* Start forwarding */
 		set_core_status(SPP_CORE_FORWARD);
 		RTE_LOG(INFO, APP, "My ID %d start handling message\n", 0);
 		RTE_LOG(INFO, APP, "[Press Ctrl-C to quit ...]\n");
 
-		/* loop */
+		/* Enter loop for accepting commands */
 		int ret_do = 0;
 #ifndef USE_UT_SPP_VF
 		while(likely(g_core_info[main_lcore_id].status != SPP_CORE_STOP_REQUEST)) {
 #else
 		{
 #endif
-			/* コマンド受付 */
+      /* Receive command */
 			ret_do = spp_command_proc_do();
 			if (unlikely(ret_do != 0)) {
 				break;
 			}
 
-			/* CPUを占有しない様に1秒スリープ */
 			sleep(1);
 
-#ifdef SPP_RINGLATENCYSTATS_ENABLE /* RING滞留時間 */
+#ifdef SPP_RINGLATENCYSTATS_ENABLE
 			print_ring_latency_stats();
 #endif /* SPP_RINGLATENCYSTATS_ENABLE */
 		}
 
-		/* エラー終了 */
+    /* TODO(yasufum) confirm, add why this check is needed because it is same the case of "ret = 0", or remove */
 		if (unlikely(ret_do != 0)) {
 			break;
 		}
 
-		/* 正常終了 */
 		ret = 0;
 		break;
 	}
 
-	/* exit */
+	/* Finalize to exit */
 	if (main_lcore_id == rte_lcore_id())
 	{
 		g_core_info[main_lcore_id].status = SPP_CORE_STOP;
@@ -965,29 +968,29 @@ ut_main(int argc, char *argv[])
 			RTE_LOG(ERR, APP, "Core did not stop.\n");
 		}
 
-		/* 使用していたVHOSTのソケットファイルを削除 */
+		/* Remove vhost sock file if it is not running in vhost-client mode */
 		del_vhost_sockfile(g_if_info.vhost_patchs);
 	}
 
-	/* 他機能部終了処理 */
-#ifdef SPP_RINGLATENCYSTATS_ENABLE /* RING滞留時間 */
+#ifdef SPP_RINGLATENCYSTATS_ENABLE
 	spp_ringlatencystats_uninit();
 #endif /* SPP_RINGLATENCYSTATS_ENABLE */
+
 	RTE_LOG(INFO, APP, "spp_vf exit.\n");
 	return ret;
 }
 
-/*
- * Get client ID
- */
 int
 spp_get_client_id(void)
 {
 	return g_startup_param.client_id;
 }
 
-/*
- * Check the MAC address used on the interface
+/**
+ * Check mac address used on the interface
+ *
+ * TODO(yasufum) refactor, change if to iface.
+ * TODO(yasufum) confirm, add the reason why this check is needed
  */
 static int
 check_mac_used_interface(uint64_t mac_addr, enum port_type *if_type, int *if_no)
@@ -1013,9 +1016,6 @@ check_mac_used_interface(uint64_t mac_addr, enum port_type *if_type, int *if_no)
 	return -1;
 }
 
-/*
- * Update Classifier_table
- */
 int
 spp_update_classifier_table(
 		enum spp_classifier_type type,
@@ -1103,18 +1103,16 @@ spp_update_classifier_table(
 		}
 	}
 
-	/* 更新コマンドで設定した場合、コア毎に変更有無を保持 */
+  /* TODO(yasufum) add desc how it is used and why changed core is kept */
 	g_change_core[patch_info->tx_core_no] = 1;
 	return SPP_RET_OK;
 }
 
-/*
- * Flush SPP component
- */
+/* Flush command to execute it */
 int
 spp_flush(void)
 {
-	int core_cnt = 0;
+	int core_cnt = 0;  /* increment core id */
 	int ret_classifier = 0;
 	struct spp_core_info *core_info = NULL;
 
@@ -1132,15 +1130,14 @@ spp_flush(void)
 		}
 	}
 
-	/* 更新完了により変更したコアをクリア */
+	/* Finally, zero-clear g_change_core */
 	memset(g_change_core, 0x00, sizeof(g_change_core));
 	return SPP_RET_OK;
 }
 
-/*
- * Iterate Classifier_table
- */
-int spp_iterate_classifier_table(struct spp_iterate_classifier_table_params *params)
+int
+spp_iterate_classifier_table(
+		struct spp_iterate_classifier_table_params *params)
 {
 	int ret;
 
-- 
1.9.1

  parent reply	other threads:[~2017-12-28  4:56 UTC|newest]

Thread overview: 97+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-25  4:41 [spp] Proposal - spp_vf(SR-IOV like feature) addition to SPP Nakamura Hioryuki
2017-12-26  1:54 ` Yasufumi Ogawa
2017-12-28  4:55   ` [spp] [PATCH 01/57] spp_vf: add vf functions x-fn-spp
2017-12-28  8:49     ` Yasufumi Ogawa
2017-12-28  4:55   ` [spp] [PATCH 02/57] spp_vf: support multi process x-fn-spp
2018-02-07 16:50     ` Ferruh Yigit
2018-02-08  1:21       ` Yasufumi Ogawa
2018-02-08  6:44       ` [spp] [spp 02168] " Nakamura Hioryuki
2017-12-28  4:55   ` [spp] [PATCH 03/57] spp_vf: comment out check of using cores x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 04/57] spp_vf: modify classifier for upd command x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 05/57] spp_vf: add procedure that mac address is null x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 06/57] spp_vf: change config format for upd command x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 07/57] spp_vf: fix compiler warning in classifier_mac.c x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 08/57] spp_vf: modify data struct for upd command x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 09/57] spp_vf: add functions of command acceptance x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 10/57] spp_vf: add command acceptance calling x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 11/57] spp_vf: fix compiler warning in command_proc.c x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 12/57] " x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 13/57] spp_vf: refactor command acceptance/decode x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 14/57] spp_vf: fix return value overwrite problem x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 15/57] spp_vf: initialize message buffer x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 16/57] spp_vf: add const keyword to parameter x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 17/57] spp_vf: fix wrong comparison operator x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 18/57] spp_vf: fix wrong variable to be assigned x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 19/57] spp_vf: refactor parsing server ip address x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 20/57] spp_vf: fix error in command decode x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 21/57] spp_vf: fix comparison operator in spp_vf.c x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 22/57] spp_vf: check upper limit to the number of process x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 23/57] spp_vf: display usage message x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 24/57] spp_vf: split command processing source file x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 25/57] spp_vf: add new log and line break x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 26/57] spp_vf: support get-process-id command x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 27/57] spp_vf: update socket creation procedure x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 28/57] spp_vf: change log level and add line break x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 29/57] spp_vf: replace unsupported jansson api x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 30/57] spp_vf: change order of command result in json object x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 31/57] spp_vf: use prediction keywords x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 32/57] spp_vf: fix wrong comparison x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 33/57] spp_vf: update sending error status x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 34/57] spp_vf: modify conditional statement x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 35/57] spp_vf: add proc on receiving l2 multicast x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 36/57] spp_vf: extend limit on number of usable cores x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 37/57] spp_vf: add restart procedure for vhost client x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 38/57] spp_vf: fix classifier mbuf handling x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 39/57] spp_vf: add status command x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 40/57] spp_vf: add output source information in error log x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 41/57] spp_vf: change function names x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 42/57] spp_vf: change how to request commands x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 43/57] spp_vf: update command decode procedure x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 44/57] spp_vf: remove debug log output procedures x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 45/57] spp_vf: improve command_decoder program code x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 46/57] spp_vf: fix a bug in status command x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 47/57] spp_vf: add spp_vf.py instead of spp.py x-fn-spp
2017-12-28  4:55   ` x-fn-spp [this message]
2017-12-28  4:55   ` [spp] [PATCH 49/57] spp_vf: refactor comments in classifier_mac.c x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 50/57] spp_vf: refactor comments in spp_forward.c x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 51/57] spp_vf: refactor for commnets in spp_config.c x-fn-spp
2017-12-28  4:55   ` [spp] [PATCH 52/57] spp_vf: refactor no self-explanatory comments x-fn-spp
2017-12-28  4:56   ` [spp] [PATCH 53/57] spp_vf: correct typo of function name x-fn-spp
2017-12-28  4:56   ` [spp] [PATCH 54/57] spp_vf: support new command x-fn-spp
2017-12-28  4:56   ` [spp] [PATCH 55/57] spp_vf: add display of status command x-fn-spp
2017-12-28  4:56   ` [spp] [PATCH 56/57] spp_vf: fix " x-fn-spp
2017-12-28  4:56   ` [spp] [PATCH 57/57] spp_vf: fix l2 multicast packet forwarding x-fn-spp
2018-01-15 11:04 ` [spp] Proposal - spp_vf(SR-IOV like feature) addition to SPP Ferruh Yigit
2018-01-16  5:16   ` [spp] [PATCH 01/30] doc: add setup guide x-fn-spp
2018-01-19  0:52     ` Yasufumi Ogawa
2018-01-22 14:37       ` Ferruh Yigit
2018-01-23  0:25         ` Yasufumi Ogawa
2018-01-16  5:16   ` [spp] [PATCH 02/30] doc: add how_to_use.md x-fn-spp
2018-01-16  5:16   ` [spp] [PATCH 03/30] doc: add config_manual.md x-fn-spp
2018-01-16  5:16   ` [spp] [PATCH 04/30] doc: add spp_vf.md x-fn-spp
2018-01-16  5:16   ` [spp] [PATCH 05/30] doc: revise spp_vf.md x-fn-spp
2018-01-16  5:16   ` [spp] [PATCH 06/30] doc: add config section x-fn-spp
2018-01-16  5:16   ` [spp] [PATCH 07/30] doc: update jp setup manual x-fn-spp
2018-01-16  5:16   ` [spp] [PATCH 08/30] doc: modify figure in spp_vf_overview x-fn-spp
2018-01-16  5:16   ` [spp] [PATCH 09/30] doc: fix " x-fn-spp
2018-01-16  5:16   ` [spp] [PATCH 10/30] doc: fix figure in overview x-fn-spp
2018-01-16  5:16   ` [spp] [PATCH 11/30] doc: add sample usage x-fn-spp
2018-01-16  5:16   ` [spp] [PATCH 12/30] doc: revice path descs x-fn-spp
2018-01-16  5:16   ` [spp] [PATCH 13/30] doc: add network configuration diagram x-fn-spp
2018-01-16  5:16   ` [spp] [PATCH 14/30] doc: update user account x-fn-spp
2018-01-16  5:16   ` [spp] [PATCH 15/30] doc: update descriptions for todo x-fn-spp
2018-01-16  5:16   ` [spp] [PATCH 16/30] doc: add description for explanation section x-fn-spp
2018-01-16  5:16   ` [spp] [PATCH 17/30] doc: add spp_sample_usage_svg in docs/spp_vf/ x-fn-spp
2018-01-16  5:16   ` [spp] [PATCH 18/30] doc: add explanation for terminating spp app x-fn-spp
2018-01-16  5:16   ` [spp] [PATCH 19/30] doc: add explanations on options of spp x-fn-spp
2018-01-16  5:16   ` [spp] [PATCH 20/30] doc: update description for the latest spp version x-fn-spp
2018-01-16  5:16   ` [spp] [PATCH 21/30] doc: update description on dpdk version x-fn-spp
2018-01-16  5:16   ` [spp] [PATCH 22/30] doc: fix vm setup procedure for network config x-fn-spp
2018-01-16  5:16   ` [spp] [PATCH 23/30] doc: update jansson installation procedure x-fn-spp
2018-01-16  5:16   ` [spp] [PATCH 24/30] doc: fix required network configuration x-fn-spp
2018-01-16  5:16   ` [spp] [PATCH 25/30] doc: add how to use vhost-user support x-fn-spp
2018-01-16  5:16   ` [spp] [PATCH 26/30] doc: add references to hugepages and isolcpus x-fn-spp
2018-01-16  5:16   ` [spp] [PATCH 27/30] doc: remove description on classifier_table x-fn-spp
2018-01-16  5:16   ` [spp] [PATCH 28/30] doc: fix typos and erros in texts x-fn-spp
2018-01-16  5:16   ` [spp] [PATCH 29/30] doc: update sample config section x-fn-spp
2018-01-16  5:16   ` [spp] [PATCH 30/30] doc: align figure title position x-fn-spp

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201712280456.vBS4uAf8011243@imss03.silk.ntt-tx.co.jp \
    --to=x-fn-spp@sl.ntt-tx.co.jp \
    --cc=spp@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).