On Fri, 16 Apr 2021 13:44:56 -0700 Tony Nguyen wrote: > + bool is_failed; > + int i; > + > + do { > + is_failed = false; > + for (i = hw->mac.mta_reg_count - 1; i >= 0; i--) { > + if (array_rd32(E1000_MTA, i) != hw->mac.mta_shadow[i]) { > + is_failed = true; > + array_wr32(E1000_MTA, i, hw->mac.mta_shadow[i]); > + wrfl(); > + break; > + } > + } > + } while (is_failed);
Looks like a potential infinite loop on persistent failure. Also you don't need "is_failed", you can use while (i >= 0), or assign i = hw->mac.mta_reg_count, or consider using a goto.