Lines Matching refs:neigh

268 	struct ipoib_neigh *neigh, *tn;
277 list_for_each_entry_safe(neigh, tn, &path->neigh_list, list) {
284 if (neigh->ah)
285 ipoib_put_ah(neigh->ah);
287 ipoib_neigh_free(dev, neigh);
412 struct ipoib_neigh *neigh, *tn;
447 list_for_each_entry_safe(neigh, tn, &path->neigh_list, list) {
448 if (neigh->ah) {
449 WARN_ON(neigh->ah != old_ah);
457 ipoib_put_ah(neigh->ah);
460 neigh->ah = path->ah;
461 memcpy(&neigh->dgid.raw, &path->pathrec.dgid.raw,
464 if (ipoib_cm_enabled(dev, neigh->neighbour)) {
465 if (!ipoib_cm_get(neigh))
466 ipoib_cm_set(neigh, ipoib_cm_create_tx(dev,
468 neigh));
469 if (!ipoib_cm_get(neigh)) {
470 list_del(&neigh->list);
471 if (neigh->ah)
472 ipoib_put_ah(neigh->ah);
473 ipoib_neigh_free(dev, neigh);
478 while ((skb = __skb_dequeue(&neigh->queue)))
563 struct ipoib_neigh *neigh;
566 neigh = ipoib_neigh_alloc(n, skb->dev);
567 if (!neigh) {
584 list_add_tail(&neigh->list, &path->neigh_list);
588 neigh->ah = path->ah;
589 memcpy(&neigh->dgid.raw, &path->pathrec.dgid.raw,
592 if (ipoib_cm_enabled(dev, neigh->neighbour)) {
593 if (!ipoib_cm_get(neigh))
594 ipoib_cm_set(neigh, ipoib_cm_create_tx(dev, path, neigh));
595 if (!ipoib_cm_get(neigh)) {
596 list_del(&neigh->list);
597 if (neigh->ah)
598 ipoib_put_ah(neigh->ah);
599 ipoib_neigh_free(dev, neigh);
602 if (skb_queue_len(&neigh->queue) < IPOIB_MAX_PATH_REC_QUEUE)
603 __skb_queue_tail(&neigh->queue, skb);
606 skb_queue_len(&neigh->queue));
615 neigh->ah = NULL;
620 __skb_queue_tail(&neigh->queue, skb);
627 list_del(&neigh->list);
630 ipoib_neigh_free(dev, neigh);
712 struct ipoib_neigh *neigh;
731 neigh = *to_ipoib_neigh(n);
733 if (unlikely((memcmp(&neigh->dgid.raw,
736 (neigh->dev != dev))) {
745 if (neigh->ah)
746 ipoib_put_ah(neigh->ah);
747 list_del(&neigh->list);
748 ipoib_neigh_free(dev, neigh);
754 if (ipoib_cm_get(neigh)) {
755 if (ipoib_cm_up(neigh)) {
756 ipoib_cm_send(dev, skb, ipoib_cm_get(neigh));
759 } else if (neigh->ah) {
760 ipoib_send(dev, skb, neigh->ah, IPOIB_QPN(n->ha));
764 if (skb_queue_len(&neigh->queue) < IPOIB_MAX_PATH_REC_QUEUE) {
766 __skb_queue_tail(&neigh->queue, skb);
787 skb_dst(skb) ? "neigh" : "dst",
855 struct ipoib_neigh *neigh;
860 neigh = *to_ipoib_neigh(n);
861 if (neigh)
862 priv = netdev_priv(neigh->dev);
872 if (neigh->ah)
873 ah = neigh->ah;
874 list_del(&neigh->list);
875 ipoib_neigh_free(n->dev, neigh);
886 struct ipoib_neigh *neigh;
888 neigh = kmalloc(sizeof *neigh, GFP_ATOMIC);
889 if (!neigh)
892 neigh->neighbour = neighbour;
893 neigh->dev = dev;
894 memset(&neigh->dgid.raw, 0, sizeof (union ib_gid));
895 *to_ipoib_neigh(neighbour) = neigh;
896 skb_queue_head_init(&neigh->queue);
897 ipoib_cm_set(neigh, NULL);
899 return neigh;
902 void ipoib_neigh_free(struct net_device *dev, struct ipoib_neigh *neigh)
905 *to_ipoib_neigh(neigh->neighbour) = NULL;
906 while ((skb = __skb_dequeue(&neigh->queue))) {
910 if (ipoib_cm_get(neigh))
911 ipoib_cm_destroy_tx(ipoib_cm_get(neigh));
912 kfree(neigh);