]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
IB/ipoib: Improve filtering log message
authorYuval Shaia <yuval.shaia@oracle.com>
Thu, 6 Sep 2018 11:21:27 +0000 (04:21 -0700)
committerBrian Maly <brian.maly@oracle.com>
Wed, 26 Sep 2018 00:30:04 +0000 (20:30 -0400)
The values of subnet_prefix and sgid are missing in log message when a
non-CM packet is filtered since they are both initialized only for ARP
packets.

Fix this by setting them anyway.

Orabug: 28655409

Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>
Reviewed-by: HÃ¥kon Bugge <haakon.bugge@oracle.com>
Signed-off-by: Brian Maly <brian.maly@oracle.com>
drivers/infiniband/ulp/ipoib/ipoib_ib.c

index cd3448299d06886899710b34f6036457e3023e20..5b0d05e994a6b09c70ba502a106a6edf892d2d29 100644 (file)
@@ -280,14 +280,14 @@ static void ipoib_ib_handle_rx_wc(struct net_device *dev, struct ib_wc *wc)
        skb_pull(skb, IB_GRH_BYTES);
 
        skb->protocol = ((struct ipoib_header *) skb->data)->proto;
-       skb_pull(skb, IPOIB_ENCAP_LEN);
 
        skb->truesize = SKB_TRUESIZE(skb->len);
 
-       if (unlikely(be16_to_cpu(skb->protocol) == ETH_P_ARP)) {
-               if (priv->acl.enabled) {
-                       subnet_prefix = be64_to_cpu(sgid->global.subnet_prefix);
-                       guid = be64_to_cpu(sgid->global.interface_id);
+       if (priv->acl.enabled) {
+               skb_pull(skb, IPOIB_ENCAP_LEN);
+               subnet_prefix = be64_to_cpu(sgid->global.subnet_prefix);
+               guid = be64_to_cpu(sgid->global.interface_id);
+               if (unlikely(be16_to_cpu(skb->protocol) == ETH_P_ARP)) {
                        if (!(wc->wc_flags & IB_WC_GRH))
                                drop = IPOIB_DROP_NO_GRH;
                        else if (!ipoib_is_valid_arp_address(dev, skb,
@@ -300,19 +300,17 @@ static void ipoib_ib_handle_rx_wc(struct net_device *dev, struct ib_wc *wc)
                                priv->arp_blocked++;
                                goto drop;
                        }
-               }
-               priv->arp_accepted++;
-       } else
-               if (priv->acl.enabled) {
+               } else {
                        priv->ud_blocked++;
                        drop = IPOIB_DROP_NON_CM_PACKRT;
                        goto drop;
                }
+               skb_push(skb, IPOIB_ENCAP_LEN);
+       }
 
        ++dev->stats.rx_packets;
        dev->stats.rx_bytes += skb->len;
 
-       skb_push(skb, IPOIB_ENCAP_LEN);
        skb_add_pseudo_hdr(skb);
 
        skb->dev = dev;