Ignore:
Timestamp:
Mar 15, 2017, 2:42:58 AM (2 weeks ago)
Author:
brainslayer
Message:

use new squashfs in all kernels

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/linux/universal/linux-4.9/drivers/infiniband/ulp/ipoib/ipoib_main.c

    r31574 r31662  
    469469
    470470                ipoib_flush_paths(dev);
    471                 rtnl_lock();
    472                 return 0;
     471                return (!rtnl_trylock()) ? -EBUSY : 0;
    473472        }
    474473
     
    479478                rtnl_unlock();
    480479                ipoib_flush_paths(dev);
    481                 rtnl_lock();
    482                 return 0;
     480                return (!rtnl_trylock()) ? -EBUSY : 0;
    483481        }
    484482
     
    702700
    703701        return ret;
     702}
     703
     704static void push_pseudo_header(struct sk_buff *skb, const char *daddr)
     705{
     706        struct ipoib_pseudo_header *phdr;
     707
     708        phdr = (struct ipoib_pseudo_header *)skb_push(skb, sizeof(*phdr));
     709        memcpy(phdr->hwaddr, daddr, INFINIBAND_ALEN);
    704710}
    705711
     
    928934                        if (skb_queue_len(&neigh->queue) <
    929935                            IPOIB_MAX_PATH_REC_QUEUE) {
    930                                 /* put pseudoheader back on for next time */
    931                                 skb_push(skb, IPOIB_PSEUDO_LEN);
     936                                push_pseudo_header(skb, neigh->daddr);
    932937                                __skb_queue_tail(&neigh->queue, skb);
    933938                        } else {
     
    947952                if (!path->query && path_rec_start(dev, path))
    948953                        goto err_path;
    949                 if (skb_queue_len(&neigh->queue) < IPOIB_MAX_PATH_REC_QUEUE)
     954                if (skb_queue_len(&neigh->queue) < IPOIB_MAX_PATH_REC_QUEUE) {
     955                        push_pseudo_header(skb, neigh->daddr);
    950956                        __skb_queue_tail(&neigh->queue, skb);
    951                 else
     957                } else {
    952958                        goto err_drop;
     959                }
    953960        }
    954961
     
    986993                if (path) {
    987994                        if (skb_queue_len(&path->queue) < IPOIB_MAX_PATH_REC_QUEUE) {
    988                                 /* put pseudoheader back on for next time */
    989                                 skb_push(skb, IPOIB_PSEUDO_LEN);
     995                                push_pseudo_header(skb, phdr->hwaddr);
    990996                                __skb_queue_tail(&path->queue, skb);
    991997                        } else {
     
    10191025        } else if ((path->query || !path_rec_start(dev, path)) &&
    10201026                   skb_queue_len(&path->queue) < IPOIB_MAX_PATH_REC_QUEUE) {
    1021                 /* put pseudoheader back on for next time */
    1022                 skb_push(skb, IPOIB_PSEUDO_LEN);
     1027                push_pseudo_header(skb, phdr->hwaddr);
    10231028                __skb_queue_tail(&path->queue, skb);
    10241029        } else {
     
    11011106
    11021107        if (skb_queue_len(&neigh->queue) < IPOIB_MAX_PATH_REC_QUEUE) {
    1103                 /* put pseudoheader back on for next time */
    1104                 skb_push(skb, sizeof(*phdr));
     1108                push_pseudo_header(skb, phdr->hwaddr);
    11051109                spin_lock_irqsave(&priv->lock, flags);
    11061110                __skb_queue_tail(&neigh->queue, skb);
     
    11341138                             const void *daddr, const void *saddr, unsigned len)
    11351139{
    1136         struct ipoib_pseudo_header *phdr;
    11371140        struct ipoib_header *header;
    11381141
     
    11471150         * to send the packet later.
    11481151         */
    1149         phdr = (struct ipoib_pseudo_header *) skb_push(skb, sizeof(*phdr));
    1150         memcpy(phdr->hwaddr, daddr, INFINIBAND_ALEN);
     1152        push_pseudo_header(skb, daddr);
    11511153
    11521154        return IPOIB_HARD_LEN;
Note: See TracChangeset for help on using the changeset viewer.