diff options
Diffstat (limited to 'drivers/net/wireless/mwifiex/init.c')
-rw-r--r-- | drivers/net/wireless/mwifiex/init.c | 31 |
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 | } |