diff mbox series

[CLOUD-DEV,v5,7/10] linux-gen: pktio: pcap: minor code refactory

Message ID 1505898014-18011-8-git-send-email-odpbot@yandex.ru
State New
Headers show
Series [CLOUD-DEV,v5,1/10] framework: modular: extern SUBSYSTEM_FOREACH_TEMPLATE | expand

Commit Message

Github ODP bot Sept. 20, 2017, 9 a.m. UTC
From: Yi He <yi.he@linaro.org>


Move implementation specific data structure
into dedicated header file.

Signed-off-by: Yi He <yi.he@linaro.org>

Reviewed-by: Brian Brooks <brian.brooks@arm.com>

Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>

Reviewed-by: Bogdan Pricope <bogdan.pricope@linaro.org>

Reviewed-by: Josep Puigdemont <josep.puigdemont@linaro.org>

Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org>

---
/** Email created from pull request 139 (heyi-linaro:modular-pktio-ops)
 ** https://github.com/Linaro/odp/pull/139
 ** Patch: https://github.com/Linaro/odp/pull/139.patch
 ** Base sha: c6a520126eff39b7ebce8e790fb960259ce8f812
 ** Merge commit sha: 8d7f8c3de9639acb3a2b8eb8c3830c044eb6a437
 **/
 platform/linux-generic/Makefile.am                 |  1 +
 .../linux-generic/include/odp_packet_io_internal.h | 18 --------------
 .../linux-generic/include/odp_pktio_ops_pcap.h     | 25 +++++++++++++++++++
 .../include/odp_pktio_ops_subsystem.h              |  2 ++
 platform/linux-generic/pktio/pcap.c                | 29 +++++++++++++---------
 5 files changed, 45 insertions(+), 30 deletions(-)
 create mode 100644 platform/linux-generic/include/odp_pktio_ops_pcap.h
diff mbox series

Patch

diff --git a/platform/linux-generic/Makefile.am b/platform/linux-generic/Makefile.am
index 7911a91f5..53e103042 100644
--- a/platform/linux-generic/Makefile.am
+++ b/platform/linux-generic/Makefile.am
@@ -192,6 +192,7 @@  noinst_HEADERS = \
 		  ${srcdir}/include/odp_pktio_ops_ipc.h \
 		  ${srcdir}/include/odp_pktio_ops_loopback.h \
 		  ${srcdir}/include/odp_pktio_ops_netmap.h \
+		  ${srcdir}/include/odp_pktio_ops_pcap.h \
 		  ${srcdir}/include/odp_pktio_ops_subsystem.h \
 		  ${srcdir}/include/odp_pkt_queue_internal.h \
 		  ${srcdir}/include/odp_queue_subsystem.h \
diff --git a/platform/linux-generic/include/odp_packet_io_internal.h b/platform/linux-generic/include/odp_packet_io_internal.h
index af826b7e7..a3890091f 100644
--- a/platform/linux-generic/include/odp_packet_io_internal.h
+++ b/platform/linux-generic/include/odp_packet_io_internal.h
@@ -50,21 +50,6 @@  typedef union pktio_entry_u pktio_entry_t;
  *  requested number of packets were not handled. */
 #define SOCK_ERR_REPORT(e) (e != EAGAIN && e != EWOULDBLOCK && e != EINTR)
 
