- * At some point during translation, the code recognizes the need for
- * recirculation. For example, recirculation is necessary when, after
- * popping the last MPLS label, an action or a match tries to examine or
- * modify a field that has been newly revealed following the MPLS label.
+ * - "Recirculation", where the translation process discovers that it
+ * doesn't have enough information to complete translation without
+ * actually executing the actions that have already been translated,
+ * which provides the additionally needed information. In these
+ * situations, translation freezes translation and assigns the frozen
+ * data a unique "recirculation ID", which it associates with the data
+ * in a table in userspace (see ofproto-dpif-rid.h). It also adds a
+ * OVS_ACTION_ATTR_RECIRC action specifying that ID to the datapath
+ * actions. When a packet hits that action, the datapath looks its
+ * flow up again using the ID. If there's a miss, it comes back to
+ * userspace, which find the recirculation table entry for the ID,
+ * thaws the associated frozen data, and continues translation from
+ * that point given the additional information that is now known.