diff options
author | Luiz Augusto von Dentz <luiz.von.dentz@intel.com> | 2017-04-03 10:48:55 -0400 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2017-04-12 16:02:40 -0400 |
commit | 27ce68a37b0bd86123571e1e76b9bdb362d109e0 (patch) | |
tree | 78c32492862cb8b1b5b71df48548f99250c703a9 /net/bluetooth/6lowpan.c | |
parent | c8ba804437d6311f61e4ca77a1cf43ce6a17bd21 (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.c | 15 |
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 | ||
271 | static int iphc_decompress(struct sk_buff *skb, struct net_device *netdev, | 271 | static 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 | ||
291 | static int recv_pkt(struct sk_buff *skb, struct net_device *dev, | 284 | static 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; |