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.