+static void
+dpif_linux_push_port(struct dpif_linux *dp, uint16_t port)
+{
+ if (port < LRU_MAX_PORTS && !bitmap_is_set(dp->lru_bitmap, port)) {
+ bitmap_set1(dp->lru_bitmap, port);
+ dp->lru_ports[dp->lru_head++ & LRU_MASK] = port;
+ }
+}
+
+static uint32_t
+dpif_linux_pop_port(struct dpif_linux *dp)
+{
+ uint16_t port;
+
+ if (dp->lru_head == dp->lru_tail) {
+ return UINT32_MAX;
+ }
+
+ port = dp->lru_ports[dp->lru_tail++ & LRU_MASK];
+ bitmap_set0(dp->lru_bitmap, port);
+ return port;
+}
+