From 7bbf6c8a4aebfe33f9bebfe997288c45624d269a Mon Sep 17 00:00:00 2001 From: Bjørn Mork Date: Mon, 28 Mar 2022 11:57:42 +0200 Subject: mm-netlink: only change IFF_UP flag MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This fixes the missing NOARP flag on the second and following VLAN sub-interfaces when multiplexing over the cdc_mbim driver. ifi_change specifies all the flags we want to change. Any listed flag which isn't set in ifi_flags will be cleared by the kernel: if (ifm->ifi_change) flags = (flags & ifm->ifi_change) | (rtnl_dev_get_flags(dev) & ~ifm->ifi_change); Drivers like cdc_mbim set some netdev flags by default, indicating supported or unsupported features. The driver emulates an ethernet netdev but it doesn't implement ARP. Clearing NOARP on cdc_mbim netdevs will block IP transmissions, waiting for an ARP reply we never will receive. Signed-off-by: Bjørn Mork --- src/mm-netlink.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'src/mm-netlink.c') diff --git a/src/mm-netlink.c b/src/mm-netlink.c index 5fd2ab34..40b108d1 100644 --- a/src/mm-netlink.c +++ b/src/mm-netlink.c @@ -136,8 +136,6 @@ netlink_message_new (guint ifindex, hdr->msghdr.nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK; hdr->ifreq.ifi_family = AF_UNSPEC; hdr->ifreq.ifi_index = ifindex; - hdr->ifreq.ifi_flags = 0; - hdr->ifreq.ifi_change = 0xFFFFFFFF; return msg; } @@ -154,7 +152,7 @@ netlink_message_new_setlink (guint ifindex, hdr = netlink_message_header (msg); hdr->ifreq.ifi_flags = up ? IFF_UP : 0; - hdr->ifreq.ifi_change = 0xFFFFFFFF; + hdr->ifreq.ifi_change = IFF_UP; if (mtu) append_netlink_attribute_uint32 (msg, IFLA_MTU, mtu); -- cgit v1.2.3-70-g09d2