-#ifdef HAVE_PCAP
-typedef struct {
-	char *fname_rx;		/**< name of pcap file for rx */
-	char *fname_tx;		/**< name of pcap file for tx */
-	void *rx;		/**< rx pcap handle */
-	void *tx;		/**< tx pcap handle */
-	void *tx_dump;		/**< tx pcap dumper handle */
-	odp_pool_t pool;	/**< rx pool */
-	unsigned char *buf;	/**< per-pktio temp buffer */
-	int loops;		/**< number of times to loop rx pcap */
-	int loop_cnt;		/**< number of loops completed */
-	odp_bool_t promisc;	/**< promiscuous mode state */
-} pkt_pcap_t;
-#endif
-
 struct pktio_entry {
 	const pktio_ops_module_t *ops;	/**< Implementation specific methods */
 	pktio_ops_data_t ops_data;	/**< IO operation specific data */
@@ -78,9 +63,6 @@  struct pktio_entry {
 		pkt_sock_mmap_t pkt_sock_mmap;	/**< using socket mmap
 						 *   API for IO */
 		pkt_dpdk_t pkt_dpdk;		/**< using DPDK for IO */
-#ifdef HAVE_PCAP
-		pkt_pcap_t pkt_pcap;		/**< Using pcap for IO */
-#endif
 		pkt_tap_t pkt_tap;		/**< using TAP for IO */
 	};
 	enum {
diff --git a/platform/linux-generic/include/odp_pktio_ops_pcap.h b/platform/linux-generic/include/odp_pktio_ops_pcap.h
new file mode 100644
index 000000000..6911710c4
--- /dev/null
+++ b/platform/linux-generic/include/odp_pktio_ops_pcap.h
@@ -0,0 +1,25 @@ 
+/* Copyright (c) 2017, ARM Limited. All rights reserved.
+ *
+ * Copyright (c) 2017, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef ODP_PKTIO_OPS_PCAP_H_
+#define ODP_PKTIO_OPS_PCAP_H_
+
+typedef struct {
+	char *fname_rx;		/**< name of pcap file for rx */
+	char *fname_tx;		/**< name of pcap file for tx */
+	void *rx;		/**< rx pcap handle */
+	void *tx;		/**< tx pcap handle */
+	void *tx_dump;		/**< tx pcap dumper handle */
+	odp_pool_t pool;	/**< rx pool */
+	unsigned char *buf;	/**< per-pktio temp buffer */
+	int loops;		/**< number of times to loop rx pcap */
+	int loop_cnt;		/**< number of loops completed */
+	odp_bool_t promisc;	/**< promiscuous mode state */
+} pktio_ops_pcap_data_t;
+
+#endif
diff --git a/platform/linux-generic/include/odp_pktio_ops_subsystem.h b/platform/linux-generic/include/odp_pktio_ops_subsystem.h
index b1b735ced..fc461be79 100644
--- a/platform/linux-generic/include/odp_pktio_ops_subsystem.h
+++ b/platform/linux-generic/include/odp_pktio_ops_subsystem.h
@@ -82,6 +82,7 @@  typedef ODP_MODULE_CLASS(pktio_ops) {
 #include <odp_pktio_ops_ipc.h>
 #include <odp_pktio_ops_loopback.h>
 #include <odp_pktio_ops_netmap.h>
+#include <odp_pktio_ops_pcap.h>
 
 /* Per implementation private data
  * TODO: refactory each implementation to hide it internally
@@ -90,6 +91,7 @@  typedef union {
 	pktio_ops_ipc_data_t ipc;
 	pktio_ops_loopback_data_t loopback;
 	pktio_ops_netmap_data_t netmap;
+	pktio_ops_pcap_data_t pcap;
 } pktio_ops_data_t;
 
 /* Extract pktio ops data from pktio entry structure */
diff --git a/platform/linux-generic/pktio/pcap.c b/platform/linux-generic/pktio/pcap.c
index 98f810898..684c4e120 100644
--- a/platform/linux-generic/pktio/pcap.c
+++ b/platform/linux-generic/pktio/pcap.c
@@ -51,7 +51,8 @@  static const char pcap_mac[] = {0x02, 0xe9, 0x34, 0x80, 0x73, 0x04};
 
 static int pcapif_stats_reset(pktio_entry_t *pktio_entry);
 
-static int _pcapif_parse_devname(pkt_pcap_t *pcap, const char *devname)
+static int _pcapif_parse_devname(pktio_ops_pcap_data_t *pcap,
+				 const char *devname)
 {
 	char *tok;
 	char in[PKTIO_NAME_LEN];
@@ -80,7 +81,7 @@  static int _pcapif_parse_devname(pkt_pcap_t *pcap, const char *devname)
 	return 0;
 }
 
-static int _pcapif_init_rx(pkt_pcap_t *pcap)
+static int _pcapif_init_rx(pktio_ops_pcap_data_t *pcap)
 {
 	char errbuf[PCAP_ERRBUF_SIZE];
 	int linktype;
@@ -101,7 +102,7 @@  static int _pcapif_init_rx(pkt_pcap_t *pcap)
 	return 0;
 }
 
-static int _pcapif_init_tx(pkt_pcap_t *pcap)
+static int _pcapif_init_tx(pktio_ops_pcap_data_t *pcap)
 {
 	pcap_t *tx = pcap->rx;
 
@@ -136,10 +137,11 @@  static int _pcapif_init_tx(pkt_pcap_t *pcap)
 static int pcapif_init(odp_pktio_t id ODP_UNUSED, pktio_entry_t *pktio_entry,
 		       const char *devname, odp_pool_t pool)
 {
-	pkt_pcap_t *pcap = &pktio_entry->s.pkt_pcap;
+	pktio_ops_pcap_data_t *pcap =
+		&pktio_entry->ops_data(pcap);
 	int ret;
 
-	memset(pcap, 0, sizeof(pkt_pcap_t));
+	memset(pcap, 0, sizeof(pktio_ops_pcap_data_t));
 	pcap->loop_cnt = 1;
 	pcap->loops = 1;
 	pcap->pool = pool;
@@ -163,7 +165,7 @@  static int pcapif_init(odp_pktio_t id ODP_UNUSED, pktio_entry_t *pktio_entry,
 
 static int pcapif_close(pktio_entry_t *pktio_entry)
 {
-	pkt_pcap_t *pcap = &pktio_entry->s.pkt_pcap;
+	pktio_ops_pcap_data_t *pcap = &pktio_entry->ops_data(pcap);
 
 	if (pcap->tx_dump)
 		pcap_dump_close(pcap->tx_dump);
@@ -181,7 +183,7 @@  static int pcapif_close(pktio_entry_t *pktio_entry)
 	return 0;
 }
 
-static int _pcapif_reopen(pkt_pcap_t *pcap)
+static int _pcapif_reopen(pktio_ops_pcap_data_t *pcap)
 {
 	char errbuf[PCAP_ERRBUF_SIZE];
 
@@ -210,7 +212,8 @@  static int pcapif_recv_pkt(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
 	odp_packet_t pkt;
 	odp_packet_hdr_t *pkt_hdr;
 	uint32_t pkt_len;
-	pkt_pcap_t *pcap = &pktio_entry->s.pkt_pcap;
+	pktio_ops_pcap_data_t *pcap =
+		&pktio_entry->ops_data(pcap);
 	odp_time_t ts_val;
 	odp_time_t *ts = NULL;
 
@@ -270,7 +273,7 @@  static int pcapif_recv_pkt(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
 	return i;
 }
 
-static int _pcapif_dump_pkt(pkt_pcap_t *pcap, odp_packet_t pkt)
+static int _pcapif_dump_pkt(pktio_ops_pcap_data_t *pcap, odp_packet_t pkt)
 {
 	struct pcap_pkthdr hdr;
 
@@ -293,7 +296,8 @@  static int _pcapif_dump_pkt(pkt_pcap_t *pcap, odp_packet_t pkt)
 static int pcapif_send_pkt(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
 			   const odp_packet_t pkts[], int len)
 {
-	pkt_pcap_t *pcap = &pktio_entry->s.pkt_pcap;
+	pktio_ops_pcap_data_t *pcap =
+		&pktio_entry->ops_data(pcap);
 	int i;
 
 	odp_ticketlock_lock(&pktio_entry->s.txl);
@@ -361,7 +365,8 @@  static int pcapif_promisc_mode_set(pktio_entry_t *pktio_entry,
 {
 	char filter_exp[64] = {0};
 	struct bpf_program bpf;
-	pkt_pcap_t *pcap = &pktio_entry->s.pkt_pcap;
+	pktio_ops_pcap_data_t *pcap =
+		&pktio_entry->ops_data(pcap);
 
 	if (!pcap->rx) {
 		pcap->promisc = enable;
@@ -401,7 +406,7 @@  static int pcapif_promisc_mode_set(pktio_entry_t *pktio_entry,
 
 static int pcapif_promisc_mode_get(pktio_entry_t *pktio_entry)
 {
-	return pktio_entry->s.pkt_pcap.promisc;
+	return pktio_entry->ops_data(pcap).promisc;
 }
 
 static int pcapif_stats_reset(pktio_entry_t *pktio_entry)