|
@@ -190,6 +190,7 @@ err:
|
|
|
|
|
|
static int lowpan_header(struct sk_buff *skb, struct net_device *dev)
|
|
|
{
|
|
|
+ struct wpan_dev *wpan_dev = lowpan_dev_info(dev)->real_dev->ieee802154_ptr;
|
|
|
struct ieee802154_addr sa, da;
|
|
|
struct ieee802154_mac_cb *cb = mac_cb_init(skb);
|
|
|
struct lowpan_addr_info info;
|
|
@@ -207,7 +208,7 @@ static int lowpan_header(struct sk_buff *skb, struct net_device *dev)
|
|
|
|
|
|
/* prepare wpan address data */
|
|
|
sa.mode = IEEE802154_ADDR_LONG;
|
|
|
- sa.pan_id = lowpan_dev_info(dev)->real_dev->ieee802154_ptr->pan_id;
|
|
|
+ sa.pan_id = wpan_dev->pan_id;
|
|
|
sa.extended_addr = ieee802154_devaddr_from_raw(saddr);
|
|
|
|
|
|
/* intra-PAN communications */
|
|
@@ -223,7 +224,7 @@ static int lowpan_header(struct sk_buff *skb, struct net_device *dev)
|
|
|
} else {
|
|
|
da.mode = IEEE802154_ADDR_LONG;
|
|
|
da.extended_addr = ieee802154_devaddr_from_raw(daddr);
|
|
|
- cb->ackreq = true;
|
|
|
+ cb->ackreq = wpan_dev->frame_retries >= 0;
|
|
|
}
|
|
|
|
|
|
return dev_hard_header(skb, lowpan_dev_info(dev)->real_dev,
|