C specification defines minimum int size to be 16 bits,
which would lead to maximum MTU value of 32767. This may not
be enough for some link layers (e.g. ATM, virtual
interfaces).

Reviewed-by: Petri Savolainen <[email protected]>
Signed-off-by: Matias Elo <[email protected]>
---
 include/odp/api/spec/packet_io.h                        |  4 ++--
 platform/linux-generic/include/odp_packet_io_internal.h |  2 +-
 platform/linux-generic/include/odp_packet_socket.h      |  2 +-
 platform/linux-generic/odp_packet_io.c                  | 10 +++++-----
 platform/linux-generic/pktio/ipc.c                      |  2 +-
 platform/linux-generic/pktio/loop.c                     |  2 +-
 platform/linux-generic/pktio/netmap.c                   |  8 ++++----
 platform/linux-generic/pktio/pcap.c                     |  2 +-
 platform/linux-generic/pktio/socket.c                   |  6 +++---
 platform/linux-generic/pktio/socket_mmap.c              |  2 +-
 platform/linux-generic/pktio/tap.c                      |  9 +++++----
 test/validation/pktio/pktio.c                           |  9 +++++----
 12 files changed, 30 insertions(+), 28 deletions(-)

diff --git a/include/odp/api/spec/packet_io.h b/include/odp/api/spec/packet_io.h
index 7b88902..295a0d7 100644
--- a/include/odp/api/spec/packet_io.h
+++ b/include/odp/api/spec/packet_io.h
@@ -530,9 +530,9 @@ int odp_pktout_send(odp_pktout_queue_t queue, odp_packet_t 
packets[], int num);
  * @param[in] pktio  Packet IO handle.
  *
  * @return MTU value on success
- * @retval <0 on failure
+ * @retval 0 on failure
  */
-int odp_pktio_mtu(odp_pktio_t pktio);
+uint32_t odp_pktio_mtu(odp_pktio_t pktio);
 
 /**
  * Enable/Disable promiscuous mode on a packet IO interface.
diff --git a/platform/linux-generic/include/odp_packet_io_internal.h 
b/platform/linux-generic/include/odp_packet_io_internal.h
index 0a4a55b..5cbf9a6 100644
--- a/platform/linux-generic/include/odp_packet_io_internal.h
+++ b/platform/linux-generic/include/odp_packet_io_internal.h
@@ -185,7 +185,7 @@ typedef struct pktio_if_ops {
                    unsigned len);
        int (*send)(pktio_entry_t *pktio_entry, odp_packet_t pkt_table[],
                    unsigned len);
-       int (*mtu_get)(pktio_entry_t *pktio_entry);
+       uint32_t (*mtu_get)(pktio_entry_t *pktio_entry);
        int (*promisc_mode_set)(pktio_entry_t *pktio_entry,  int enable);
        int (*promisc_mode_get)(pktio_entry_t *pktio_entry);
        int (*mac_get)(pktio_entry_t *pktio_entry, void *mac_addr);
diff --git a/platform/linux-generic/include/odp_packet_socket.h 
b/platform/linux-generic/include/odp_packet_socket.h
index 08ffc6a..bc83e80 100644
--- a/platform/linux-generic/include/odp_packet_socket.h
+++ b/platform/linux-generic/include/odp_packet_socket.h
@@ -105,7 +105,7 @@ int mac_addr_get_fd(int fd, const char *name, unsigned char 
mac_dst[]);
 /**
  * Read the MTU from a packet socket
  */
-int mtu_get_fd(int fd, const char *name);
+uint32_t mtu_get_fd(int fd, const char *name);
 
 /**
  * Enable/Disable promisc mode for a packet socket
diff --git a/platform/linux-generic/odp_packet_io.c 
b/platform/linux-generic/odp_packet_io.c
index 14191df..6641c5a 100644
--- a/platform/linux-generic/odp_packet_io.c
+++ b/platform/linux-generic/odp_packet_io.c
@@ -654,15 +654,15 @@ int pktin_poll(pktio_entry_t *entry, int num_queue, int 
index[])
        return 0;
 }
 
-int odp_pktio_mtu(odp_pktio_t id)
+uint32_t odp_pktio_mtu(odp_pktio_t id)
 {
        pktio_entry_t *entry;
-       int ret = -1;
+       uint32_t ret = 0;
 
        entry = get_pktio_entry(id);
        if (entry == NULL) {
                ODP_DBG("pktio entry %d does not exist\n", id);
-               return -1;
+               return 0;
        }
 
        lock_entry(entry);
@@ -670,7 +670,7 @@ int odp_pktio_mtu(odp_pktio_t id)
        if (odp_unlikely(is_free(entry))) {
                unlock_entry(entry);
                ODP_DBG("already freed pktio\n");
-               return -1;
+               return 0;
        }
 
        if (entry->s.ops->mtu_get)
@@ -872,7 +872,7 @@ void odp_pktio_print(odp_pktio_t id)
                        "  mac          %02x:%02x:%02x:%02x:%02x:%02x\n",
                        addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]);
        len += snprintf(&str[len], n - len,
-                       "  mtu          %d\n", odp_pktio_mtu(id));
+                       "  mtu          %" PRIu32 "\n", odp_pktio_mtu(id));
        len += snprintf(&str[len], n - len,
                        "  promisc      %s\n",
                        odp_pktio_promisc_mode(id) ? "yes" : "no");
diff --git a/platform/linux-generic/pktio/ipc.c 
b/platform/linux-generic/pktio/ipc.c
index 08a7934..ad8dc55 100644
--- a/platform/linux-generic/pktio/ipc.c
+++ b/platform/linux-generic/pktio/ipc.c
@@ -641,7 +641,7 @@ static int ipc_pktio_send(pktio_entry_t *pktio_entry, 
odp_packet_t pkt_table[],
        return ret;
 }
 
-static int ipc_mtu_get(pktio_entry_t *pktio_entry ODP_UNUSED)
+static uint32_t ipc_mtu_get(pktio_entry_t *pktio_entry ODP_UNUSED)
 {
        /* mtu not limited, pool settings are used. */
        return (9 * 1024);
