diff options
author | David Howells <dhowells@redhat.com> | 2006-12-05 09:37:56 -0500 |
---|---|---|
committer | David Howells <dhowells@warthog.cambridge.redhat.com> | 2006-12-05 09:37:56 -0500 |
commit | 4c1ac1b49122b805adfa4efc620592f68dccf5db (patch) | |
tree | 87557f4bc2fd4fe65b7570489c2f610c45c0adcd /drivers/infiniband/ulp | |
parent | c4028958b6ecad064b1a6303a6a5906d4fe48d73 (diff) | |
parent | d916faace3efc0bf19fe9a615a1ab8fa1a24cd93 (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
Conflicts:
drivers/infiniband/core/iwcm.c
drivers/net/chelsio/cxgb2.c
drivers/net/wireless/bcm43xx/bcm43xx_main.c
drivers/net/wireless/prism54/islpci_eth.c
drivers/usb/core/hub.h
drivers/usb/input/hid-core.c
net/core/netpoll.c
Fix up merge failures with Linus's head and fix new compilation failures.
Signed-Off-By: David Howells <dhowells@redhat.com>
Diffstat (limited to 'drivers/infiniband/ulp')
-rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib.h | 2 | ||||
-rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib_main.c | 19 | ||||
-rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 2 | ||||
-rw-r--r-- | drivers/infiniband/ulp/iser/iscsi_iser.h | 2 | ||||
-rw-r--r-- | drivers/infiniband/ulp/srp/ib_srp.c | 11 |
5 files changed, 23 insertions, 13 deletions
diff --git a/drivers/infiniband/ulp/ipoib/ipoib.h b/drivers/infiniband/ulp/ipoib/ipoib.h index 3b2ee0eba05e..99547996aba2 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib.h +++ b/drivers/infiniband/ulp/ipoib/ipoib.h | |||
@@ -233,7 +233,7 @@ static inline struct ipoib_neigh **to_ipoib_neigh(struct neighbour *neigh) | |||
233 | } | 233 | } |
234 | 234 | ||
235 | struct ipoib_neigh *ipoib_neigh_alloc(struct neighbour *neigh); | 235 | struct ipoib_neigh *ipoib_neigh_alloc(struct neighbour *neigh); |
236 | void ipoib_neigh_free(struct ipoib_neigh *neigh); | 236 | void ipoib_neigh_free(struct net_device *dev, struct ipoib_neigh *neigh); |
237 | 237 | ||
238 | extern struct workqueue_struct *ipoib_workqueue; | 238 | extern struct workqueue_struct *ipoib_workqueue; |
239 | 239 | ||
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c index 71114a8c12b9..c09280243726 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_main.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c | |||
@@ -264,7 +264,7 @@ static void path_free(struct net_device *dev, struct ipoib_path *path) | |||
264 | if (neigh->ah) | 264 | if (neigh->ah) |
265 | ipoib_put_ah(neigh->ah); | 265 | ipoib_put_ah(neigh->ah); |
266 | 266 | ||
267 | ipoib_neigh_free(neigh); | 267 | ipoib_neigh_free(dev, neigh); |
268 | } | 268 | } |
269 | 269 | ||
270 | spin_unlock_irqrestore(&priv->lock, flags); | 270 | spin_unlock_irqrestore(&priv->lock, flags); |
@@ -525,10 +525,11 @@ static void neigh_add_path(struct sk_buff *skb, struct net_device *dev) | |||
525 | ipoib_send(dev, skb, path->ah, IPOIB_QPN(skb->dst->neighbour->ha)); | 525 | ipoib_send(dev, skb, path->ah, IPOIB_QPN(skb->dst->neighbour->ha)); |
526 | } else { | 526 | } else { |
527 | neigh->ah = NULL; | 527 | neigh->ah = NULL; |
528 | __skb_queue_tail(&neigh->queue, skb); | ||
529 | 528 | ||
530 | if (!path->query && path_rec_start(dev, path)) | 529 | if (!path->query && path_rec_start(dev, path)) |
531 | goto err_list; | 530 | goto err_list; |
531 | |||
532 | __skb_queue_tail(&neigh->queue, skb); | ||
532 | } | 533 | } |
533 | 534 | ||
534 | spin_unlock(&priv->lock); | 535 | spin_unlock(&priv->lock); |
@@ -538,7 +539,7 @@ err_list: | |||
538 | list_del(&neigh->list); | 539 | list_del(&neigh->list); |
539 | 540 | ||
540 | err_path: | 541 | err_path: |
541 | ipoib_neigh_free(neigh); | 542 | ipoib_neigh_free(dev, neigh); |
542 | ++priv->stats.tx_dropped; | 543 | ++priv->stats.tx_dropped; |
543 | dev_kfree_skb_any(skb); | 544 | dev_kfree_skb_any(skb); |
544 | 545 | ||
@@ -655,7 +656,7 @@ static int ipoib_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
655 | */ | 656 | */ |
656 | ipoib_put_ah(neigh->ah); | 657 | ipoib_put_ah(neigh->ah); |
657 | list_del(&neigh->list); | 658 | list_del(&neigh->list); |
658 | ipoib_neigh_free(neigh); | 659 | ipoib_neigh_free(dev, neigh); |
659 | spin_unlock(&priv->lock); | 660 | spin_unlock(&priv->lock); |
660 | ipoib_path_lookup(skb, dev); | 661 | ipoib_path_lookup(skb, dev); |
661 | goto out; | 662 | goto out; |
@@ -786,7 +787,7 @@ static void ipoib_neigh_destructor(struct neighbour *n) | |||
786 | if (neigh->ah) | 787 | if (neigh->ah) |
787 | ah = neigh->ah; | 788 | ah = neigh->ah; |
788 | list_del(&neigh->list); | 789 | list_del(&neigh->list); |
789 | ipoib_neigh_free(neigh); | 790 | ipoib_neigh_free(n->dev, neigh); |
790 | } | 791 | } |
791 | 792 | ||
792 | spin_unlock_irqrestore(&priv->lock, flags); | 793 | spin_unlock_irqrestore(&priv->lock, flags); |
@@ -809,9 +810,15 @@ struct ipoib_neigh *ipoib_neigh_alloc(struct neighbour *neighbour) | |||
809 | return neigh; | 810 | return neigh; |
810 | } | 811 | } |
811 | 812 | ||
812 | void ipoib_neigh_free(struct ipoib_neigh *neigh) | 813 | void ipoib_neigh_free(struct net_device *dev, struct ipoib_neigh *neigh) |
813 | { | 814 | { |
815 | struct ipoib_dev_priv *priv = netdev_priv(dev); | ||
816 | struct sk_buff *skb; | ||
814 | *to_ipoib_neigh(neigh->neighbour) = NULL; | 817 | *to_ipoib_neigh(neigh->neighbour) = NULL; |
818 | while ((skb = __skb_dequeue(&neigh->queue))) { | ||
819 | ++priv->stats.tx_dropped; | ||
820 | dev_kfree_skb_any(skb); | ||
821 | } | ||
815 | kfree(neigh); | 822 | kfree(neigh); |
816 | } | 823 | } |
817 | 824 | ||
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c index f0a4fac1a215..b04b72ca32ed 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c | |||
@@ -114,7 +114,7 @@ static void ipoib_mcast_free(struct ipoib_mcast *mcast) | |||
114 | */ | 114 | */ |
115 | if (neigh->ah) | 115 | if (neigh->ah) |
116 | ipoib_put_ah(neigh->ah); | 116 | ipoib_put_ah(neigh->ah); |
117 | ipoib_neigh_free(neigh); | 117 | ipoib_neigh_free(dev, neigh); |
118 | } | 118 | } |
119 | 119 | ||
120 | spin_unlock_irqrestore(&priv->lock, flags); | 120 | spin_unlock_irqrestore(&priv->lock, flags); |
diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.h b/drivers/infiniband/ulp/iser/iscsi_iser.h index 9c53916f28c2..234e5b061a75 100644 --- a/drivers/infiniband/ulp/iser/iscsi_iser.h +++ b/drivers/infiniband/ulp/iser/iscsi_iser.h | |||
@@ -283,7 +283,7 @@ struct iser_global { | |||
283 | struct mutex connlist_mutex; | 283 | struct mutex connlist_mutex; |
284 | struct list_head connlist; /* all iSER IB connections */ | 284 | struct list_head connlist; /* all iSER IB connections */ |
285 | 285 | ||
286 | kmem_cache_t *desc_cache; | 286 | struct kmem_cache *desc_cache; |
287 | }; | 287 | }; |
288 | 288 | ||
289 | extern struct iser_global ig; | 289 | extern struct iser_global ig; |
diff --git a/drivers/infiniband/ulp/srp/ib_srp.c b/drivers/infiniband/ulp/srp/ib_srp.c index 214f66195af2..a6289595557b 100644 --- a/drivers/infiniband/ulp/srp/ib_srp.c +++ b/drivers/infiniband/ulp/srp/ib_srp.c | |||
@@ -1177,9 +1177,11 @@ static int srp_cm_handler(struct ib_cm_id *cm_id, struct ib_cm_event *event) | |||
1177 | break; | 1177 | break; |
1178 | } | 1178 | } |
1179 | 1179 | ||
1180 | target->status = srp_alloc_iu_bufs(target); | 1180 | if (!target->rx_ring[0]) { |
1181 | if (target->status) | 1181 | target->status = srp_alloc_iu_bufs(target); |
1182 | break; | 1182 | if (target->status) |
1183 | break; | ||
1184 | } | ||
1183 | 1185 | ||
1184 | qp_attr = kmalloc(sizeof *qp_attr, GFP_KERNEL); | 1186 | qp_attr = kmalloc(sizeof *qp_attr, GFP_KERNEL); |
1185 | if (!qp_attr) { | 1187 | if (!qp_attr) { |
@@ -1717,7 +1719,8 @@ static ssize_t srp_create_target(struct class_device *class_dev, | |||
1717 | if (!target_host) | 1719 | if (!target_host) |
1718 | return -ENOMEM; | 1720 | return -ENOMEM; |
1719 | 1721 | ||
1720 | target_host->max_lun = SRP_MAX_LUN; | 1722 | target_host->max_lun = SRP_MAX_LUN; |
1723 | target_host->max_cmd_len = sizeof ((struct srp_cmd *) (void *) 0L)->cdb; | ||
1721 | 1724 | ||
1722 | target = host_to_target(target_host); | 1725 | target = host_to_target(target_host); |
1723 | 1726 | ||