[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |