From f10c6ed4ce34b33efd28b0a106e0ace6e65f37f5 Mon Sep 17 00:00:00 2001
From: Our Air Quality <info@ourairquality.org>
Date: Tue, 22 Nov 2016 01:05:57 +1100
Subject: [PATCH] open_esplibs libnet80211: source code for
 sdk_ieee80211_deliver_data. (#277)

---
 open_esplibs/libnet80211/ieee80211_input.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/open_esplibs/libnet80211/ieee80211_input.c b/open_esplibs/libnet80211/ieee80211_input.c
index 0880463..be07a51 100644
--- a/open_esplibs/libnet80211/ieee80211_input.c
+++ b/open_esplibs/libnet80211/ieee80211_input.c
@@ -7,5 +7,25 @@
 #if OPEN_LIBNET80211_INPUT
 // The contents of this file are only built if OPEN_LIBNET80211_INPUT is set to true
 
+#include "esplibs/libpp.h"
+
+void IRAM sdk_ieee80211_deliver_data(struct sdk_g_ic_netif_info *netif_info, struct esf_buf *esf_buf) {
+    struct netif *netif = netif_info->netif;
+
+    if (netif->flags & NETIF_FLAG_LINK_UP) {
+        uint16_t length = esf_buf->length;
+        struct pbuf *pbuf = pbuf_alloc(PBUF_RAW, length, PBUF_REF);
+        pbuf->payload = esf_buf->pbuf2->payload;
+        esf_buf->pbuf1 = pbuf;
+        pbuf->eb = (void *)esf_buf;
+        ethernetif_input(netif, pbuf);
+        return;
+    }
+
+    if (esf_buf)
+        sdk_ppRecycleRxPkt(esf_buf);
+
+    return;
+}
 
 #endif /* OPEN_LIBNET80211_INPUT */