File fix-send-link-down-events.patch of Package vmware-host-modules

diff -ruNp a/vmnet-only/driver.c b/vmnet-only/driver.c
--- a/vmnet-only/driver.c
+++ b/vmnet-only/driver.c
@@ -143,6 +143,10 @@ module_param(vnet_max_qlen, uint, 0);
 MODULE_PARM_DESC(vnet_max_qlen, "Maximum queue length of the vmnet, default is"
                  " 1024, maximum is 1024");
 
+bool send_link_down_events = true;
+module_param(send_link_down_events, bool, 0644);
+MODULE_PARM_DESC(send_link_down_events, "Send link down events, default is 1 (on)");
+
 /*
  *----------------------------------------------------------------------
  *
diff -ruNp a/vmnet-only/userif.c b/vmnet-only/userif.c
--- a/vmnet-only/userif.c
+++ b/vmnet-only/userif.c
@@ -76,6 +76,7 @@ static void VNetUserIfUnsetupNotify(VNet
 static int  VNetUserIfSetupNotify(VNetUserIF *userIf, VNet_Notify *vn);
 static int  VNetUserIfSetUplinkState(VNetPort *port, uint8 linkUp);
 extern unsigned int  vnet_max_qlen;
+extern bool send_link_down_events;
 
 #if COMPAT_LINUX_VERSION_CHECK_LT(3, 2, 0)
 #   define skb_frag_page(frag) (frag)->page
@@ -1025,6 +1026,12 @@ VNetUserIfSetUplinkState(VNetPort *port,
    userIf = (VNetUserIF *)port->jack.private;
    hubJack = port->jack.peer;
 
+   if (!send_link_down_events && !linkUp) {
+      LOG(0, (KERN_NOTICE "userif-%d: link down event not sent.\n",
+              userIf->port.id));
+      return 0;
+   }
+
    if (port->jack.state == FALSE || hubJack == NULL) {
       return -EINVAL;
    }
openSUSE Build Service is sponsored by