Lines Matching defs:ndev
329 linuxkpi_netif_napi_add(struct net_device *ndev, struct napi_struct *napi,
333 napi->dev = ndev;
342 NAPI_LOCK(ndev);
343 TAILQ_INSERT_TAIL(&ndev->napi_head, napi, entry);
344 NAPI_UNLOCK(ndev);
346 /* Anything else to do on the ndev? */
353 struct net_device *ndev;
355 ndev = napi->dev;
356 NAPI_LOCK_ASSERT(ndev);
359 TAILQ_REMOVE(&ndev->napi_head, napi, entry);
360 while (taskqueue_cancel(ndev->napi_tq, &napi->napi_task, NULL) != 0)
361 taskqueue_drain(ndev->napi_tq, &napi->napi_task);
367 struct net_device *ndev;
369 ndev = napi->dev;
370 NAPI_LOCK(ndev);
372 NAPI_UNLOCK(ndev);
378 linuxkpi_init_dummy_netdev(struct net_device *ndev)
381 memset(ndev, 0, sizeof(*ndev));
383 ndev->reg_state = NETREG_DUMMY;
384 NAPI_LOCK_INIT(ndev);
385 TAILQ_INIT(&ndev->napi_head);
388 ndev->napi_tq = taskqueue_create("tq_ndev_napi", M_WAITOK,
389 taskqueue_thread_enqueue, &ndev->napi_tq);
391 (void) taskqueue_start_threads(&ndev->napi_tq, 1, PWAIT,
392 "ndev napi taskq");
399 struct net_device *ndev;
401 ndev = malloc(sizeof(*ndev) + len, M_NETDEV, M_NOWAIT);
402 if (ndev == NULL)
403 return (ndev);
406 linuxkpi_init_dummy_netdev(ndev);
408 strlcpy(ndev->name, name, sizeof(*ndev->name));
413 setup_func(ndev);
415 return (ndev);
419 linuxkpi_free_netdev(struct net_device *ndev)
423 NAPI_LOCK(ndev);
424 TAILQ_FOREACH_SAFE(napi, &ndev->napi_head, entry, temp) {
427 NAPI_UNLOCK(ndev);
429 taskqueue_free(ndev->napi_tq);
430 ndev->napi_tq = NULL;
431 NAPI_LOCK_DESTROY(ndev);
435 free(ndev, M_NETDEV);