On Fri, 2021-04-16 at 14:12 -0700, Jakub Kicinski wrote:
> 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.
We will make a follow on patch to address these issues.
Thanks,
Tony