This function is trivial now but in an upcoming commit it will need to
become slightly more complicated, which makes writing it as a function
worthwhile.
Until then, this commit simplifies the logic, which was redundant since
the 'deletions' hmap always points into the 'pending' list anyway.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
+static bool
+any_pending_ops(const struct ofproto *p)
+{
+ return !list_is_empty(&p->pending);
+}
+
int
ofproto_run(struct ofproto *p)
{
int
ofproto_run(struct ofproto *p)
{
case S_EVICT:
connmgr_run(p->connmgr, NULL);
ofproto_evict(p);
case S_EVICT:
connmgr_run(p->connmgr, NULL);
ofproto_evict(p);
- if (list_is_empty(&p->pending) && hmap_is_empty(&p->deletions)) {
+ if (!any_pending_ops(p)) {
p->state = S_OPENFLOW;
}
break;
p->state = S_OPENFLOW;
}
break;
case S_FLUSH:
connmgr_run(p->connmgr, NULL);
ofproto_flush__(p);
case S_FLUSH:
connmgr_run(p->connmgr, NULL);
ofproto_flush__(p);
- if (list_is_empty(&p->pending) && hmap_is_empty(&p->deletions)) {
+ if (!any_pending_ops(p)) {
connmgr_flushed(p->connmgr);
p->state = S_OPENFLOW;
}
connmgr_flushed(p->connmgr);
p->state = S_OPENFLOW;
}
case S_EVICT:
case S_FLUSH:
connmgr_wait(p->connmgr, false);
case S_EVICT:
case S_FLUSH:
connmgr_wait(p->connmgr, false);
- if (list_is_empty(&p->pending) && hmap_is_empty(&p->deletions)) {
+ if (!any_pending_ops(p)) {
poll_immediate_wake();
}
break;
poll_immediate_wake();
}
break;