summaryrefslogtreecommitdiffstats
path: root/net/bluetooth/6lowpan.c
diff options
context:
space:
mode:
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2017-04-03 10:48:55 -0400
committerMarcel Holtmann <marcel@holtmann.org>2017-04-12 16:02:40 -0400
commit27ce68a37b0bd86123571e1e76b9bdb362d109e0 (patch)
tree78c32492862cb8b1b5b71df48548f99250c703a9 /net/bluetooth/6lowpan.c
parentc8ba804437d6311f61e4ca77a1cf43ce6a17bd21 (diff)
Bluetooth: 6lowpan: Remove unnecessary peer lookup
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>
Diffstat (limited to 'net/bluetooth/6lowpan.c')
-rw-r--r--net/bluetooth/6lowpan.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/net/bluetooth/6lowpan.c b/net/bluetooth/6lowpan.c
index b39da8d36aa9..2063e96bc006 100644
--- a/net/bluetooth/6lowpan.c
+++ b/net/bluetooth/6lowpan.c
@@ -269,27 +269,20 @@ static int give_skb_to_upper(struct sk_buff *skb, struct net_device *dev)
269} 269}
270 270
271static int iphc_decompress(struct sk_buff *skb, struct net_device *netdev, 271static int iphc_decompress(struct sk_buff *skb, struct net_device *netdev,
272 struct l2cap_chan *chan) 272 struct lowpan_peer *peer)
273{ 273{
274 const u8 *saddr; 274 const u8 *saddr;
275 struct lowpan_btle_dev *dev; 275 struct lowpan_btle_dev *dev;
276 struct lowpan_peer *peer;
277 276
278 dev = lowpan_btle_dev(netdev); 277 dev = lowpan_btle_dev(netdev);
279 278
280 rcu_read_lock();
281 peer = __peer_lookup_chan(dev, chan);
282 rcu_read_unlock();
283 if (!peer)
284 return -EINVAL;
285
286 saddr = peer->lladdr; 279 saddr = peer->lladdr;
287 280
288 return lowpan_header_decompress(skb, netdev, netdev->dev_addr, saddr); 281 return lowpan_header_decompress(skb, netdev, netdev->dev_addr, saddr);
289} 282}
290 283
291static int recv_pkt(struct sk_buff *skb, struct net_device *dev, 284static int recv_pkt(struct sk_buff *skb, struct net_device *dev,
292 struct l2cap_chan *chan) 285 struct lowpan_peer *peer)
293{ 286{
294 struct sk_buff *local_skb; 287 struct sk_buff *local_skb;
295 int ret; 288 int ret;
@@ -342,7 +335,7 @@ static int recv_pkt(struct sk_buff *skb, struct net_device *dev,
342 335
343 local_skb->dev = dev; 336 local_skb->dev = dev;
344 337
345 ret = iphc_decompress(local_skb, dev, chan); 338 ret = iphc_decompress(local_skb, dev, peer);
346 if (ret < 0) { 339 if (ret < 0) {
347 kfree_skb(local_skb); 340 kfree_skb(local_skb);
348 goto drop; 341 goto drop;
@@ -388,7 +381,7 @@ static int chan_recv_cb(struct l2cap_chan *chan, struct sk_buff *skb)
388 if (!dev || !dev->netdev) 381 if (!dev || !dev->netdev)
389 return -ENOENT; 382 return -ENOENT;
390 383
391 err = recv_pkt(skb, dev->netdev, chan); 384 err = recv_pkt(skb, dev->netdev, peer);
392 if (err) { 385 if (err) {
393 BT_DBG("recv pkt %d", err); 386 BT_DBG("recv pkt %d", err);
394 err = -EAGAIN; 387 err = -EAGAIN;