diff --git a/platform/linux-generic/pktio/loop.c 
b/platform/linux-generic/pktio/loop.c
index b603593..7609a85 100644
--- a/platform/linux-generic/pktio/loop.c
+++ b/platform/linux-generic/pktio/loop.c
@@ -121,7 +121,7 @@ static int loopback_send(pktio_entry_t *pktio_entry, 
odp_packet_t pkt_tbl[],
        return ret;
 }
 
-static int loopback_mtu_get(pktio_entry_t *pktio_entry ODP_UNUSED)
+static uint32_t loopback_mtu_get(pktio_entry_t *pktio_entry ODP_UNUSED)
 {
        /* the loopback interface imposes no maximum transmit size limit */
        return INT_MAX;
diff --git a/platform/linux-generic/pktio/netmap.c 
b/platform/linux-generic/pktio/netmap.c
index 19a4d9e..e1d597e 100644
--- a/platform/linux-generic/pktio/netmap.c
+++ b/platform/linux-generic/pktio/netmap.c
@@ -280,8 +280,8 @@ static int netmap_open(odp_pktio_t id ODP_UNUSED, 
pktio_entry_t *pktio_entry,
        int i;
        int err;
        int sockfd;
-       int mtu;
        const char *prefix;
+       uint32_t mtu;
        uint32_t buf_size;
        pkt_netmap_t *pkt_nm = &pktio_entry->s.pkt_nm;
        struct nm_desc *desc;
@@ -380,12 +380,12 @@ static int netmap_open(odp_pktio_t id ODP_UNUSED, 
pktio_entry_t *pktio_entry,
        /* Use either interface MTU (+ ethernet header length) or netmap buffer
         * size as MTU, whichever is smaller. */
        mtu = mtu_get_fd(pktio_entry->s.pkt_nm.sockfd, pkt_nm->if_name);
-       if (mtu < 0) {
+       if (mtu == 0) {
                ODP_ERR("Unable to read interface MTU\n");
                goto error;
        }
        mtu += ODPH_ETHHDR_LEN;
-       pkt_nm->mtu = ((uint32_t)mtu < buf_size) ? (uint32_t)mtu : buf_size;
+       pkt_nm->mtu = (mtu < buf_size) ? mtu : buf_size;
 
        /* Check if RSS is supported. If not, set 'max_input_queues' to 1. */
        if (rss_conf_get_supported_fd(sockfd, netdev, &hash_proto) == 0) {
@@ -815,7 +815,7 @@ static int netmap_mac_addr_get(pktio_entry_t *pktio_entry, 
void *mac_addr)
        return ETH_ALEN;
 }
 
-static int netmap_mtu_get(pktio_entry_t *pktio_entry)
+static uint32_t netmap_mtu_get(pktio_entry_t *pktio_entry)
 {
        return pktio_entry->s.pkt_nm.mtu;
 }
diff --git a/platform/linux-generic/pktio/pcap.c 
b/platform/linux-generic/pktio/pcap.c
index 3d7b29b..5383ee6 100644
--- a/platform/linux-generic/pktio/pcap.c
+++ b/platform/linux-generic/pktio/pcap.c
@@ -318,7 +318,7 @@ static int pcapif_send_pkt(pktio_entry_t *pktio_entry, 
odp_packet_t pkts[],
        return i;
 }
 
-static int pcapif_mtu_get(pktio_entry_t *pktio_entry ODP_UNUSED)
+static uint32_t pcapif_mtu_get(pktio_entry_t *pktio_entry ODP_UNUSED)
 {
        return PKTIO_PCAP_MTU;
 }
diff --git a/platform/linux-generic/pktio/socket.c 
b/platform/linux-generic/pktio/socket.c
index 610d7f2..d860bca 100644
--- a/platform/linux-generic/pktio/socket.c
+++ b/platform/linux-generic/pktio/socket.c
@@ -123,7 +123,7 @@ int mac_addr_get_fd(int fd, const char *name, unsigned char 
mac_dst[])
  * ODP_PACKET_SOCKET_MMAP:
  * ODP_PACKET_NETMAP:
  */
-int mtu_get_fd(int fd, const char *name)
+uint32_t mtu_get_fd(int fd, const char *name)
 {
        struct ifreq ifr;
        int ret;
@@ -134,7 +134,7 @@ int mtu_get_fd(int fd, const char *name)
                __odp_errno = errno;
                ODP_DBG("ioctl(SIOCGIFMTU): %s: \"%s\".\n", strerror(errno),
                        ifr.ifr_name);
-               return -1;
+               return 0;
        }
        return ifr.ifr_mtu;
 }
@@ -772,7 +772,7 @@ static int sock_mmsg_send(pktio_entry_t *pktio_entry,
 /*
  * ODP_PACKET_SOCKET_MMSG:
  */
-static int sock_mtu_get(pktio_entry_t *pktio_entry)
+static uint32_t 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 07d7c1e..abc15f3 100644
--- a/platform/linux-generic/pktio/socket_mmap.c
+++ b/platform/linux-generic/pktio/socket_mmap.c
@@ -550,7 +550,7 @@ static int sock_mmap_send(pktio_entry_t *pktio_entry,
                              pkt_table, len);
 }
 
-static int sock_mmap_mtu_get(pktio_entry_t *pktio_entry)
+static uint32_t sock_mmap_mtu_get(pktio_entry_t *pktio_entry)
 {
        return mtu_get_fd(pktio_entry->s.pkt_sock_mmap.sockfd,
                          pktio_entry->s.name);
diff --git a/platform/linux-generic/pktio/tap.c 
b/platform/linux-generic/pktio/tap.c
index 47b2178..c895878 100644
--- a/platform/linux-generic/pktio/tap.c
+++ b/platform/linux-generic/pktio/tap.c
@@ -59,7 +59,8 @@ static int tap_pktio_open(odp_pktio_t id ODP_UNUSED,
                          pktio_entry_t *pktio_entry,
                          const char *devname, odp_pool_t pool)
 {
-       int fd, skfd, flags, mtu;
+       int fd, skfd, flags;
+       uint32_t mtu;
        struct ifreq ifr;
        pkt_tap_t *tap = &pktio_entry->s.pkt_tap;
 
@@ -123,7 +124,7 @@ static int tap_pktio_open(odp_pktio_t id ODP_UNUSED,
        }
 
        mtu = mtu_get_fd(skfd, devname + 4);
-       if (mtu < 0) {
+       if (mtu == 0) {
                __odp_errno = errno;
                ODP_ERR("mtu_get_fd failed: %s\n", strerror(errno));
                goto sock_err;
@@ -278,9 +279,9 @@ static int tap_pktio_send(pktio_entry_t *pktio_entry, 
odp_packet_t pkts[],
        return i;
 }
 
-static int tap_mtu_get(pktio_entry_t *pktio_entry)
+static uint32_t tap_mtu_get(pktio_entry_t *pktio_entry)
 {
-       int ret;
+       uint32_t ret;
 
        ret =  mtu_get_fd(pktio_entry->s.pkt_tap.skfd,
                          pktio_entry->s.name + 4);
diff --git a/test/validation/pktio/pktio.c b/test/validation/pktio/pktio.c
index 0910cef..fc5018d 100644
--- a/test/validation/pktio/pktio.c
+++ b/test/validation/pktio/pktio.c
@@ -729,7 +729,7 @@ void pktio_test_jumbo(void)
 void pktio_test_mtu(void)
 {
        int ret;
-       int mtu;
+       uint32_t mtu;
 
        odp_pktio_t pktio = create_pktio(0, ODP_PKTIN_MODE_SCHED,
                                         ODP_PKTOUT_MODE_DIRECT);
@@ -738,7 +738,7 @@ void pktio_test_mtu(void)
        mtu = odp_pktio_mtu(pktio);
        CU_ASSERT(mtu > 0);
 
-       printf(" %d ",  mtu);
+       printf(" %" PRIu32 " ",  mtu);
 
        ret = odp_pktio_close(pktio);
        CU_ASSERT(ret == 0);
@@ -1350,7 +1350,7 @@ void pktio_test_start_stop(void)
 int pktio_check_send_failure(void)
 {
        odp_pktio_t pktio_tx;
-       int mtu;
+       uint32_t mtu;
        odp_pktio_param_t pktio_param;
        int iface_idx = 0;
        const char *iface = iface_name[iface_idx];
@@ -1381,7 +1381,8 @@ void pktio_test_send_failure(void)
        odp_pktio_t pktio_tx, pktio_rx;
        odp_packet_t pkt_tbl[TX_BATCH_LEN];
        uint32_t pkt_seq[TX_BATCH_LEN];
-       int ret, mtu, i, alloc_pkts;
+       int ret, i, alloc_pkts;
+       uint32_t mtu;
        odp_pool_param_t pool_params;
        odp_pool_t pkt_pool;
        int long_pkt_idx = TX_BATCH_LEN / 2;
-- 
1.9.1

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

Reply via email to