/*++ Name: netvsc_drv_init() Desc: NetVsc driver initialization --*/ int netvsc_drv_init(PFN_DRIVERINITIALIZE pfn_drv_init) { int ret = 0; NETVSC_DRIVER_OBJECT *net_drv_obj=&g_netvsc_drv.drv_obj; struct driver_context *drv_ctx=&g_netvsc_drv.drv_ctx; DPRINT_ENTER(NETVSC_DRV); vmbus_get_interface(&net_drv_obj->Base.VmbusChannelInterface); net_drv_obj->RingBufferSize = netvsc_ringbuffer_size; /* Fixme: warning: assignment from incompatible pointer type */ net_drv_obj->OnReceiveCallback = netvsc_recv_callback; net_drv_obj->OnLinkStatusChanged = netvsc_linkstatus_callback; // Callback to client driver to complete the initialization pfn_drv_init(&net_drv_obj->Base); memcpy(&drv_ctx->class_id, &net_drv_obj->Base.deviceType, sizeof(GUID)); // The driver belongs to vmbus vmbus_child_driver_register(drv_ctx); DPRINT_EXIT(NETVSC_DRV); return ret; }
static int netvsc_drv_init(int (*drv_init)(struct hv_driver *drv)) { struct netvsc_driver *net_drv_obj = &g_netvsc_drv.drv_obj; struct driver_context *drv_ctx = &g_netvsc_drv.drv_ctx; int ret; DPRINT_ENTER(NETVSC_DRV); vmbus_get_interface(&net_drv_obj->Base.VmbusChannelInterface); net_drv_obj->RingBufferSize = ring_size * PAGE_SIZE; net_drv_obj->OnReceiveCallback = netvsc_recv_callback; net_drv_obj->OnLinkStatusChanged = netvsc_linkstatus_callback; /* Callback to client driver to complete the initialization */ drv_init(&net_drv_obj->Base); drv_ctx->driver.name = net_drv_obj->Base.name; memcpy(&drv_ctx->class_id, &net_drv_obj->Base.deviceType, sizeof(struct hv_guid)); drv_ctx->probe = netvsc_probe; drv_ctx->remove = netvsc_remove; /* The driver belongs to vmbus */ ret = vmbus_child_driver_register(drv_ctx); DPRINT_EXIT(NETVSC_DRV); return ret; }
static int netvsc_drv_init(int (*drv_init)(struct hv_driver *drv)) { struct netvsc_driver *net_drv_obj = &g_netvsc_drv.drv_obj; struct driver_context *drv_ctx = &g_netvsc_drv.drv_ctx; int ret; net_drv_obj->ring_buf_size = ring_size * PAGE_SIZE; net_drv_obj->recv_cb = netvsc_recv_callback; net_drv_obj->link_status_change = netvsc_linkstatus_callback; /* Callback to client driver to complete the initialization */ drv_init(&net_drv_obj->base); drv_ctx->driver.name = net_drv_obj->base.name; memcpy(&drv_ctx->class_id, &net_drv_obj->base.deviceType, sizeof(struct hv_guid)); drv_ctx->probe = netvsc_probe; drv_ctx->remove = netvsc_remove; /* The driver belongs to vmbus */ ret = vmbus_child_driver_register(drv_ctx); return ret; }