static int lbs_init_adapter(struct lbs_private *priv) { int ret; lbs_deb_enter(LBS_DEB_MAIN); memset(priv->current_addr, 0xff, ETH_ALEN); priv->connect_status = LBS_DISCONNECTED; priv->channel = DEFAULT_AD_HOC_CHANNEL; priv->mac_control = CMD_ACT_MAC_RX_ON | CMD_ACT_MAC_TX_ON; priv->radio_on = 1; priv->psmode = LBS802_11POWERMODECAM; priv->psstate = PS_STATE_FULL_POWER; priv->is_deep_sleep = 0; priv->is_auto_deep_sleep_enabled = 0; priv->deep_sleep_required = 0; priv->wakeup_dev_required = 0; init_waitqueue_head(&priv->ds_awake_q); init_waitqueue_head(&priv->scan_q); priv->authtype_auto = 1; priv->is_host_sleep_configured = 0; priv->is_host_sleep_activated = 0; init_waitqueue_head(&priv->host_sleep_q); init_waitqueue_head(&priv->fw_waitq); mutex_init(&priv->lock); setup_timer(&priv->command_timer, lbs_cmd_timeout_handler, (unsigned long)priv); setup_timer(&priv->tx_lockup_timer, lbs_tx_lockup_handler, (unsigned long)priv); setup_timer(&priv->auto_deepsleep_timer, auto_deepsleep_timer_fn, (unsigned long)priv); INIT_LIST_HEAD(&priv->cmdfreeq); INIT_LIST_HEAD(&priv->cmdpendingq); spin_lock_init(&priv->driver_lock); /* Allocate the command buffers */ if (lbs_allocate_cmd_buffer(priv)) { pr_err("Out of memory allocating command buffers\n"); ret = -ENOMEM; goto out; } priv->resp_idx = 0; priv->resp_len[0] = priv->resp_len[1] = 0; /* Create the event FIFO */ ret = kfifo_alloc(&priv->event_fifo, sizeof(u32) * 16, GFP_KERNEL); if (ret) { pr_err("Out of memory allocating event FIFO buffer\n"); goto out; } out: lbs_deb_leave_args(LBS_DEB_MAIN, "ret %d", ret); return ret; }
static int lbs_init_adapter(struct lbs_private *priv) { size_t bufsize; int i, ret = 0; static u8 gnet_bss_desc[MAX_NETWORK_COUNT * sizeof(struct bss_descriptor)]; lbs_deb_enter("enter lbs_init_adapter\n"); /* Allocate buffer to store the BSSID list */ bufsize = MAX_NETWORK_COUNT * sizeof(struct bss_descriptor); /*priv->networks = kzalloc(bufsize, GFP_KERNEL); if (!priv->networks) { lbs_pr_err("Out of memory allocating beacons\n"); ret = -1; goto out; }*/ priv->networks=(struct bss_descriptor *)gnet_bss_desc; memset(priv->networks,0,bufsize); /* Initialize scan result lists */ INIT_LIST_HEAD(&priv->network_free_list);//Initialize scan related list and objects. INIT_LIST_HEAD(&priv->network_list); //Link all bss descriptors into free list. for (i = 0; i < MAX_NETWORK_COUNT; i++) { list_add_tail(&priv->networks[i].list, &priv->network_free_list); } memset(priv->current_addr, 0xff, ETH_ALEN); priv->connect_status = LBS_DISCONNECTED; priv->mesh_connect_status = LBS_DISCONNECTED; priv->secinfo.auth_mode = IW_AUTH_ALG_OPEN_SYSTEM; priv->mode = IW_MODE_INFRA; priv->curbssparams.channel = DEFAULT_AD_HOC_CHANNEL; priv->mac_control = CMD_ACT_MAC_RX_ON | CMD_ACT_MAC_TX_ON; priv->radio_on = 1; priv->enablehwauto = 1; priv->capability = WLAN_CAPABILITY_SHORT_PREAMBLE; priv->psmode = LBS802_11POWERMODECAM; priv->psstate = PS_STATE_FULL_POWER; //mutex_init(&priv->lock); /*setup_timer(&priv->command_timer, command_timer_fn, (unsigned long)priv);*/ INIT_LIST_HEAD(&priv->cmdfreeq); INIT_LIST_HEAD(&priv->cmdpendingq); /*spin_lock_init(&priv->driver_lock); init_waitqueue_head(&priv->cmd_pending);*/ /* Allocate the command buffers */ if (lbs_allocate_cmd_buffer(priv)) { lbs_pr_err("Out of memory allocating command buffers\n"); ret = -ENOMEM; goto out; } priv->resp_idx = 0; priv->resp_len[0] = 0; //Contains the response from hardware. /* Create the event FIFO */ /*priv->event_fifo = kfifo_alloc(sizeof(u32) * 16, GFP_KERNEL, NULL); if (IS_ERR(priv->event_fifo)) { lbs_pr_err("Out of memory allocating event FIFO buffer\n"); ret = -ENOMEM; goto out; }*/ out: lbs_deb_leave_args("leave lbs_init_adapter(ret=%d)\n", ret); return ret; }