/** \brief Attempt to read a packet from the EMAC interface. * * \param[in] netif the lwip network interface structure * \param[in] idx index of packet to be read */ void k64f_enetif_input(struct netif *netif, int idx) { struct eth_hdr *ethhdr; struct pbuf *p; /* move received packet into a new pbuf */ p = k64f_low_level_input(netif, idx); if (p == NULL) return; /* points to packet payload, which starts with an Ethernet header */ ethhdr = (struct eth_hdr*)p->payload; switch (htons(ethhdr->type)) { case ETHTYPE_IP: case ETHTYPE_ARP: #if PPPOE_SUPPORT case ETHTYPE_PPPOEDISC: case ETHTYPE_PPPOE: #endif /* PPPOE_SUPPORT */ /* full packet send to tcpip_thread to process */ if (netif->input(p, netif) != ERR_OK) { LWIP_DEBUGF(NETIF_DEBUG, ("k64f_enetif_input: IP input error\n")); /* Free buffer */ pbuf_free(p); } break; default: /* Return buffer */ pbuf_free(p); break; } }
/** \brief Attempt to read a packet from the EMAC interface. * * \param[in] netif the lwip network interface structure * \param[in] idx index of packet to be read */ void k64f_enetif_input(struct netif *netif, int idx) { struct pbuf *p; /* move received packet into a new pbuf */ p = k64f_low_level_input(netif, idx); if (p == NULL) return; /* pass all packets to ethernet_input, which decides what packets it supports */ if (netif->input(p, netif) != ERR_OK) { LWIP_DEBUGF(NETIF_DEBUG, ("k64f_enetif_input: input error\n")); /* Free buffer */ pbuf_free(p); } }