* Initialise the state to track an accelerator plugin module.
*/
static int init_accelerator(const char *frontend,
- struct netfront_accelerator **result)
+ struct netfront_accelerator **result,
+ struct netfront_accel_hooks *hooks)
{
struct netfront_accelerator *accelerator =
kmalloc(sizeof(struct netfront_accelerator), GFP_KERNEL);
INIT_LIST_HEAD(&accelerator->vif_states);
spin_lock_init(&accelerator->vif_states_lock);
- accelerator->hooks = NULL;
+ accelerator->hooks = hooks;
accelerator->ready_for_probe = 1;
accelerator->need_probe = NULL;
}
/* Couldn't find it, so create a new one and load the module */
- if ((rc = init_accelerator(frontend, &accelerator)) < 0) {
+ if ((rc = init_accelerator(frontend, &accelerator, NULL)) < 0) {
spin_unlock_irqrestore(&accelerators_lock, flags);
return rc;
}
DPRINTK("Couldn't find matching accelerator (%s)\n",
frontend);
- init_accelerator(frontend, &accelerator);
+ init_accelerator(frontend, &accelerator, hooks);
spin_unlock_irqrestore(&accelerators_lock, flags);