i40e: make use of hlist_for_each_entry_continue
authorJacob Keller <jacob.e.keller@intel.com>
Tue, 7 Mar 2017 23:17:52 +0000 (15:17 -0800)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Fri, 24 Mar 2017 04:13:33 +0000 (21:13 -0700)
Replace a complex if->continue->else->break construction in
i40e_next_filter. We can simply use hlist_for_each_entry_continue
instead. This drops a lot of confusing code. The resulting code is much
easier to understand the intention, and follows the more normal pattern
for using hlist loops. We could have also used a break with a "return
next" at the end of the function, instead of return NULL, but the
current implementation is explicitly clear that when you reach the end
of the loop you get a NULL value. The alternative construction is less
clear since the reader would have to know that next is NULL at the end
of the loop.

Change-Id: Ife74ca451dd79d7f0d93c672bd42092d324d4a03
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/i40e/i40e_main.c

index 114481b67ad82d8eb44ed292970ed5c002f3f6b0..1d8febd721ac55fa934ec391cbd8089d249fc162 100644 (file)
@@ -1883,19 +1883,12 @@ static void i40e_undo_add_filter_entries(struct i40e_vsi *vsi,
 static
 struct i40e_new_mac_filter *i40e_next_filter(struct i40e_new_mac_filter *next)
 {
-       while (next) {
-               next = hlist_entry(next->hlist.next,
-                                  typeof(struct i40e_new_mac_filter),
-                                  hlist);
-
-               /* keep going if we found a broadcast filter */
-               if (next && is_broadcast_ether_addr(next->f->macaddr))
-                       continue;
-
-               break;
+       hlist_for_each_entry_continue(next, hlist) {
+               if (!is_broadcast_ether_addr(next->f->macaddr))
+                       return next;
        }
 
-       return next;
+       return NULL;
 }
 
 /**