[CLOUD-DEV,v3,4/9] linux-gen: pktio: socket: use generic pktio_ops data storage

Message ID 1507636815-18816-5-git-send-email-odpbot@yandex.ru
State Superseded
Headers show
Series
  • Cloud dev pktio ops data pr
Related show

Commit Message

Github ODP bot Oct. 10, 2017, noon
From: Bogdan Pricope <bogdan.pricope@linaro.org>


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

---
/** Email created from pull request 196 (bogdanPricope:cloud_dev_pktio_ops_data_pr)
 ** https://github.com/Linaro/odp/pull/196
 ** Patch: https://github.com/Linaro/odp/pull/196.patch
 ** Base sha: 3d3c8f71f39ff139695d6f4b8e5ea17502c5f7cf
 ** Merge commit sha: 2bae88983ff377d83fcf9c99bf5c380275454327
 **/
 .../include/odp_pktio_ops_subsystem.h              |  3 --
 platform/linux-generic/pktio/socket.c              | 47 ++++++++++++++-------
 platform/linux-generic/pktio/socket_mmap.c         | 48 +++++++++++++++-------
 3 files changed, 66 insertions(+), 32 deletions(-)

Patch

diff --git a/platform/linux-generic/include/odp_pktio_ops_subsystem.h b/platform/linux-generic/include/odp_pktio_ops_subsystem.h
index 415b8365f..369d722f0 100644
--- a/platform/linux-generic/include/odp_pktio_ops_subsystem.h
+++ b/platform/linux-generic/include/odp_pktio_ops_subsystem.h
@@ -82,7 +82,6 @@  typedef ODP_MODULE_CLASS(pktio_ops) {
 #include <odp_pktio_ops_ipc.h>
 #include <odp_pktio_ops_netmap.h>
 #include <odp_pktio_ops_pcap.h>
-#include <odp_pktio_ops_socket.h>
 #include <odp_pktio_ops_tap.h>
 
 /* Per implementation private data
@@ -93,8 +92,6 @@  typedef union {
 	pktio_ops_ipc_data_t ipc;
 	pktio_ops_netmap_data_t netmap;
 	pktio_ops_pcap_data_t pcap;
-	pktio_ops_socket_data_t socket;
-	pktio_ops_socket_mmap_data_t mmap;
 	pktio_ops_tap_data_t tap;
 } pktio_ops_data_t;
 
diff --git a/platform/linux-generic/pktio/socket.c b/platform/linux-generic/pktio/socket.c
index 145f56014..4602dda0c 100644
--- a/platform/linux-generic/pktio/socket.c
+++ b/platform/linux-generic/pktio/socket.c
@@ -43,6 +43,7 @@ 
 #include <odp_classification_inlines.h>
 #include <odp_classification_internal.h>
 #include <odp/api/hints.h>
+#include <odp_pktio_ops_socket.h>
 #include <pktio/common.h>
 #include <pktio/ethtool.h>
 
@@ -107,7 +108,7 @@  int sendmmsg(int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags)
 static int sock_close(pktio_entry_t *pktio_entry)
 {
 	pktio_ops_socket_data_t *pkt_sock =
-		&pktio_entry->ops_data(socket);
+		odp_ops_data(pktio_entry, socket);
 
 	if (pkt_sock->sockfd != -1 && close(pkt_sock->sockfd) != 0) {
 		__odp_errno = errno;
@@ -131,7 +132,7 @@  static int sock_setup_pkt(pktio_entry_t *pktio_entry, const char *netdev,
 	struct sockaddr_ll sa_ll;
 	char shm_name[ODP_SHM_NAME_LEN];
 	pktio_ops_socket_data_t *pkt_sock =
-		&pktio_entry->ops_data(socket);
+		odp_ops_data(pktio_entry, socket);
 	odp_pktio_stats_t cur_stats;
 
 	/* Init pktio entry */
@@ -256,7 +257,7 @@  static int sock_mmsg_recv(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
 			  odp_packet_t pkt_table[], int len)
 {
 	pktio_ops_socket_data_t *pkt_sock =
-		&pktio_entry->ops_data(socket);
+		odp_ops_data(pktio_entry, socket);
 	odp_pool_t pool = pkt_sock->pool;
 	odp_time_t ts_val;
 	odp_time_t *ts = NULL;
@@ -372,7 +373,7 @@  static int sock_mmsg_send(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
 			  const odp_packet_t pkt_table[], int len)
 {
 	pktio_ops_socket_data_t *pkt_sock =
-		&pktio_entry->ops_data(socket);
+		odp_ops_data(pktio_entry, socket);
 	struct mmsghdr msgvec[len];
 	struct iovec iovecs[len][MAX_SEGS];
 	int ret;
@@ -418,7 +419,10 @@  static int sock_mmsg_send(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
  */
 static uint32_t sock_mtu_get(pktio_entry_t *pktio_entry)
 {
-	return pktio_entry->ops_data(socket).mtu;
+	pktio_ops_socket_data_t *pkt_sock =
+		odp_ops_data(pktio_entry, socket);
+
+	return pkt_sock->mtu;
 }
 
 /*
@@ -427,7 +431,10 @@  static uint32_t sock_mtu_get(pktio_entry_t *pktio_entry)
 static int sock_mac_addr_get(pktio_entry_t *pktio_entry,
 			     void *mac_addr)
 {
-	memcpy(mac_addr, pktio_entry->ops_data(socket).if_mac, ETH_ALEN);
+	pktio_ops_socket_data_t *pkt_sock =
+		odp_ops_data(pktio_entry, socket);
+
+	memcpy(mac_addr, pkt_sock->if_mac, ETH_ALEN);
 	return ETH_ALEN;
 }
 
@@ -437,7 +444,10 @@  static int sock_mac_addr_get(pktio_entry_t *pktio_entry,
 static int sock_promisc_mode_set(pktio_entry_t *pktio_entry,
 				 odp_bool_t enable)
 {
-	return promisc_mode_set_fd(pktio_entry->ops_data(socket).sockfd,
+	pktio_ops_socket_data_t *pkt_sock =
+		odp_ops_data(pktio_entry, socket);
+
+	return promisc_mode_set_fd(pkt_sock->sockfd,
 				   pktio_entry->s.name, enable);
 }
 
@@ -446,13 +456,19 @@  static int sock_promisc_mode_set(pktio_entry_t *pktio_entry,
  */
 static int sock_promisc_mode_get(pktio_entry_t *pktio_entry)
 {
-	return promisc_mode_get_fd(pktio_entry->ops_data(socket).sockfd,
+	pktio_ops_socket_data_t *pkt_sock =
+		odp_ops_data(pktio_entry, socket);
+
+	return promisc_mode_get_fd(pkt_sock->sockfd,
 				   pktio_entry->s.name);
 }
 
 static int sock_link_status(pktio_entry_t *pktio_entry)
 {
-	return link_status_fd(pktio_entry->ops_data(socket).sockfd,
+	pktio_ops_socket_data_t *pkt_sock =
+		odp_ops_data(pktio_entry, socket);
+
+	return link_status_fd(pkt_sock->sockfd,
 			      pktio_entry->s.name);
 }
 
@@ -474,26 +490,29 @@  static int sock_capability(pktio_entry_t *pktio_entry ODP_UNUSED,
 static int sock_stats(pktio_entry_t *pktio_entry,
 		      odp_pktio_stats_t *stats)
 {
+	pktio_ops_socket_data_t *pkt_sock =
+		odp_ops_data(pktio_entry, socket);
+
 	if (pktio_entry->s.stats_type == STATS_UNSUPPORTED) {
 		memset(stats, 0, sizeof(*stats));
 		return 0;
 	}
 
-	return sock_stats_fd(pktio_entry,
-			     stats,
-			     pktio_entry->ops_data(socket).sockfd);
+	return sock_stats_fd(pktio_entry, stats, pkt_sock->sockfd);
 }
 
 static int sock_stats_reset(pktio_entry_t *pktio_entry)
 {
+	pktio_ops_socket_data_t *pkt_sock =
+		odp_ops_data(pktio_entry, socket);
+
 	if (pktio_entry->s.stats_type == STATS_UNSUPPORTED) {
 		memset(&pktio_entry->s.stats, 0,
 		       sizeof(odp_pktio_stats_t));
 		return 0;
 	}
 
-	return sock_stats_reset_fd(pktio_entry,
-				   pktio_entry->ops_data(socket).sockfd);
+	return sock_stats_reset_fd(pktio_entry, pkt_sock->sockfd);
 }
 
 static int sock_init_global(void)
diff --git a/platform/linux-generic/pktio/socket_mmap.c b/platform/linux-generic/pktio/socket_mmap.c
index c413b1a22..af23f368e 100644
--- a/platform/linux-generic/pktio/socket_mmap.c
+++ b/platform/linux-generic/pktio/socket_mmap.c
@@ -32,6 +32,7 @@ 
 #include <odp_classification_inlines.h>
 #include <odp_classification_internal.h>
 #include <odp/api/hints.h>
+#include <odp_pktio_ops_socket.h>
 #include <pktio/common.h>
 #include <pktio/ethtool.h>
 
@@ -491,7 +492,7 @@  static int mmap_bind_sock(pktio_ops_socket_mmap_data_t *pkt_sock,
 static int sock_mmap_close(pktio_entry_t *entry)
 {
 	pktio_ops_socket_mmap_data_t
-		*const pkt_sock = &entry->ops_data(mmap);
+		*const pkt_sock = odp_ops_data(entry, socket_mmap);
 	int ret;
 
 	ret = mmap_unmap_sock(pkt_sock);
@@ -521,7 +522,7 @@  static int sock_mmap_open(odp_pktio_t id ODP_UNUSED,
 		return -1;
 
 	pktio_ops_socket_mmap_data_t
-		*const pkt_sock = &pktio_entry->ops_data(mmap);
+		*const pkt_sock = odp_ops_data(pktio_entry, socket_mmap);
 	int fanout = 1;
 
 	/* Init pktio entry */
@@ -607,7 +608,7 @@  static int sock_mmap_recv(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
 			  odp_packet_t pkt_table[], int len)
 {
 	pktio_ops_socket_mmap_data_t
-		*const pkt_sock = &pktio_entry->ops_data(mmap);
+		*const pkt_sock = odp_ops_data(pktio_entry, socket_mmap);
 	int ret;
 
 	odp_ticketlock_lock(&pktio_entry->s.rxl);
@@ -623,7 +624,7 @@  static int sock_mmap_send(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
 {
 	int ret;
 	pktio_ops_socket_mmap_data_t
-		*const pkt_sock = &pktio_entry->ops_data(mmap);
+		*const pkt_sock = odp_ops_data(pktio_entry, socket_mmap);
 
 	odp_ticketlock_lock(&pktio_entry->s.txl);
 	ret = pkt_mmap_v2_tx(pkt_sock->tx_ring.sock, &pkt_sock->tx_ring,
@@ -635,33 +636,46 @@  static int sock_mmap_send(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
 
 static uint32_t sock_mmap_mtu_get(pktio_entry_t *pktio_entry)
 {
-	return mtu_get_fd(pktio_entry->ops_data(mmap).sockfd,
-			  pktio_entry->s.name);
+	pktio_ops_socket_mmap_data_t
+		*const pkt_sock = odp_ops_data(pktio_entry, socket_mmap);
+
+	return mtu_get_fd(pkt_sock->sockfd, pktio_entry->s.name);
 }
 
 static int sock_mmap_mac_addr_get(pktio_entry_t *pktio_entry, void *mac_addr)
 {
-	memcpy(mac_addr, pktio_entry->ops_data(mmap).if_mac, ETH_ALEN);
+	pktio_ops_socket_mmap_data_t
+		*const pkt_sock = odp_ops_data(pktio_entry, socket_mmap);
+
+	memcpy(mac_addr, pkt_sock->if_mac, ETH_ALEN);
 	return ETH_ALEN;
 }
 
 static int sock_mmap_promisc_mode_set(pktio_entry_t *pktio_entry,
 				      odp_bool_t enable)
 {
-	return promisc_mode_set_fd(pktio_entry->ops_data(mmap).sockfd,
+	pktio_ops_socket_mmap_data_t
+		*const pkt_sock = odp_ops_data(pktio_entry, socket_mmap);
+
+	return promisc_mode_set_fd(pkt_sock->sockfd,
 				   pktio_entry->s.name, enable);
 }
 
 static int sock_mmap_promisc_mode_get(pktio_entry_t *pktio_entry)
 {
-	return promisc_mode_get_fd(pktio_entry->ops_data(mmap).sockfd,
+	pktio_ops_socket_mmap_data_t
+		*const pkt_sock = odp_ops_data(pktio_entry, socket_mmap);
+
+	return promisc_mode_get_fd(pkt_sock->sockfd,
 				   pktio_entry->s.name);
 }
 
 static int sock_mmap_link_status(pktio_entry_t *pktio_entry)
 {
-	return link_status_fd(pktio_entry->ops_data(mmap).sockfd,
-			      pktio_entry->s.name);
+	pktio_ops_socket_mmap_data_t
+		*const pkt_sock = odp_ops_data(pktio_entry, socket_mmap);
+
+	return link_status_fd(pkt_sock->sockfd, pktio_entry->s.name);
 }
 
 static int sock_mmap_capability(pktio_entry_t *pktio_entry ODP_UNUSED,
@@ -682,26 +696,30 @@  static int sock_mmap_capability(pktio_entry_t *pktio_entry ODP_UNUSED,
 static int sock_mmap_stats(pktio_entry_t *pktio_entry,
 			   odp_pktio_stats_t *stats)
 {
+	pktio_ops_socket_mmap_data_t
+		*const pkt_sock = odp_ops_data(pktio_entry, socket_mmap);
+
 	if (pktio_entry->s.stats_type == STATS_UNSUPPORTED) {
 		memset(stats, 0, sizeof(*stats));
 		return 0;
 	}
 
 	return sock_stats_fd(pktio_entry,
-			     stats,
-			     pktio_entry->ops_data(mmap).sockfd);
+			     stats, pkt_sock->sockfd);
 }
 
 static int sock_mmap_stats_reset(pktio_entry_t *pktio_entry)
 {
+	pktio_ops_socket_mmap_data_t
+		*const pkt_sock = odp_ops_data(pktio_entry, socket_mmap);
+
 	if (pktio_entry->s.stats_type == STATS_UNSUPPORTED) {
 		memset(&pktio_entry->s.stats, 0,
 		       sizeof(odp_pktio_stats_t));
 		return 0;
 	}
 
-	return sock_stats_reset_fd(pktio_entry,
-				   pktio_entry->ops_data(mmap).sockfd);
+	return sock_stats_reset_fd(pktio_entry, pkt_sock->sockfd);
 }
 
 static int sock_mmap_init_global(void)