[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[UNIKRAFT PATCH v3 08/16] plat/tap: Get/Set MTU



The patch implements mtu get and set functions.

Signed-off-by: Sharan Santhanam <sharan.santhanam@xxxxxxxxx>
---
 plat/drivers/tap/tap.c | 28 +++++++++++++++++++++++++---
 plat/linuxu/tap_io.c   |  2 ++
 2 files changed, 27 insertions(+), 3 deletions(-)

diff --git a/plat/drivers/tap/tap.c b/plat/drivers/tap/tap.c
index 6b059943..f5b32339 100644
--- a/plat/drivers/tap/tap.c
+++ b/plat/drivers/tap/tap.c
@@ -327,15 +327,37 @@ static unsigned int tap_netdev_promisc_get(struct 
uk_netdev *n)
 
 static __u16 tap_netdev_mtu_get(struct uk_netdev *n)
 {
+       int rc = 0;
+       struct tap_net_dev *tdev;
+       struct uk_ifreq ifrq = {0};
+
        UK_ASSERT(n);
-       return 0;
+       tdev = to_tapnetdev(n);
+       snprintf(ifrq.ifr_name, sizeof(ifrq.ifr_name), "%s", tdev->name);
+
+       rc = tap_netif_configure(tdev->ctrl_sock, UK_SIOCGIFMTU, &ifrq);
+       if (rc < 0) {
+               uk_pr_err(DRIVER_NAME": Failed(%d) to get the mtu\n", rc);
+               return rc;
+       }
+
+       return ifrq.ifr_mtu;
 }
 
-static int tap_netdev_mtu_set(struct uk_netdev *n,  __u16 mtu __unused)
+static int tap_netdev_mtu_set(struct uk_netdev *n,  __u16 mtu)
 {
-       int rc = -EINVAL;
+       int rc = 0;
+       struct tap_net_dev *tdev;
+       struct uk_ifreq ifrq = {0};
 
        UK_ASSERT(n);
+       tdev = to_tapnetdev(n);
+       snprintf(ifrq.ifr_name, sizeof(ifrq.ifr_name), "%s", tdev->name);
+
+       ifrq.ifr_mtu = mtu;
+       rc = tap_netif_configure(tdev->ctrl_sock, UK_SIOCSIFMTU, &ifrq);
+       if (rc < 0)
+               uk_pr_err(DRIVER_NAME": Failed(%d) to set the mtu\n", rc);
 
        return rc;
 }
diff --git a/plat/linuxu/tap_io.c b/plat/linuxu/tap_io.c
index fe1f52a6..896b8cc2 100644
--- a/plat/linuxu/tap_io.c
+++ b/plat/linuxu/tap_io.c
@@ -69,6 +69,8 @@ int tap_netif_configure(int fd, __u32 request, void *arg)
        case UK_SIOCGIFINDEX:
        case UK_SIOCGIFHWADDR:
        case UK_SIOCSIFHWADDR:
+       case UK_SIOCSIFMTU:
+       case UK_SIOCGIFMTU:
        case UK_SIOCBRADDIF:
                break;
        default:
-- 
2.20.1




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.