summaryrefslogtreecommitdiff
path: root/extmod/network_wiznet5k.c
diff options
context:
space:
mode:
Diffstat (limited to 'extmod/network_wiznet5k.c')
-rw-r--r--extmod/network_wiznet5k.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/extmod/network_wiznet5k.c b/extmod/network_wiznet5k.c
index 02bf90244..5a26c0895 100644
--- a/extmod/network_wiznet5k.c
+++ b/extmod/network_wiznet5k.c
@@ -198,6 +198,16 @@ STATIC void wiznet5k_config_interrupt(bool enabled) {
);
}
+void wiznet5k_deinit(void) {
+ for (struct netif *netif = netif_list; netif != NULL; netif = netif->next) {
+ if (netif == &wiznet5k_obj.netif) {
+ netif_remove(netif);
+ netif->flags = 0;
+ break;
+ }
+ }
+}
+
STATIC void wiznet5k_init(void) {
// Configure wiznet for raw ethernet frame usage.
@@ -219,6 +229,9 @@ STATIC void wiznet5k_init(void) {
wiznet5k_config_interrupt(true);
}
+ // Deinit before a new init to clear the state from a previous activation
+ wiznet5k_deinit();
+
// Hook the Wiznet into lwIP
wiznet5k_lwip_init(&wiznet5k_obj);
@@ -229,16 +242,6 @@ STATIC void wiznet5k_init(void) {
mod_network_register_nic(&wiznet5k_obj);
}
-void wiznet5k_deinit(void) {
- for (struct netif *netif = netif_list; netif != NULL; netif = netif->next) {
- if (netif == &wiznet5k_obj.netif) {
- netif_remove(netif);
- netif->flags = 0;
- break;
- }
- }
-}
-
STATIC void wiznet5k_send_ethernet(wiznet5k_obj_t *self, size_t len, const uint8_t *buf) {
uint8_t ip[4] = {1, 1, 1, 1}; // dummy
int ret = WIZCHIP_EXPORT(sendto)(0, (byte *)buf, len, ip, 11); // dummy port