--- /dev/null
+diff --git a/net/bridge/br_sysfs_br.c b/net/bridge/br_sysfs_br.c
+index 158dee8..2fa3bd9 100644
+--- a/net/bridge/br_sysfs_br.c
++++ b/net/bridge/br_sysfs_br.c
+@@ -344,6 +344,23 @@ static ssize_t store_flush(struct device *d,
+ }
+ static DEVICE_ATTR(flush, S_IWUSR, NULL, store_flush);
+
++static int set_link_state(struct net_bridge *br, unsigned long val)
++{
++ if (val)
++ netif_carrier_on(br->dev);
++ else
++ netif_carrier_off(br->dev);
++ return 0;
++}
++
++static ssize_t store_link_state(struct device *d,
++ struct device_attribute *attr,
++ const char *buf, size_t len)
++{
++ return store_bridge_parm(d, buf, len, set_link_state);
++}
++static DEVICE_ATTR(link_state, S_IWUSR, NULL, store_link_state);
++
+ static struct attribute *bridge_attrs[] = {
+ &dev_attr_forward_delay.attr,
+ &dev_attr_hello_time.attr,
+@@ -363,6 +380,7 @@ static struct attribute *bridge_attrs[] = {
+ &dev_attr_gc_timer.attr,
+ &dev_attr_group_addr.attr,
+ &dev_attr_flush.attr,
++ &dev_attr_link_state.attr,
+ NULL
+ };
+