diff --git a/drivers/at86rf2xx/at86rf2xx.c b/drivers/at86rf2xx/at86rf2xx.c
index b3869ad7a4de8077ffe15720fed220a58efbfd2f..9a0af02b616760b7c0bb02667ec44978e4cd53cf 100644
--- a/drivers/at86rf2xx/at86rf2xx.c
+++ b/drivers/at86rf2xx/at86rf2xx.c
@@ -246,9 +246,11 @@ void at86rf2xx_tx_exec(at86rf2xx_t *dev)
 
 size_t at86rf2xx_rx_len(at86rf2xx_t *dev)
 {
-    uint8_t res;
-    at86rf2xx_fb_read(dev, &res, 1);
-    return (size_t)(res - 2);           /* extract the PHR and LQI field */
+    uint8_t phr;
+    at86rf2xx_fb_read(dev, &phr, 1);
+
+    /* ignore MSB (refer p.80) and substract length of FCS field */
+    return (size_t)((phr & 0x7f) - 2);
 }
 
 void at86rf2xx_rx_read(at86rf2xx_t *dev, uint8_t *data, size_t len,