aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-generic/pktio/socket_mmap.c
diff options
context:
space:
mode:
Diffstat (limited to 'platform/linux-generic/pktio/socket_mmap.c')
-rw-r--r--platform/linux-generic/pktio/socket_mmap.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/platform/linux-generic/pktio/socket_mmap.c b/platform/linux-generic/pktio/socket_mmap.c
index 666aae6af..2dba7b08f 100644
--- a/platform/linux-generic/pktio/socket_mmap.c
+++ b/platform/linux-generic/pktio/socket_mmap.c
@@ -231,7 +231,8 @@ static inline unsigned pkt_mmap_v2_rx(pktio_entry_t *pktio_entry,
if (pktio_cls_enabled(pktio_entry))
copy_packet_cls_metadata(&parsed_hdr, hdr);
else
- packet_parse_l2(&hdr->p, pkt_len);
+ packet_parse_layer(hdr,
+ pktio_entry->s.config.parser.layer);
packet_set_ts(hdr, ts);
@@ -454,11 +455,11 @@ static int mmap_sock(pkt_sock_mmap_t *pkt_sock)
return 0;
}
-static void mmap_unmap_sock(pkt_sock_mmap_t *pkt_sock)
+static int mmap_unmap_sock(pkt_sock_mmap_t *pkt_sock)
{
- munmap(pkt_sock->mmap_base, pkt_sock->mmap_len);
free(pkt_sock->rx_ring.rd);
free(pkt_sock->tx_ring.rd);
+ return munmap(pkt_sock->mmap_base, pkt_sock->mmap_len);
}
static int mmap_bind_sock(pkt_sock_mmap_t *pkt_sock, const char *netdev)
@@ -486,8 +487,14 @@ static int mmap_bind_sock(pkt_sock_mmap_t *pkt_sock, const char *netdev)
static int sock_mmap_close(pktio_entry_t *entry)
{
pkt_sock_mmap_t *const pkt_sock = &entry->s.pkt_sock_mmap;
+ int ret;
+
+ ret = mmap_unmap_sock(pkt_sock);
+ if (ret != 0) {
+ ODP_ERR("mmap_unmap_sock() %s\n", strerror(errno));
+ return -1;
+ }
- 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));