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;
 
        /* 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 */
        } 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,