static void br_mrp_del_impl(struct net_bridge *br, struct br_mrp *mrp)
 {
        struct net_bridge_port *p;
+       u8 state;
 
        /* Stop sending MRP_Test frames */
        cancel_delayed_work_sync(&mrp->test_work);
        p = rtnl_dereference(mrp->p_port);
        if (p) {
                spin_lock_bh(&br->lock);
-               p->state = BR_STATE_FORWARDING;
+               state = netif_running(br->dev) ?
+                               BR_STATE_FORWARDING : BR_STATE_DISABLED;
+               p->state = state;
                p->flags &= ~BR_MRP_AWARE;
                spin_unlock_bh(&br->lock);
-               br_mrp_port_switchdev_set_state(p, BR_STATE_FORWARDING);
+               br_mrp_port_switchdev_set_state(p, state);
                rcu_assign_pointer(mrp->p_port, NULL);
        }
 
        p = rtnl_dereference(mrp->s_port);
        if (p) {
                spin_lock_bh(&br->lock);
-               p->state = BR_STATE_FORWARDING;
+               state = netif_running(br->dev) ?
+                               BR_STATE_FORWARDING : BR_STATE_DISABLED;
+               p->state = state;
                p->flags &= ~BR_MRP_AWARE;
                spin_unlock_bh(&br->lock);
-               br_mrp_port_switchdev_set_state(p, BR_STATE_FORWARDING);
+               br_mrp_port_switchdev_set_state(p, state);
                rcu_assign_pointer(mrp->s_port, NULL);
        }