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;
}