aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2014-10-21 15:24:30 -0400
committerDavid S. Miller <davem@davemloft.net>2014-10-21 15:24:30 -0400
commit73829bf6fec70703f10e360676d81d327f21ebf6 (patch)
treea79429db005b46558ee7f75086cf5e69129619b8
parentd10845fc85b2e690b5f6425c5ba4df33a073fbc9 (diff)
parent39dc90c159c1bcc0fdd42913a7d560b1a1cd3acf (diff)
Merge branch 'enic'
Govindarajulu Varadarajan says: ==================== enic: Bug fixes This series fixes the following problem. Please apply this to net. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/cisco/enic/enic_clsf.c12
-rw-r--r--drivers/net/ethernet/cisco/enic/enic_main.c4
2 files changed, 8 insertions, 8 deletions
diff --git a/drivers/net/ethernet/cisco/enic/enic_clsf.c b/drivers/net/ethernet/cisco/enic/enic_clsf.c
index 69dfd3c9e529..0be6850be8a2 100644
--- a/drivers/net/ethernet/cisco/enic/enic_clsf.c
+++ b/drivers/net/ethernet/cisco/enic/enic_clsf.c
@@ -86,7 +86,7 @@ void enic_rfs_flw_tbl_free(struct enic *enic)
86 int i; 86 int i;
87 87
88 enic_rfs_timer_stop(enic); 88 enic_rfs_timer_stop(enic);
89 spin_lock(&enic->rfs_h.lock); 89 spin_lock_bh(&enic->rfs_h.lock);
90 enic->rfs_h.free = 0; 90 enic->rfs_h.free = 0;
91 for (i = 0; i < (1 << ENIC_RFS_FLW_BITSHIFT); i++) { 91 for (i = 0; i < (1 << ENIC_RFS_FLW_BITSHIFT); i++) {
92 struct hlist_head *hhead; 92 struct hlist_head *hhead;
@@ -100,7 +100,7 @@ void enic_rfs_flw_tbl_free(struct enic *enic)
100 kfree(n); 100 kfree(n);
101 } 101 }
102 } 102 }
103 spin_unlock(&enic->rfs_h.lock); 103 spin_unlock_bh(&enic->rfs_h.lock);
104} 104}
105 105
106struct enic_rfs_fltr_node *htbl_fltr_search(struct enic *enic, u16 fltr_id) 106struct enic_rfs_fltr_node *htbl_fltr_search(struct enic *enic, u16 fltr_id)
@@ -128,7 +128,7 @@ void enic_flow_may_expire(unsigned long data)
128 bool res; 128 bool res;
129 int j; 129 int j;
130 130
131 spin_lock(&enic->rfs_h.lock); 131 spin_lock_bh(&enic->rfs_h.lock);
132 for (j = 0; j < ENIC_CLSF_EXPIRE_COUNT; j++) { 132 for (j = 0; j < ENIC_CLSF_EXPIRE_COUNT; j++) {
133 struct hlist_head *hhead; 133 struct hlist_head *hhead;
134 struct hlist_node *tmp; 134 struct hlist_node *tmp;
@@ -148,7 +148,7 @@ void enic_flow_may_expire(unsigned long data)
148 } 148 }
149 } 149 }
150 } 150 }
151 spin_unlock(&enic->rfs_h.lock); 151 spin_unlock_bh(&enic->rfs_h.lock);
152 mod_timer(&enic->rfs_h.rfs_may_expire, jiffies + HZ/4); 152 mod_timer(&enic->rfs_h.rfs_may_expire, jiffies + HZ/4);
153} 153}
154 154
@@ -183,7 +183,7 @@ int enic_rx_flow_steer(struct net_device *dev, const struct sk_buff *skb,
183 return -EPROTONOSUPPORT; 183 return -EPROTONOSUPPORT;
184 184
185 tbl_idx = skb_get_hash_raw(skb) & ENIC_RFS_FLW_MASK; 185 tbl_idx = skb_get_hash_raw(skb) & ENIC_RFS_FLW_MASK;
186 spin_lock(&enic->rfs_h.lock); 186 spin_lock_bh(&enic->rfs_h.lock);
187 n = htbl_key_search(&enic->rfs_h.ht_head[tbl_idx], &keys); 187 n = htbl_key_search(&enic->rfs_h.ht_head[tbl_idx], &keys);
188 188
189 if (n) { /* entry already present */ 189 if (n) { /* entry already present */
@@ -277,7 +277,7 @@ int enic_rx_flow_steer(struct net_device *dev, const struct sk_buff *skb,
277 } 277 }
278 278
279ret_unlock: 279ret_unlock:
280 spin_unlock(&enic->rfs_h.lock); 280 spin_unlock_bh(&enic->rfs_h.lock);
281 return res; 281 return res;
282} 282}
283 283
diff --git a/drivers/net/ethernet/cisco/enic/enic_main.c b/drivers/net/ethernet/cisco/enic/enic_main.c
index 929bfe70080a..180e53fa628f 100644
--- a/drivers/net/ethernet/cisco/enic/enic_main.c
+++ b/drivers/net/ethernet/cisco/enic/enic_main.c
@@ -1674,13 +1674,13 @@ static int enic_stop(struct net_device *netdev)
1674 1674
1675 enic_dev_disable(enic); 1675 enic_dev_disable(enic);
1676 1676
1677 local_bh_disable();
1678 for (i = 0; i < enic->rq_count; i++) { 1677 for (i = 0; i < enic->rq_count; i++) {
1679 napi_disable(&enic->napi[i]); 1678 napi_disable(&enic->napi[i]);
1679 local_bh_disable();
1680 while (!enic_poll_lock_napi(&enic->rq[i])) 1680 while (!enic_poll_lock_napi(&enic->rq[i]))
1681 mdelay(1); 1681 mdelay(1);
1682 local_bh_enable();
1682 } 1683 }
1683 local_bh_enable();
1684 1684
1685 netif_carrier_off(netdev); 1685 netif_carrier_off(netdev);
1686 netif_tx_disable(netdev); 1686 netif_tx_disable(netdev);