@@ -191,12 +191,12 @@ noinst_HEADERS = \
${srcdir}/include/odp_packet_internal.h \
${top_srcdir}/platform/linux-generic/include/odp_pktio_ops_ipc.h \
${top_srcdir}/platform/linux-generic/include/odp_pktio_ops_subsystem.h \
+ ${top_srcdir}/platform/linux-generic/include/odp_pktio_ops_socket.h \
${top_srcdir}/platform/linux-generic/include/odp_pktio_ops_loopback.h \
${top_srcdir}/platform/linux-generic/include/odp_name_table_internal.h \
${srcdir}/include/odp_packet_io_internal.h \
${srcdir}/include/odp_errno_define.h \
${top_srcdir}/platform/linux-generic/include/odp_packet_io_ring_internal.h \
- ${top_srcdir}/platform/linux-generic/include/odp_packet_socket.h \
${top_srcdir}/platform/linux-generic/include/odp_pkt_queue_internal.h \
${srcdir}/include/odp_pool_internal.h \
${top_srcdir}/platform/linux-generic/include/odp_pool_subsystem.h \
@@ -187,12 +187,12 @@ noinst_HEADERS = \
${srcdir}/include/odp_packet_io_internal.h \
${srcdir}/include/odp_packet_io_ring_internal.h \
${srcdir}/include/odp_packet_dpdk.h \
- ${srcdir}/include/odp_packet_socket.h \
${srcdir}/include/odp_packet_tap.h \
${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_socket.h \
${srcdir}/include/odp_pktio_ops_subsystem.h \
${srcdir}/include/odp_pkt_queue_internal.h \
${srcdir}/include/odp_pool_internal.h \
@@ -31,7 +31,6 @@ extern "C" {
#include <net/if.h>
#define PKTIO_MAX_QUEUES 64
-#include <odp_packet_socket.h>
#include <odp_packet_tap.h>
#include <odp_packet_dpdk.h>
@@ -59,9 +58,6 @@ struct pktio_entry {
int cls_enabled; /**< is classifier enabled */
odp_pktio_t handle; /**< pktio handle */
union {
- pkt_sock_t pkt_sock; /**< using socket API for IO */
- pkt_sock_mmap_t pkt_sock_mmap; /**< using socket mmap
- * API for IO */
pkt_dpdk_t pkt_dpdk; /**< using DPDK for IO */
pkt_tap_t pkt_tap; /**< using TAP for IO */
};
similarity index 96%
rename from platform/linux-generic/include/odp_packet_socket.h
rename to platform/linux-generic/include/odp_pktio_ops_socket.h
@@ -5,8 +5,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
-#ifndef ODP_PACKET_SOCKET_H
-#define ODP_PACKET_SOCKET_H
+#ifndef ODP_PKTIO_OPS_SOCKET_H_
+#define ODP_PKTIO_OPS_SOCKET_H_
#include <linux/if_packet.h>
#include <linux/if_ether.h>
@@ -42,7 +42,7 @@ typedef struct {
odp_pool_t pool; /**< pool to alloc packets from */
uint32_t mtu; /**< maximum transmission unit */
unsigned char if_mac[ETH_ALEN]; /**< IF eth mac addr */
-} pkt_sock_t;
+} pktio_ops_socket_data_t;
/** packet mmap ring */
struct ring {
@@ -79,7 +79,7 @@ typedef struct {
unsigned char if_mac[ETH_ALEN];
struct sockaddr_ll ll;
int fanout;
-} pkt_sock_mmap_t;
+} pktio_ops_socket_mmap_data_t;
static inline void
ethaddr_copy(unsigned char mac_dst[], unsigned char mac_src[])
@@ -83,6 +83,7 @@ typedef ODP_MODULE_CLASS(pktio_ops) {
#include <odp_pktio_ops_loopback.h>
#include <odp_pktio_ops_netmap.h>
#include <odp_pktio_ops_pcap.h>
+#include <odp_pktio_ops_socket.h>
/* Per implementation private data
* TODO: refactory each implementation to hide it internally
@@ -92,6 +93,8 @@ typedef union {
pktio_ops_loopback_data_t loopback;
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_data_t;
/* Extract pktio ops data from pktio entry structure */
@@ -13,7 +13,6 @@
#include <odp/api/spinlock.h>
#include <odp/api/ticketlock.h>
#include <odp/api/shared_memory.h>
-#include <odp_packet_socket.h>
#include <odp_config_internal.h>
#include <odp_queue_if.h>
#include <odp_schedule_if.h>
@@ -13,8 +13,8 @@
#include <net/if.h>
#include <odp_api.h>
-#include <odp_packet_socket.h>
#include <odp_debug_internal.h>
+#include <odp_packet_io_internal.h>
static struct ethtool_gstrings *get_stringset(int fd, struct ifreq *ifr)
{
@@ -12,7 +12,6 @@
#include <odp/api/packet.h>
#include <odp_packet_io_internal.h>
-#include <odp_packet_socket.h>
#include <odp_debug_internal.h>
#include <protocols/eth.h>
@@ -33,7 +33,6 @@
#include <linux/sockios.h>
#include <odp_api.h>
-#include <odp_packet_socket.h>
#include <odp_packet_internal.h>
#include <odp_packet_io_internal.h>
#include <odp_align_internal.h>
@@ -455,7 +454,9 @@ void rss_conf_print(const odp_pktin_hash_proto_t *hash_proto)
*/
static int sock_close(pktio_entry_t *pktio_entry)
{
- pkt_sock_t *pkt_sock = &pktio_entry->s.pkt_sock;
+ pktio_ops_socket_data_t *pkt_sock =
+ &pktio_entry->ops_data(socket);
+
if (pkt_sock->sockfd != -1 && close(pkt_sock->sockfd) != 0) {
__odp_errno = errno;
ODP_ERR("close(sockfd): %s\n", strerror(errno));
@@ -477,7 +478,8 @@ static int sock_setup_pkt(pktio_entry_t *pktio_entry, const char *netdev,
struct ifreq ethreq;
struct sockaddr_ll sa_ll;
char shm_name[ODP_SHM_NAME_LEN];
- pkt_sock_t *pkt_sock = &pktio_entry->s.pkt_sock;
+ pktio_ops_socket_data_t *pkt_sock =
+ &pktio_entry->ops_data(socket);
odp_pktio_stats_t cur_stats;
/* Init pktio entry */
@@ -530,7 +532,7 @@ static int sock_setup_pkt(pktio_entry_t *pktio_entry, const char *netdev,
goto error;
}
- err = ethtool_stats_get_fd(pktio_entry->s.pkt_sock.sockfd,
+ err = ethtool_stats_get_fd(pkt_sock->sockfd,
pktio_entry->s.name,
&cur_stats);
if (err != 0) {
@@ -601,7 +603,8 @@ static uint32_t _rx_pkt_to_iovec(odp_packet_t pkt,
static int sock_mmsg_recv(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
odp_packet_t pkt_table[], int len)
{
- pkt_sock_t *pkt_sock = &pktio_entry->s.pkt_sock;
+ pktio_ops_socket_data_t *pkt_sock =
+ &pktio_entry->ops_data(socket);
odp_pool_t pool = pkt_sock->pool;
odp_time_t ts_val;
odp_time_t *ts = NULL;
@@ -716,7 +719,8 @@ static uint32_t _tx_pkt_to_iovec(odp_packet_t pkt,
static int sock_mmsg_send(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
const odp_packet_t pkt_table[], int len)
{
- pkt_sock_t *pkt_sock = &pktio_entry->s.pkt_sock;
+ pktio_ops_socket_data_t *pkt_sock =
+ &pktio_entry->ops_data(socket);
struct mmsghdr msgvec[len];
struct iovec iovecs[len][MAX_SEGS];
int ret;
@@ -762,7 +766,7 @@ 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->s.pkt_sock.mtu;
+ return pktio_entry->ops_data(socket).mtu;
}
/*
@@ -771,7 +775,7 @@ 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->s.pkt_sock.if_mac, ETH_ALEN);
+ memcpy(mac_addr, pktio_entry->ops_data(socket).if_mac, ETH_ALEN);
return ETH_ALEN;
}
@@ -781,7 +785,7 @@ 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->s.pkt_sock.sockfd,
+ return promisc_mode_set_fd(pktio_entry->ops_data(socket).sockfd,
pktio_entry->s.name, enable);
}
@@ -790,13 +794,13 @@ 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->s.pkt_sock.sockfd,
+ return promisc_mode_get_fd(pktio_entry->ops_data(socket).sockfd,
pktio_entry->s.name);
}
static int sock_link_status(pktio_entry_t *pktio_entry)
{
- return link_status_fd(pktio_entry->s.pkt_sock.sockfd,
+ return link_status_fd(pktio_entry->ops_data(socket).sockfd,
pktio_entry->s.name);
}
@@ -825,7 +829,7 @@ static int sock_stats(pktio_entry_t *pktio_entry,
return sock_stats_fd(pktio_entry,
stats,
- pktio_entry->s.pkt_sock.sockfd);
+ pktio_entry->ops_data(socket).sockfd);
}
static int sock_stats_reset(pktio_entry_t *pktio_entry)
@@ -837,7 +841,7 @@ static int sock_stats_reset(pktio_entry_t *pktio_entry)
}
return sock_stats_reset_fd(pktio_entry,
- pktio_entry->s.pkt_sock.sockfd);
+ pktio_entry->ops_data(socket).sockfd);
}
static int sock_init_global(void)
@@ -23,7 +23,6 @@
#include <errno.h>
#include <odp_api.h>
-#include <odp_packet_socket.h>
#include <odp_packet_internal.h>
#include <odp_packet_io_internal.h>
#include <odp_debug_internal.h>
@@ -37,8 +36,8 @@
static int disable_pktio; /** !0 this pktio disabled, 0 enabled */
-static int set_pkt_sock_fanout_mmap(pkt_sock_mmap_t *const pkt_sock,
- int sock_group_idx)
+static int set_pkt_sock_fanout_mmap(
+ pktio_ops_socket_mmap_data_t *const pkt_sock, int sock_group_idx)
{
int sockfd = pkt_sock->sockfd;
int val;
@@ -144,7 +143,7 @@ static uint8_t *pkt_mmap_vlan_insert(uint8_t *l2_hdr_ptr,
}
static inline unsigned pkt_mmap_v2_rx(pktio_entry_t *pktio_entry,
- pkt_sock_mmap_t *pkt_sock,
+ pktio_ops_socket_mmap_data_t *pkt_sock,
odp_packet_t pkt_table[], unsigned len,
unsigned char if_mac[])
{
@@ -411,7 +410,7 @@ static int mmap_setup_ring(int sock, struct ring *ring, int type,
return 0;
}
-static int mmap_sock(pkt_sock_mmap_t *pkt_sock)
+static int mmap_sock(pktio_ops_socket_mmap_data_t *pkt_sock)
{
int i;
int sock = pkt_sock->sockfd;
@@ -455,14 +454,15 @@ static int mmap_sock(pkt_sock_mmap_t *pkt_sock)
return 0;
}
-static int mmap_unmap_sock(pkt_sock_mmap_t *pkt_sock)
+static int mmap_unmap_sock(pktio_ops_socket_mmap_data_t *pkt_sock)
{
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)
+static int mmap_bind_sock(pktio_ops_socket_mmap_data_t *pkt_sock,
+ const char *netdev)
{
int ret;
@@ -486,7 +486,8 @@ 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;
+ pktio_ops_socket_mmap_data_t
+ *const pkt_sock = &entry->ops_data(mmap);
int ret;
ret = mmap_unmap_sock(pkt_sock);
@@ -515,7 +516,8 @@ static int sock_mmap_open(odp_pktio_t id ODP_UNUSED,
if (disable_pktio)
return -1;
- pkt_sock_mmap_t *const pkt_sock = &pktio_entry->s.pkt_sock_mmap;
+ pktio_ops_socket_mmap_data_t
+ *const pkt_sock = &pktio_entry->ops_data(mmap);
int fanout = 1;
/* Init pktio entry */
@@ -570,7 +572,7 @@ static int sock_mmap_open(odp_pktio_t id ODP_UNUSED,
goto error;
}
- ret = ethtool_stats_get_fd(pktio_entry->s.pkt_sock_mmap.sockfd,
+ ret = ethtool_stats_get_fd(pkt_sock->sockfd,
pktio_entry->s.name,
&cur_stats);
if (ret != 0) {
@@ -586,8 +588,7 @@ static int sock_mmap_open(odp_pktio_t id ODP_UNUSED,
pktio_entry->s.stats_type = STATS_ETHTOOL;
}
- ret = sock_stats_reset_fd(pktio_entry,
- pktio_entry->s.pkt_sock_mmap.sockfd);
+ ret = sock_stats_reset_fd(pktio_entry, pkt_sock->sockfd);
if (ret != 0)
goto error;
@@ -601,7 +602,8 @@ static int sock_mmap_open(odp_pktio_t id ODP_UNUSED,
static int sock_mmap_recv(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
odp_packet_t pkt_table[], int len)
{
- pkt_sock_mmap_t *const pkt_sock = &pktio_entry->s.pkt_sock_mmap;
+ pktio_ops_socket_mmap_data_t
+ *const pkt_sock = &pktio_entry->ops_data(mmap);
int ret;
odp_ticketlock_lock(&pktio_entry->s.rxl);
@@ -616,7 +618,8 @@ static int sock_mmap_send(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
const odp_packet_t pkt_table[], int len)
{
int ret;
- pkt_sock_mmap_t *const pkt_sock = &pktio_entry->s.pkt_sock_mmap;
+ pktio_ops_socket_mmap_data_t
+ *const pkt_sock = &pktio_entry->ops_data(mmap);
odp_ticketlock_lock(&pktio_entry->s.txl);
ret = pkt_mmap_v2_tx(pkt_sock->tx_ring.sock, &pkt_sock->tx_ring,
@@ -628,32 +631,32 @@ 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->s.pkt_sock_mmap.sockfd,
+ return mtu_get_fd(pktio_entry->ops_data(mmap).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->s.pkt_sock_mmap.if_mac, ETH_ALEN);
+ memcpy(mac_addr, pktio_entry->ops_data(mmap).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->s.pkt_sock_mmap.sockfd,
+ return promisc_mode_set_fd(pktio_entry->ops_data(mmap).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->s.pkt_sock_mmap.sockfd,
+ return promisc_mode_get_fd(pktio_entry->ops_data(mmap).sockfd,
pktio_entry->s.name);
}
static int sock_mmap_link_status(pktio_entry_t *pktio_entry)
{
- return link_status_fd(pktio_entry->s.pkt_sock_mmap.sockfd,
+ return link_status_fd(pktio_entry->ops_data(mmap).sockfd,
pktio_entry->s.name);
}
@@ -682,7 +685,7 @@ static int sock_mmap_stats(pktio_entry_t *pktio_entry,
return sock_stats_fd(pktio_entry,
stats,
- pktio_entry->s.pkt_sock_mmap.sockfd);
+ pktio_entry->ops_data(mmap).sockfd);
}
static int sock_mmap_stats_reset(pktio_entry_t *pktio_entry)
@@ -694,7 +697,7 @@ static int sock_mmap_stats_reset(pktio_entry_t *pktio_entry)
}
return sock_stats_reset_fd(pktio_entry,
- pktio_entry->s.pkt_sock_mmap.sockfd);
+ pktio_entry->ops_data(mmap).sockfd);
}
static int sock_mmap_init_global(void)
@@ -40,7 +40,6 @@
#include <linux/if_tun.h>
#include <odp_api.h>
-#include <odp_packet_socket.h>
#include <odp_packet_internal.h>
#include <odp_packet_io_internal.h>
#include <odp_classification_internal.h>