From 38e5bd627bc2349a675927c355c784279f24a9f0 Mon Sep 17 00:00:00 2001
From: Koen Zandberg <koen@bergzand.net>
Date: Thu, 15 Nov 2018 17:01:25 +0100
Subject: [PATCH] mrf24j40: Don't propagate address to 802154 layer

---
 drivers/mrf24j40/mrf24j40_getset.c | 9 +++------
 drivers/mrf24j40/mrf24j40_netdev.c | 4 ++--
 2 files changed, 5 insertions(+), 8 deletions(-)

diff --git a/drivers/mrf24j40/mrf24j40_getset.c b/drivers/mrf24j40/mrf24j40_getset.c
index 7780bb9c03..ce8dca98cf 100644
--- a/drivers/mrf24j40/mrf24j40_getset.c
+++ b/drivers/mrf24j40/mrf24j40_getset.c
@@ -131,14 +131,12 @@ void mrf24j40_set_addr_short(mrf24j40_t *dev, uint16_t addr)
 #ifdef MODULE_SIXLOWPAN
     /* https://tools.ietf.org/html/rfc4944#section-12 requires the first bit to
      * 0 for unicast addresses */
-    dev->netdev.short_addr[0] &= 0x7F;
+    addr &= 0xFF7F;
 #endif
-    dev->netdev.short_addr[0] = (uint8_t)(addr);
-    dev->netdev.short_addr[1] = (uint8_t)(addr >> 8);
     mrf24j40_reg_write_short(dev, MRF24J40_REG_SADRL,
-                             dev->netdev.short_addr[1]);
+                             (uint8_t)(addr >> 8));
     mrf24j40_reg_write_short(dev, MRF24J40_REG_SADRH,
-                             dev->netdev.short_addr[0]);
+                             (uint8_t)addr);
 }
 
 uint64_t mrf24j40_get_addr_long(mrf24j40_t *dev)
@@ -156,7 +154,6 @@ uint64_t mrf24j40_get_addr_long(mrf24j40_t *dev)
 void mrf24j40_set_addr_long(mrf24j40_t *dev, uint64_t addr)
 {
     for (int i = 0; i < 8; i++) {
-        dev->netdev.long_addr[i] = (uint8_t)(addr >> (i * 8));
         mrf24j40_reg_write_short(dev, (MRF24J40_REG_EADR0 + i),
                                  (addr >> ((7 - i) * 8)));
     }
diff --git a/drivers/mrf24j40/mrf24j40_netdev.c b/drivers/mrf24j40/mrf24j40_netdev.c
index 8da46fff32..be1d89226d 100644
--- a/drivers/mrf24j40/mrf24j40_netdev.c
+++ b/drivers/mrf24j40/mrf24j40_netdev.c
@@ -371,7 +371,7 @@ static int _set(netdev_t *netdev, netopt_t opt, const void *val, size_t len)
             }
             else {
                 mrf24j40_set_addr_short(dev, *((const uint16_t *)val));
-                /* don't set res to set netdev_ieee802154_t::short_addr */
+                res = sizeof(uint16_t);
             }
             break;
 
@@ -381,7 +381,7 @@ static int _set(netdev_t *netdev, netopt_t opt, const void *val, size_t len)
             }
             else {
                 mrf24j40_set_addr_long(dev, *((const uint64_t *)val));
-                /* don't set res to set netdev_ieee802154_t::long_addr */
+                res = sizeof(uint64_t);
             }
             break;
 
-- 
GitLab