diff --git a/package/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/340-gluon-mesh-batman-adv-core-mesh-on-lan b/package/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/340-gluon-mesh-batman-adv-core-mesh-on-lan
index cbc9cd947a0e4526fad7b26af6a10c8444be4b33..99ca421323fcb523028a82f6823794ed17f48d45 100755
--- a/package/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/340-gluon-mesh-batman-adv-core-mesh-on-lan
+++ b/package/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/340-gluon-mesh-batman-adv-core-mesh-on-lan
@@ -7,7 +7,21 @@ local sysconfig = require 'gluon.sysconfig'
 local uci = require('luci.model.uci').cursor()
 local lutil = require 'luci.util'
 
-if sysconfig.lan_ifname and not uci:get('network', 'mesh_lan') then
+if not sysconfig.lan_ifname then
+  os.exit(0)
+end
+
+uci:section('network', 'interface', 'mesh_lan', {
+  ifname  = sysconfig.lan_ifname,
+  type    = 'bridge',
+  igmp_snooping = 0,
+  proto   = 'batadv',
+  mesh    = 'bat0',
+  mesh_no_rebroadcast = '1',
+  macaddr = util.generate_mac(6),
+})
+
+if uci:get('network', 'mesh_lan', 'auto') == nil then
   local enable = site.mesh_on_lan
 
   if enable then
@@ -15,22 +29,15 @@ if sysconfig.lan_ifname and not uci:get('network', 'mesh_lan') then
 
     if interfaces then
       for _, lanif in ipairs(lutil.split(sysconfig.lan_ifname, ' ')) do
-	if lutil.contains(interfaces, lanif) then
-	  enable = false
-	  break
+        if lutil.contains(interfaces, lanif) then
+          enable = false
+          break
         end
       end
     end
   end
 
-  uci:section('network', 'interface', 'mesh_lan',
-              { ifname  = sysconfig.lan_ifname
-              , proto   = 'batadv'
-              , mesh    = 'bat0'
-              , mesh_no_rebroadcast = '1'
-              , macaddr = util.generate_mac(6)
-              , auto    = enable and 1 or 0
-  })
-
-  uci:save('network')
+  uci:set('network', 'mesh_lan', 'auto', enable and 1 or 0)
 end
+
+uci:save('network')