From mboxrd@z Thu Jan 1 00:00:00 1970 From: ido goshen Subject: [PATCH v2 2/2] net/pcap: duplicate code consolidation Date: Tue, 19 Jun 2018 17:37:26 +0300 Message-ID: <1529419046-95906-2-git-send-email-ido@cgstowernetworks.com> References: <1529419046-95906-1-git-send-email-ido@cgstowernetworks.com> Mime-Version: 1.0 Content-Type: text/plain Cc: dev@dpdk.org, ido goshen To: Ferruh Yigit Return-path: Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00132.outbound.protection.outlook.com [40.107.0.132]) by dpdk.org (Postfix) with ESMTP id 181834C96 for ; Tue, 19 Jun 2018 16:38:15 +0200 (CEST) In-Reply-To: <1529419046-95906-1-git-send-email-ido@cgstowernetworks.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Signed-off-by: ido goshen --- drivers/net/pcap/rte_eth_pcap.c | 77 +++++++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 37 deletions(-) diff --git a/drivers/net/pcap/rte_eth_pcap.c b/drivers/net/pcap/rte_eth_pcap.c index b4f81ac..b21930b 100644 --- a/drivers/net/pcap/rte_eth_pcap.c +++ b/drivers/net/pcap/rte_eth_pcap.c @@ -658,6 +658,22 @@ struct pmd_devargs { .stats_reset = eth_stats_reset, }; +static int +add_queue(struct pmd_devargs *pmd, const char *name, const char *type, + pcap_t *pcap, pcap_dumper_t *dumper) +{ + if (pmd->num_of_queue >= RTE_PMD_PCAP_MAX_QUEUES) + return -1; + if (pcap) + pmd->queue[pmd->num_of_queue].pcap = pcap; + if (dumper) + pmd->queue[pmd->num_of_queue].dumper = dumper; + pmd->queue[pmd->num_of_queue].name = name; + pmd->queue[pmd->num_of_queue].type = type; + pmd->num_of_queue++; + return 0; +} + /* * Function handler that opens the pcap file for reading a stores a * reference of it for use it later on. @@ -669,15 +685,13 @@ struct pmd_devargs { struct pmd_devargs *rx = extra_args; pcap_t *pcap = NULL; - if (rx->num_of_queue >= RTE_PMD_PCAP_MAX_QUEUES) - return -1; if (open_single_rx_pcap(pcap_filename, &pcap) < 0) return -1; - rx->queue[rx->num_of_queue].pcap = pcap; - rx->queue[rx->num_of_queue].name = pcap_filename; - rx->queue[rx->num_of_queue].type = key; - rx->num_of_queue++; + if (add_queue(rx, pcap_filename, key, pcap, NULL) < 0) { + pcap_close(pcap); + return -1; + } return 0; } @@ -693,15 +707,13 @@ struct pmd_devargs { struct pmd_devargs *dumpers = extra_args; pcap_dumper_t *dumper; - if (dumpers->num_of_queue >= RTE_PMD_PCAP_MAX_QUEUES) - return -1; if (open_single_tx_pcap(pcap_filename, &dumper) < 0) return -1; - dumpers->queue[dumpers->num_of_queue].dumper = dumper; - dumpers->queue[dumpers->num_of_queue].name = pcap_filename; - dumpers->queue[dumpers->num_of_queue].type = key; - dumpers->num_of_queue++; + if (add_queue(dumpers, pcap_filename, key, NULL, dumper) < 0) { + pcap_dump_close(dumper); + return -1; + } return 0; } @@ -726,48 +738,39 @@ struct pmd_devargs { return 0; } -/* - * Opens a NIC for reading packets from it - */ static inline int -open_rx_iface(const char *key, const char *value, void *extra_args) +open_iface(const char *key, const char *value, void *extra_args) { const char *iface = value; - struct pmd_devargs *rx = extra_args; + struct pmd_devargs *pmd = extra_args; pcap_t *pcap = NULL; - if (rx->num_of_queue >= RTE_PMD_PCAP_MAX_QUEUES) - return -1; if (open_single_iface(iface, &pcap) < 0) return -1; - rx->queue[rx->num_of_queue].pcap = pcap; - rx->queue[rx->num_of_queue].name = iface; - rx->queue[rx->num_of_queue].type = key; - rx->num_of_queue++; + if (add_queue(pmd, iface, key, pcap, NULL) < 0) { + pcap_close(pcap); + return -1; + } return 0; } /* + * Opens a NIC for reading packets from it + */ +static inline int +open_rx_iface(const char *key, const char *value, void *extra_args) +{ + return open_iface(key, value, extra_args); +} + +/* * Opens a NIC for writing packets to it */ static int open_tx_iface(const char *key, const char *value, void *extra_args) { - const char *iface = value; - struct pmd_devargs *tx = extra_args; - pcap_t *pcap; - - if (tx->num_of_queue >= RTE_PMD_PCAP_MAX_QUEUES) - return -1; - if (open_single_iface(iface, &pcap) < 0) - return -1; - tx->queue[tx->num_of_queue].pcap = pcap; - tx->queue[tx->num_of_queue].name = iface; - tx->queue[tx->num_of_queue].type = key; - tx->num_of_queue++; - - return 0; + return open_iface(key, value, extra_args); } static struct rte_vdev_driver pmd_pcap_drv; -- 1.9.1