From: Shannon Nelson <snel...@pensando.io>
Date: Mon, 22 Jul 2019 14:40:15 -0700

> +     if (in_interrupt()) {
> +             work = kzalloc(sizeof(*work), GFP_ATOMIC);
> +             if (!work) {
> +                     netdev_err(lif->netdev, "%s OOM\n", __func__);
> +                     return -ENOMEM;
> +             }
> +             work->type = add ? DW_TYPE_RX_ADDR_ADD : DW_TYPE_RX_ADDR_DEL;
> +             memcpy(work->addr, addr, ETH_ALEN);
> +             netdev_dbg(lif->netdev, "deferred: rx_filter %s %pM\n",
> +                        add ? "add" : "del", addr);
> +             ionic_lif_deferred_enqueue(&lif->deferred, work);
> +     } else {
> +             netdev_dbg(lif->netdev, "rx_filter %s %pM\n",
> +                        add ? "add" : "del", addr);
> +             if (add)
> +                     return ionic_lif_addr_add(lif, addr);
> +             else
> +                     return ionic_lif_addr_del(lif, addr);
> +     }

I don't know about this.

Generally interface address changes are expected to be synchronous.

Reply via email to