Add temporarly function definitions to odp_packet_io_internal.h instead of odp_packet_socket.h to obtain pktio_entry_t definition
Signed-off-by: Nicolas Morey-Chaisemartin <[email protected]> --- .../linux-generic/include/odp_packet_io_internal.h | 4 +++ platform/linux-generic/include/odp_packet_socket.h | 5 ++++ platform/linux-generic/odp_packet_io.c | 30 ++++++++++------------ platform/linux-generic/pktio/socket.c | 29 +++++++++++++++++++++ platform/linux-generic/pktio/socket_mmap.c | 7 +++++ 5 files changed, 59 insertions(+), 16 deletions(-) diff --git a/platform/linux-generic/include/odp_packet_io_internal.h b/platform/linux-generic/include/odp_packet_io_internal.h index 7eba06b..a9d9fb9 100644 --- a/platform/linux-generic/include/odp_packet_io_internal.h +++ b/platform/linux-generic/include/odp_packet_io_internal.h @@ -99,6 +99,10 @@ int loopback_mac_addr_get(pktio_entry_t *pktio_entry, void *mac_addr); int loopback_promisc_mode_set(pktio_entry_t *pktio_entry, odp_bool_t enable); int loopback_promisc_mode_get(pktio_entry_t *pktio_entry); +int sock_mtu_get(pktio_entry_t *pktio_entry); + +int sock_mmap_mtu_get(pktio_entry_t *pktio_entry); + #ifdef __cplusplus } #endif diff --git a/platform/linux-generic/include/odp_packet_socket.h b/platform/linux-generic/include/odp_packet_socket.h index 2cdb124..b7ee1a5 100644 --- a/platform/linux-generic/include/odp_packet_socket.h +++ b/platform/linux-generic/include/odp_packet_socket.h @@ -98,6 +98,11 @@ ethaddrs_equal(unsigned char mac_a[], unsigned char mac_b[]) } /** + * Read the MTU from a packet socket + */ +int mtu_get_fd(int fd, const char *name); + +/** * Open & configure a raw packet socket */ int sock_setup_pkt(pkt_sock_t * const pkt_sock, const char *netdev, diff --git a/platform/linux-generic/odp_packet_io.c b/platform/linux-generic/odp_packet_io.c index 3b8eee2..c0befff 100644 --- a/platform/linux-generic/odp_packet_io.c +++ b/platform/linux-generic/odp_packet_io.c @@ -687,8 +687,6 @@ static int sockfd_from_pktio_entry(pktio_entry_t *entry) int odp_pktio_mtu(odp_pktio_t id) { pktio_entry_t *entry; - int sockfd; - struct ifreq ifr; int ret; entry = get_pktio_entry(id); @@ -705,23 +703,23 @@ int odp_pktio_mtu(odp_pktio_t id) return -1; } - if (entry->s.type == ODP_PKTIO_TYPE_LOOPBACK) { - unlock_entry(entry); - return loopback_mtu_get(entry); - } - - sockfd = sockfd_from_pktio_entry(entry); - snprintf(ifr.ifr_name, IF_NAMESIZE, "%s", entry->s.name); - - ret = ioctl(sockfd, SIOCGIFMTU, &ifr); - if (ret < 0) { - ODP_DBG("ioctl SIOCGIFMTU error\n"); - unlock_entry(entry); - return -1; + switch (entry->s.type) { + case ODP_PKTIO_TYPE_LOOPBACK: + ret = loopback_mtu_get(entry); + break; + case ODP_PKTIO_TYPE_SOCKET_BASIC: + case ODP_PKTIO_TYPE_SOCKET_MMSG: + ret = sock_mtu_get(entry); + break; + case ODP_PKTIO_TYPE_SOCKET_MMAP: + ret = sock_mmap_mtu_get(entry); + break; + default: + ODP_ABORT("Wrong socket type %d\n", entry->s.type); } unlock_entry(entry); - return ifr.ifr_mtu; + return ret; } int odp_pktio_promisc_mode_set(odp_pktio_t id, odp_bool_t enable) diff --git a/platform/linux-generic/pktio/socket.c b/platform/linux-generic/pktio/socket.c index 971d057..2a6ec23 100644 --- a/platform/linux-generic/pktio/socket.c +++ b/platform/linux-generic/pktio/socket.c @@ -35,6 +35,7 @@ #include <odp.h> #include <odp_packet_socket.h> #include <odp_packet_internal.h> +#include <odp_packet_io_internal.h> #include <odp_align_internal.h> #include <odp_debug_internal.h> #include <odp/hints.h> @@ -90,6 +91,25 @@ int sendmmsg(int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags) /* * ODP_PACKET_SOCKET_BASIC: * ODP_PACKET_SOCKET_MMSG: + * ODP_PACKET_SOCKET_MMAP: + */ +int mtu_get_fd(int fd, const char *name) +{ + struct ifreq ifr; + int ret; + + snprintf(ifr.ifr_name, IF_NAMESIZE, "%s", name); + ret = ioctl(fd, SIOCGIFMTU, &ifr); + if (ret < 0) { + ODP_DBG("ioctl SIOCGIFMTU error\n"); + return -1; + } + return ifr.ifr_mtu; +} + +/* + * 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) @@ -383,3 +403,12 @@ int sock_mmsg_send_pkt(pkt_sock_t *const pkt_sock, return len; } + +/* + * ODP_PACKET_SOCKET_BASIC: + * ODP_PACKET_SOCKET_MMSG: + */ +int sock_mtu_get(pktio_entry_t *pktio_entry) +{ + return mtu_get_fd(pktio_entry->s.pkt_sock.sockfd, pktio_entry->s.name); +} diff --git a/platform/linux-generic/pktio/socket_mmap.c b/platform/linux-generic/pktio/socket_mmap.c index 84a3a06..13bdbe5 100644 --- a/platform/linux-generic/pktio/socket_mmap.c +++ b/platform/linux-generic/pktio/socket_mmap.c @@ -25,6 +25,7 @@ #include <odp.h> #include <odp_packet_socket.h> #include <odp_packet_internal.h> +#include <odp_packet_io_internal.h> #include <odp_debug_internal.h> #include <odp/hints.h> @@ -489,3 +490,9 @@ int sock_mmap_send_pkt(pkt_sock_mmap_t *const pkt_sock, return pkt_mmap_v2_tx(pkt_sock->tx_ring.sock, &pkt_sock->tx_ring, pkt_table, len); } + +int sock_mmap_mtu_get(pktio_entry_t *pktio_entry) +{ + return mtu_get_fd(pktio_entry->s.pkt_sock_mmap.sockfd, + pktio_entry->s.name); +} -- 2.4.5.3.g4915f6f _______________________________________________ lng-odp mailing list [email protected] https://lists.linaro.org/mailman/listinfo/lng-odp
