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

use new squashfs in all kernels

File:
1 edited

Legend:

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

    r31220 r31662  
    465465
    466466                ipoib_flush_paths(dev);
    467                 rtnl_lock();
    468                 return 0;
     467                return (!rtnl_trylock()) ? -EBUSY : 0;
    469468        }
    470469
     
    475474                rtnl_unlock();
    476475                ipoib_flush_paths(dev);
    477                 rtnl_lock();
    478                 return 0;
     476                return (!rtnl_trylock()) ? -EBUSY : 0;
    479477        }
    480478
     
    627625
    628626        spin_unlock_irq(&priv->lock);
     627}
     628
     629static void push_pseudo_header(struct sk_buff *skb, const char *daddr)
     630{
     631        struct ipoib_pseudo_header *phdr;
     632
     633        phdr = (struct ipoib_pseudo_header *)skb_push(skb, sizeof(*phdr));
     634        memcpy(phdr->hwaddr, daddr, INFINIBAND_ALEN);
    629635}
    630636
     
    853859                        if (skb_queue_len(&neigh->queue) <
    854860                            IPOIB_MAX_PATH_REC_QUEUE) {
    855                                 /* put pseudoheader back on for next time */
    856                                 skb_push(skb, IPOIB_PSEUDO_LEN);
     861                                push_pseudo_header(skb, neigh->daddr);
    857862                                __skb_queue_tail(&neigh->queue, skb);
    858863                        } else {
     
    872877                if (!path->query && path_rec_start(dev, path))
    873878                        goto err_path;
    874                 if (skb_queue_len(&neigh->queue) < IPOIB_MAX_PATH_REC_QUEUE)
     879                if (skb_queue_len(&neigh->queue) < IPOIB_MAX_PATH_REC_QUEUE) {
     880                        push_pseudo_header(skb, neigh->daddr);
    875881                        __skb_queue_tail(&neigh->queue, skb);
    876                 else
     882                } else {
    877883                        goto err_drop;
     884                }
    878885        }
    879886
     
    911918                if (path) {
    912919                        if (skb_queue_len(&path->queue) < IPOIB_MAX_PATH_REC_QUEUE) {
    913                                 /* put pseudoheader back on for next time */
    914                                 skb_push(skb, IPOIB_PSEUDO_LEN);
     920                                push_pseudo_header(skb, phdr->hwaddr);
    915921                                __skb_queue_tail(&path->queue, skb);
    916922                        } else {
     
    944950        } else if ((path->query || !path_rec_start(dev, path)) &&
    945951                   skb_queue_len(&path->queue) < IPOIB_MAX_PATH_REC_QUEUE) {
    946                 /* put pseudoheader back on for next time */
    947                 skb_push(skb, IPOIB_PSEUDO_LEN);
     952                push_pseudo_header(skb, phdr->hwaddr);
    948953                __skb_queue_tail(&path->queue, skb);
    949954        } else {
     
    10261031
    10271032        if (skb_queue_len(&neigh->queue) < IPOIB_MAX_PATH_REC_QUEUE) {
    1028                 /* put pseudoheader back on for next time */
    1029                 skb_push(skb, sizeof(*phdr));
     1033                push_pseudo_header(skb, phdr->hwaddr);
    10301034                spin_lock_irqsave(&priv->lock, flags);
    10311035                __skb_queue_tail(&neigh->queue, skb);
     
    10591063                             const void *daddr, const void *saddr, unsigned len)
    10601064{
    1061         struct ipoib_pseudo_header *phdr;
    10621065        struct ipoib_header *header;
    10631066
     
    10721075         * to send the packet later.
    10731076         */
    1074         phdr = (struct ipoib_pseudo_header *) skb_push(skb, sizeof(*phdr));
    1075         memcpy(phdr->hwaddr, daddr, INFINIBAND_ALEN);
     1077        push_pseudo_header(skb, daddr);
    10761078
    10771079        return IPOIB_HARD_LEN;
Note: See TracChangeset for help on using the changeset viewer.