aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/mwifiex/init.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/mwifiex/init.c')
-rw-r--r--drivers/net/wireless/mwifiex/init.c31
1 files changed, 13 insertions, 18 deletions
diff --git a/drivers/net/wireless/mwifiex/init.c b/drivers/net/wireless/mwifiex/init.c
index e81bf6ef166..54bb4839b57 100644
--- a/drivers/net/wireless/mwifiex/init.c
+++ b/drivers/net/wireless/mwifiex/init.c
@@ -35,28 +35,24 @@ static int mwifiex_add_bss_prio_tbl(struct mwifiex_private *priv)
35{ 35{
36 struct mwifiex_adapter *adapter = priv->adapter; 36 struct mwifiex_adapter *adapter = priv->adapter;
37 struct mwifiex_bss_prio_node *bss_prio; 37 struct mwifiex_bss_prio_node *bss_prio;
38 struct mwifiex_bss_prio_tbl *tbl = adapter->bss_prio_tbl;
38 unsigned long flags; 39 unsigned long flags;
39 40
40 bss_prio = kzalloc(sizeof(struct mwifiex_bss_prio_node), GFP_KERNEL); 41 bss_prio = kzalloc(sizeof(struct mwifiex_bss_prio_node), GFP_KERNEL);
41 if (!bss_prio) { 42 if (!bss_prio) {
42 dev_err(adapter->dev, "%s: failed to alloc bss_prio\n", 43 dev_err(adapter->dev, "%s: failed to alloc bss_prio\n",
43 __func__); 44 __func__);
44 return -ENOMEM; 45 return -ENOMEM;
45 } 46 }
46 47
47 bss_prio->priv = priv; 48 bss_prio->priv = priv;
48 INIT_LIST_HEAD(&bss_prio->list); 49 INIT_LIST_HEAD(&bss_prio->list);
49 if (!adapter->bss_prio_tbl[priv->bss_priority].bss_prio_cur) 50 if (!tbl[priv->bss_priority].bss_prio_cur)
50 adapter->bss_prio_tbl[priv->bss_priority].bss_prio_cur = 51 tbl[priv->bss_priority].bss_prio_cur = bss_prio;
51 bss_prio; 52
52 53 spin_lock_irqsave(&tbl[priv->bss_priority].bss_prio_lock, flags);
53 spin_lock_irqsave(&adapter->bss_prio_tbl[priv->bss_priority] 54 list_add_tail(&bss_prio->list, &tbl[priv->bss_priority].bss_prio_head);
54 .bss_prio_lock, flags); 55 spin_unlock_irqrestore(&tbl[priv->bss_priority].bss_prio_lock, flags);
55 list_add_tail(&bss_prio->list,
56 &adapter->bss_prio_tbl[priv->bss_priority]
57 .bss_prio_head);
58 spin_unlock_irqrestore(&adapter->bss_prio_tbl[priv->bss_priority]
59 .bss_prio_lock, flags);
60 56
61 return 0; 57 return 0;
62} 58}
@@ -157,13 +153,13 @@ static int mwifiex_allocate_adapter(struct mwifiex_adapter *adapter)
157 ret = mwifiex_alloc_cmd_buffer(adapter); 153 ret = mwifiex_alloc_cmd_buffer(adapter);
158 if (ret) { 154 if (ret) {
159 dev_err(adapter->dev, "%s: failed to alloc cmd buffer\n", 155 dev_err(adapter->dev, "%s: failed to alloc cmd buffer\n",
160 __func__); 156 __func__);
161 return -1; 157 return -1;
162 } 158 }
163 159
164 adapter->sleep_cfm = 160 adapter->sleep_cfm =
165 dev_alloc_skb(sizeof(struct mwifiex_opt_sleep_confirm) 161 dev_alloc_skb(sizeof(struct mwifiex_opt_sleep_confirm)
166 + INTF_HEADER_LEN); 162 + INTF_HEADER_LEN);
167 163
168 if (!adapter->sleep_cfm) { 164 if (!adapter->sleep_cfm) {
169 dev_err(adapter->dev, "%s: failed to alloc sleep cfm" 165 dev_err(adapter->dev, "%s: failed to alloc sleep cfm"
@@ -520,7 +516,7 @@ static void mwifiex_delete_bss_prio_tbl(struct mwifiex_private *priv)
520 struct mwifiex_adapter *adapter = priv->adapter; 516 struct mwifiex_adapter *adapter = priv->adapter;
521 struct mwifiex_bss_prio_node *bssprio_node, *tmp_node, **cur; 517 struct mwifiex_bss_prio_node *bssprio_node, *tmp_node, **cur;
522 struct list_head *head; 518 struct list_head *head;
523 spinlock_t *lock; 519 spinlock_t *lock; /* bss priority lock */
524 unsigned long flags; 520 unsigned long flags;
525 521
526 for (i = 0; i < adapter->priv_num; ++i) { 522 for (i = 0; i < adapter->priv_num; ++i) {
@@ -638,7 +634,7 @@ int mwifiex_dnld_fw(struct mwifiex_adapter *adapter,
638 ret = adapter->if_ops.check_fw_status(adapter, poll_num); 634 ret = adapter->if_ops.check_fw_status(adapter, poll_num);
639 if (!ret) { 635 if (!ret) {
640 dev_notice(adapter->dev, 636 dev_notice(adapter->dev,
641 "WLAN FW already running! Skip FW download\n"); 637 "WLAN FW already running! Skip FW download\n");
642 goto done; 638 goto done;
643 } 639 }
644 poll_num = MAX_FIRMWARE_POLL_TRIES; 640 poll_num = MAX_FIRMWARE_POLL_TRIES;
@@ -646,8 +642,7 @@ int mwifiex_dnld_fw(struct mwifiex_adapter *adapter,
646 /* Check if we are the winner for downloading FW */ 642 /* Check if we are the winner for downloading FW */
647 if (!adapter->winner) { 643 if (!adapter->winner) {
648 dev_notice(adapter->dev, 644 dev_notice(adapter->dev,
649 "Other interface already running!" 645 "Other intf already running! Skip FW download\n");
650 " Skip FW download\n");
651 poll_num = MAX_MULTI_INTERFACE_POLL_TRIES; 646 poll_num = MAX_MULTI_INTERFACE_POLL_TRIES;
652 goto poll_fw; 647 goto poll_fw;
653 } 648 }