link) {
spin_lock_irqsave(&accelerator->vif_states_lock, flags);
- BUG_ON(vif_state->hooks == NULL);
- hooks = vif_state->hooks;
- accelerator_remove_single_hook(accelerator, vif_state);
+ if(vif_state->hooks) {
+ hooks = vif_state->hooks;
+ accelerator_remove_single_hook(accelerator, vif_state);
+
+ /* Last chance to get statistics from the accelerator */
+ hooks->get_stats(vif_state->np->netdev,
+ &vif_state->np->stats);
+ }
spin_unlock_irqrestore(&accelerator->vif_states_lock, flags);
- /* Last chance to get statistics from the accelerator */
- hooks->get_stats(vif_state->np->netdev, &vif_state->np->stats);
- hooks->remove(vif_state->dev);
+ accelerator->hooks->remove(vif_state->dev);
}
accelerator->hooks = NULL;
/* Last chance to get statistics from the accelerator */
hooks->get_stats(np->netdev, &np->stats);
+ }
+ if (accelerator->hooks) {
spin_unlock_irqrestore(&accelerator->vif_states_lock,
*lock_flags);
- rc = hooks->remove(dev);
+ rc = accelerator->hooks->remove(dev);
spin_lock_irqsave(&accelerator->vif_states_lock, *lock_flags);
}
-
return rc;
}