break;
}
ib_device_put(&rdev->ibdev);
- smp_mb__before_atomic();
- atomic_dec(&rdev->sched_count);
exit:
put_device(&rdev->ibdev.dev);
kfree(re_work);
break;
case NETDEV_UNREGISTER:
- /* netdev notifier will call NETDEV_UNREGISTER again later since
- * we are still holding the reference to the netdev
- */
- if (atomic_read(&rdev->sched_count) > 0)
- goto exit;
ib_unregister_device_queued(&rdev->ibdev);
break;
re_work->vlan_dev = (real_dev == netdev ?
NULL : netdev);
INIT_WORK(&re_work->work, bnxt_re_task);
- atomic_inc(&rdev->sched_count);
queue_work(bnxt_re_wq, &re_work->work);
}
}