81 lines
2.7 KiB
C
81 lines
2.7 KiB
C
/*
|
|
* Copyright 2019 NXP
|
|
* All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#ifndef ENET_ETHERNETIF_PRIV_H
|
|
#define ENET_ETHERNETIF_PRIV_H
|
|
|
|
#include "lwip/err.h"
|
|
|
|
struct ethernetif;
|
|
|
|
#if defined(__cplusplus)
|
|
extern "C" {
|
|
#endif /* __cplusplus */
|
|
|
|
err_t ethernetif_init(struct netif *netif, struct ethernetif *ethernetif,
|
|
void *enetBase,
|
|
const ethernetif_config_t *ethernetifConfig);
|
|
|
|
void ethernetif_enet_init(struct netif *netif, struct ethernetif *ethernetif,
|
|
const ethernetif_config_t *ethernetifConfig);
|
|
|
|
void ethernetif_phy_init(struct ethernetif *ethernetif,
|
|
const ethernetif_config_t *ethernetifConfig,
|
|
phy_speed_t *speed,
|
|
phy_duplex_t *duplex);
|
|
|
|
void *ethernetif_get_enet_base(const uint8_t enetIdx);
|
|
|
|
#if defined(FSL_FEATURE_SOC_ENET_QOS_COUNT) && (FSL_FEATURE_SOC_ENET_QOS_COUNT > 0)
|
|
void *ethernetif_get_enet_qos_base(const uint8_t enetIdx);
|
|
#endif
|
|
|
|
void **ethernetif_enet_ptr(struct ethernetif *ethernetif);
|
|
|
|
#if LWIP_IPV4 && LWIP_IGMP
|
|
err_t ethernetif_igmp_mac_filter(struct netif *netif, const ip4_addr_t *group,
|
|
enum netif_mac_filter_action action);
|
|
#endif
|
|
|
|
#if LWIP_IPV6 && LWIP_IPV6_MLD
|
|
err_t ethernetif_mld_mac_filter(struct netif *netif, const ip6_addr_t *group,
|
|
enum netif_mac_filter_action action);
|
|
#endif
|
|
|
|
/**
|
|
* Should allocate a pbuf and transfer the bytes of the incoming
|
|
* packet from the interface into the pbuf.
|
|
*
|
|
* @param netif the lwip network interface structure for this ethernetif
|
|
* @return a pbuf filled with the received packet (including MAC header)
|
|
* NULL on memory error
|
|
*/
|
|
struct pbuf *ethernetif_linkinput(struct netif *netif);
|
|
|
|
/**
|
|
* This function should do the actual transmission of the packet. The packet is
|
|
* contained in the pbuf that is passed to the function. This pbuf
|
|
* might be chained.
|
|
*
|
|
* @param netif the lwip network interface structure for this ethernetif
|
|
* @param p the MAC packet to send (e.g. IP packet including MAC addresses and type)
|
|
* @return ERR_OK if the packet could be sent
|
|
* an err_t value if the packet couldn't be sent
|
|
*
|
|
* @note Returning ERR_MEM here if a DMA queue of your MAC is full can lead to
|
|
* strange results. You might consider waiting for space in the DMA queue
|
|
* to become available since the stack doesn't retry to send a packet
|
|
* dropped because of memory failure (except for the TCP timers).
|
|
*/
|
|
err_t ethernetif_linkoutput(struct netif *netif, struct pbuf *p);
|
|
|
|
#if defined(__cplusplus)
|
|
}
|
|
#endif /* __cplusplus */
|
|
|
|
#endif /* ENET_ETHERNETIF_PRIV_H */
|