{
        struct rmnet_priv *priv = netdev_priv(dev);
        struct net_device *real_dev;
-       struct rmnet_endpoint *ep;
        struct rmnet_port *port;
        u16 mux_id;
 
 
        if (data[IFLA_RMNET_MUX_ID]) {
                mux_id = nla_get_u16(data[IFLA_RMNET_MUX_ID]);
-               if (rmnet_get_endpoint(port, mux_id)) {
-                       NL_SET_ERR_MSG_MOD(extack, "MUX ID already exists");
-                       return -EINVAL;
-               }
-               ep = rmnet_get_endpoint(port, priv->mux_id);
-               if (!ep)
-                       return -ENODEV;
 
-               hlist_del_init_rcu(&ep->hlnode);
-               hlist_add_head_rcu(&ep->hlnode, &port->muxed_ep[mux_id]);
+               if (mux_id != priv->mux_id) {
+                       struct rmnet_endpoint *ep;
+
+                       ep = rmnet_get_endpoint(port, priv->mux_id);
+                       if (!ep)
+                               return -ENODEV;
 
-               ep->mux_id = mux_id;
-               priv->mux_id = mux_id;
+                       if (rmnet_get_endpoint(port, mux_id)) {
+                               NL_SET_ERR_MSG_MOD(extack,
+                                                  "MUX ID already exists");
+                               return -EINVAL;
+                       }
+
+                       hlist_del_init_rcu(&ep->hlnode);
+                       hlist_add_head_rcu(&ep->hlnode,
+                                          &port->muxed_ep[mux_id]);
+
+                       ep->mux_id = mux_id;
+                       priv->mux_id = mux_id;
+               }
        }
 
        if (data[IFLA_RMNET_FLAGS]) {