Bluetooth: 6lowpan: Remove unnecessary peer lookup
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Mon, 3 Apr 2017 14:48:55 +0000 (17:48 +0300)
committerMarcel Holtmann <marcel@holtmann.org>
Wed, 12 Apr 2017 20:02:40 +0000 (22:02 +0200)
During chan_recv_cb there is already a peer lookup which can be passed
to recv_pkt directly instead of the channel.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Acked-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
net/bluetooth/6lowpan.c

index b39da8d..2063e96 100644 (file)
@@ -269,27 +269,20 @@ static int give_skb_to_upper(struct sk_buff *skb, struct net_device *dev)
 }
 
 static int iphc_decompress(struct sk_buff *skb, struct net_device *netdev,
-                          struct l2cap_chan *chan)
+                          struct lowpan_peer *peer)
 {
        const u8 *saddr;
        struct lowpan_btle_dev *dev;
-       struct lowpan_peer *peer;
 
        dev = lowpan_btle_dev(netdev);
 
-       rcu_read_lock();
-       peer = __peer_lookup_chan(dev, chan);
-       rcu_read_unlock();
-       if (!peer)
-               return -EINVAL;
-
        saddr = peer->lladdr;
 
        return lowpan_header_decompress(skb, netdev, netdev->dev_addr, saddr);
 }
 
 static int recv_pkt(struct sk_buff *skb, struct net_device *dev,
-                   struct l2cap_chan *chan)
+                   struct lowpan_peer *peer)
 {
        struct sk_buff *local_skb;
        int ret;
@@ -342,7 +335,7 @@ static int recv_pkt(struct sk_buff *skb, struct net_device *dev,
 
                local_skb->dev = dev;
 
-               ret = iphc_decompress(local_skb, dev, chan);
+               ret = iphc_decompress(local_skb, dev, peer);
                if (ret < 0) {
                        kfree_skb(local_skb);
                        goto drop;
@@ -388,7 +381,7 @@ static int chan_recv_cb(struct l2cap_chan *chan, struct sk_buff *skb)
        if (!dev || !dev->netdev)
                return -ENOENT;
 
-       err = recv_pkt(skb, dev->netdev, chan);
+       err = recv_pkt(skb, dev->netdev, peer);
        if (err) {
                BT_DBG("recv pkt %d", err);
                err = -EAGAIN;