Hi Mattia
You can reference the uTasker project (with integrated TCP/IP stack and real-time Kinetis Ethernet emulation in VisualStudio) on Git Hub. It automatically selects the natural little-endian ENET mode if the chip used support its and operates on all Kinetis parts wit Ethernet or RNDIS over USB.
Below are the defines that need to be controlled so that you quickly solve your present difficulty.
Regards
Mark
#if defined ETHER_DBSWP // natural little-endian
typedef struct stKINETIS_FEC_BD
{
volatile unsigned short usBDLength;
volatile unsigned short usBDControl;
unsigned char *ptrBD_Data;
#if defined EMAC_ENHANCED // additional fields available in enhanced mode
volatile unsigned long ulBDControlEnhanced;
volatile unsigned short usPayloadCS; // only receiver
volatile unsigned short usRxInfoHeaderProt; // only receiver
volatile unsigned long ulBDU;
volatile unsigned long ul1588_timestamp;
unsigned long ulRes[2];
#endif
} KINETIS_FEC_BD;
#define EMPTY_BUFFER 0x8000 // RX BD Control bits
#define RECEIVE_OWNERSHIP_1 0x4000 // can be optionally used by software
#define WRAP_BIT_RX 0x2000
#define RECEIVE_OWNERSHIP_2 0x1000 // can be optionally used by software
#define LAST_IN_FRAME_RX 0x0800
#define RECEIVE_MISS 0x0100 // received due to promiscuous mode only
#define RECEIVE_BROADCAST 0x0080 // received due to broadcast address
#define RECEIVE_MULTICAST 0x0040 // received due to multicast address
#define RECEIVE_LENGTH_VIOL 0x0020 // receive frame length violation
#define RECEIVE_NON_OCTET_AL 0x0010 // non-octet aligned frame
#define RECEIVE_CRC_ERROR 0x0004 // receive CRC or frame error
#define OVERRUN_FRAME 0x0002
#define TRUNCATED_FRAME 0x0001
// Enhanced
//
#define RX_MAC_ERROR 0x80000000
#define RX_PHY_ERROR 0x04000000
#define RX_COLLISION 0x02000000
#define RX_UNICAST 0x01000000
#define RX_GEN_INTERRUPT 0x00800000
#define RX_IP_CS_ERROR 0x00000020
#define RX_PROT_CS_ERROR 0x00000010
#define RX_VLAN 0x00000004
#define RX_IPV6 0x00000002
#define RX_IPV4_FRAG 0x00000001
#define RX_HEADER_LEN_MASK 0xf800
#define RX_PROT_TYPE_MASK 0x00ff
#define READY_TX 0x8000 // TX BD Control bits
#define TRANSMIT_OWNERSHIP_1 0x4000 // can be optionally used by software
#define WRAP_BIT_TX 0x2000
#define TRANSMIT_OWNERSHIP_2 0x1000 // can be optionally used by software
#define LAST_IN_FRAME_TX 0x0800
#define TX_CRC 0x0400
#define TX_ABC 0x0200 // append bad CRC - not supported in enhanced mode
// Enhanced
//
#define TX_GENERATE_INT 0x40000000
#define TX_ADD_TIMESTAMP 0x20000000
#define TX_INSERT_PROT_CS 0x10000000
#define TX_INSERT_IP_CS 0x08000000
#define TX_ERROR_OCCURRED 0x00008000
#define TX_UNDERFLOW_ERROR 0x00002000
#define TX_EXCESS_COLLISIONS 0x00001000
#define TX_FRAME_ERROR 0x00000800
#define TX_LATE_COLLISION 0x00000400
#define TX_OVERFLOW_ERROR 0x00000200
#define TX_TIMESTAMP_ERROR 0x00000100
#define BD_UPDATE_DONE 0x80000000 // rx and tx
#else // big-endian representation
typedef struct stKINETIS_FEC_BD
{
volatile unsigned short usBDControl;
volatile unsigned short usBDLength;
unsigned char *ptrBD_Data;
#if defined EMAC_ENHANCED // additional fields available in enhanced mode
volatile unsigned long ulBDControlEnhanced;
volatile unsigned short usRxInfoHeaderProt; // only receiver
volatile unsigned short usPayloadCS; // only receiver
volatile unsigned long ulBDU;
volatile unsigned long ul1588_timestamp;
unsigned long ulRes[2];
#endif
} KINETIS_FEC_BD;
#define EMPTY_BUFFER 0x0080 // RX BD Control bits
#define RECEIVE_OWNERSHIP_1 0x0040 // can be optionally used by software
#define WRAP_BIT_RX 0x0020
#define RECEIVE_OWNERSHIP_2 0x0010 // can be optionally used by software
#define LAST_IN_FRAME_RX 0x0008
#define RECEIVE_MISS 0x0001 // received due to promiscuous mode only
#define RECEIVE_BROADCAST 0x8000 // received due to broadcast address
#define RECEIVE_MULTICAST 0x4000 // received due to multicast address
#define RECEIVE_LENGTH_VIOL 0x2000 // receive frame length violation
#define RECEIVE_NON_OCTET_AL 0x1000 // non-octet aligned frame
#define RECEIVE_CRC_ERROR 0x0400 // receive CRC or frame error
#define OVERRUN_FRAME 0x0200
#define TRUNCATED_FRAME 0x0100
// Enhanced
//
#define RX_MAC_ERROR 0x00000080
#define RX_PHY_ERROR 0x00000004
#define RX_COLLISION 0x00000002
#define RX_UNICAST 0x00000001
#define RX_GEN_INTERRUPT 0x00008000
#define RX_IP_CS_ERROR 0x20000000
#define RX_PROT_CS_ERROR 0x10000000
#define RX_VLAN 0x04000000
#define RX_IPV6 0x02000000
#define RX_IPV4_FRAG 0x01000000
#define RX_HEADER_LEN_MASK 0x00f8
#define RX_PROT_TYPE_MASK 0xff00
#define READY_TX 0x0080 // TX BD Control bits
#define TRANSMIT_OWNERSHIP_1 0x0040 // can be optionally used by software
#define WRAP_BIT_TX 0x0020
#define TRANSMIT_OWNERSHIP_2 0x0010 // can be optionally used by software
#define LAST_IN_FRAME_TX 0x0008
#define TX_CRC 0x0004
#define TX_ABC 0x0002 // append bad CRC - not supported in enhanced mode
// Enhanced
//
#define TX_GENERATE_INT 0x00000040
#define TX_ADD_TIMESTAMP 0x00000020
#define TX_INSERT_PROT_CS 0x00000010
#define TX_INSERT_IP_CS 0x00000008
#define TX_ERROR_OCCURRED 0x00800000
#define TX_UNDERFLOW_ERROR 0x00200000
#define TX_EXCESS_COLLISIONS 0x00100000
#define TX_FRAME_ERROR 0x00080000
#define TX_LATE_COLLISION 0x00040000
#define TX_OVERFLOW_ERROR 0x00020000
#define TX_TIMESTAMP_ERROR 0x00010000
#define BD_UPDATE_DONE 0x00000080 // rx and tx
#endif