Signed-off-by: Nicolas Morey-Chaisemartin <[email protected]>
---
 platform/linux-generic/odp_packet_io.c     |  6 -----
 platform/linux-generic/pktio/socket.c      | 35 ++++++++++++++-----------
 platform/linux-generic/pktio/socket_mmap.c | 42 ++++++++++++++++--------------
 3 files changed, 43 insertions(+), 40 deletions(-)

diff --git a/platform/linux-generic/odp_packet_io.c 
b/platform/linux-generic/odp_packet_io.c
index eb61e3c..669bea8 100644
--- a/platform/linux-generic/odp_packet_io.c
+++ b/platform/linux-generic/odp_packet_io.c
@@ -194,22 +194,16 @@ static int sock_init(pktio_entry_t *entry, const char 
*dev,
        if (getenv("ODP_PKTIO_DISABLE_SOCKET_MMAP") == NULL) {
                entry->s.type = ODP_PKTIO_TYPE_SOCKET_MMAP;
                fd = sock_mmap_setup_pkt(&entry->s.pkt_sock_mmap, dev, pool, 1);
-               if (fd == -1)
-                       sock_mmap_close_pkt(&entry->s.pkt_sock_mmap);
        }
 
        if (fd == -1 && getenv("ODP_PKTIO_DISABLE_SOCKET_MMSG") == NULL) {
                entry->s.type = ODP_PKTIO_TYPE_SOCKET_MMSG;
                fd = sock_setup_pkt(&entry->s.pkt_sock, dev, pool);
-               if (fd == -1)
-                       sock_close_pkt(&entry->s.pkt_sock);
        }
 
        if (fd == -1 && getenv("ODP_PKTIO_DISABLE_SOCKET_BASIC") == NULL) {
                entry->s.type = ODP_PKTIO_TYPE_SOCKET_BASIC;
                fd = sock_setup_pkt(&entry->s.pkt_sock, dev, pool);
-               if (fd == -1)
-                       sock_close_pkt(&entry->s.pkt_sock);
        }
 
        if (fd == -1)
diff --git a/platform/linux-generic/pktio/socket.c 
b/platform/linux-generic/pktio/socket.c
index 9c09867..aaa2c99 100644
--- a/platform/linux-generic/pktio/socket.c
+++ b/platform/linux-generic/pktio/socket.c
@@ -161,6 +161,25 @@ int promisc_mode_get_fd(int fd, const char *name)
  * ODP_PACKET_SOCKET_BASIC:
  * ODP_PACKET_SOCKET_MMSG:
  */
+/*
+ * ODP_PACKET_SOCKET_BASIC:
+ * ODP_PACKET_SOCKET_MMSG:
+ */
+int sock_close_pkt(pkt_sock_t *const pkt_sock)
+{
+       if (pkt_sock->sockfd != -1 && close(pkt_sock->sockfd) != 0) {
+               __odp_errno = errno;
+               ODP_ERR("close(sockfd): %s\n", strerror(errno));
+               return -1;
+       }
+
+       return 0;
+}
+
+/*
+ * ODP_PACKET_SOCKET_BASIC:
+ * ODP_PACKET_SOCKET_MMSG:
+ */
 int sock_setup_pkt(pkt_sock_t *const pkt_sock, const char *netdev,
                   odp_pool_t pool)
 {
@@ -226,27 +245,13 @@ int sock_setup_pkt(pkt_sock_t *const pkt_sock, const char 
*netdev,
 
 error:
        __odp_errno = errno;
+       sock_close_pkt(pkt_sock);
 
        return -1;
 }
 
 /*
  * ODP_PACKET_SOCKET_BASIC:
- * ODP_PACKET_SOCKET_MMSG:
- */
-int sock_close_pkt(pkt_sock_t *const pkt_sock)
-{
-       if (pkt_sock->sockfd != -1 && close(pkt_sock->sockfd) != 0) {
-               __odp_errno = errno;
-               ODP_ERR("close(sockfd): %s\n", strerror(errno));
-               return -1;
-       }
-
-       return 0;
-}
-
-/*
- * ODP_PACKET_SOCKET_BASIC:
  */
 int sock_basic_recv_pkt(pkt_sock_t *const pkt_sock,
                        odp_packet_t pkt_table[], unsigned len)
diff --git a/platform/linux-generic/pktio/socket_mmap.c 
b/platform/linux-generic/pktio/socket_mmap.c
index 8eb22a2..ae2602f 100644
--- a/platform/linux-generic/pktio/socket_mmap.c
+++ b/platform/linux-generic/pktio/socket_mmap.c
@@ -406,6 +406,18 @@ static int mmap_store_hw_addr(pkt_sock_mmap_t *const 
pkt_sock,
        return 0;
 }
 
+int sock_mmap_close_pkt(pkt_sock_mmap_t *const pkt_sock)
+{
+       mmap_unmap_sock(pkt_sock);
+       if (pkt_sock->sockfd != -1 && close(pkt_sock->sockfd) != 0) {
+               __odp_errno = errno;
+               ODP_ERR("close(sockfd): %s\n", strerror(errno));
+               return -1;
+       }
+
+       return 0;
+}
+
 int sock_mmap_setup_pkt(pkt_sock_mmap_t *const pkt_sock, const char *netdev,
                        odp_pool_t pool, int fanout)
 {
@@ -423,57 +435,49 @@ int sock_mmap_setup_pkt(pkt_sock_mmap_t *const pkt_sock, 
const char *netdev,
        pkt_sock->pool = pool;
        pkt_sock->sockfd = mmap_pkt_socket();
        if (pkt_sock->sockfd == -1)
-               return -1;
+               goto error;
 
        ret = mmap_bind_sock(pkt_sock, netdev);
        if (ret != 0)
-               return -1;
+               goto error;
 
        ret = mmap_setup_ring(pkt_sock->sockfd, &pkt_sock->tx_ring,
                              PACKET_TX_RING, pool, fanout);
        if (ret != 0)
-               return -1;
+               goto error;
 
        ret = mmap_setup_ring(pkt_sock->sockfd, &pkt_sock->rx_ring,
                              PACKET_RX_RING, pool, fanout);
        if (ret != 0)
-               return -1;
+               goto error;
 
        ret = mmap_sock(pkt_sock);
        if (ret != 0)
-               return -1;
+               goto error;
 
        ret = mmap_store_hw_addr(pkt_sock, netdev);
        if (ret != 0)
-               return -1;
+               goto error;
 
        if_idx = if_nametoindex(netdev);
        if (if_idx == 0) {
                __odp_errno = errno;
                ODP_ERR("if_nametoindex(): %s\n", strerror(errno));
-               return -1;
+               goto error;
        }
 
        pkt_sock->fanout = fanout;
        if (fanout) {
                ret = set_pkt_sock_fanout_mmap(pkt_sock, if_idx);
                if (ret != 0)
-                       return -1;
+                       goto error;
        }
 
        return pkt_sock->sockfd;
-}
 
-int sock_mmap_close_pkt(pkt_sock_mmap_t *const pkt_sock)
-{
-       mmap_unmap_sock(pkt_sock);
-       if (pkt_sock->sockfd != -1 && close(pkt_sock->sockfd) != 0) {
-               __odp_errno = errno;
-               ODP_ERR("close(sockfd): %s\n", strerror(errno));
-               return -1;
-       }
-
-       return 0;
+error:
+       sock_mmap_close_pkt(pkt_sock);
+       return -1;
 }
 
 int sock_mmap_recv_pkt(pkt_sock_mmap_t *const pkt_sock,
-- 
2.4.5.3.g4915f6f


_______________________________________________
lng-odp mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to