clean unused code in macteh driver
This commit is contained in:
@@ -82,7 +82,6 @@ VOID _nx_mnrs_eth_recv_packet(UINT id, volatile ethmac_t* ethmac);
|
||||
VOID _nx_mnrs_eth_recv_packet_eth0(VOID);
|
||||
VOID _nx_mnrs_eth_recv_packet_eth1(VOID);
|
||||
|
||||
#define NX_MAX_MNRS_INTERFACES 4
|
||||
#define NX_MNRS_DRIVER_MAX_MCAST_ADDRESSES 3
|
||||
typedef struct MAC_ADDRESS_STRUCT
|
||||
{
|
||||
@@ -118,7 +117,7 @@ typedef struct _nx_mnrs_network_driver_instance_type
|
||||
/* In this example, there are four instances of the MNRS ETH driver.
|
||||
Therefore an array of four driver instances are created to keep track of
|
||||
the interface information of each driver. */
|
||||
static _nx_mnrs_network_driver_instance_type nx_mnrs_driver[NX_MAX_MNRS_INTERFACES];
|
||||
static _nx_mnrs_network_driver_instance_type nx_mnrs_driver[NX_MAX_PHYSICAL_INTERFACES];
|
||||
|
||||
|
||||
/**************************************************************************/
|
||||
@@ -201,12 +200,9 @@ ULONG *ethernet_frame_ptr;
|
||||
/* Obtain the index number of the network interface. */
|
||||
interface_index = interface_ptr -> nx_interface_index;
|
||||
/* Find out the driver interface if the driver command is not ATTACH. */
|
||||
if (driver_req_ptr -> nx_ip_driver_command != NX_LINK_INTERFACE_ATTACH)
|
||||
{
|
||||
for (i = 0; i < NX_MAX_MNRS_INTERFACES; i++)
|
||||
{
|
||||
if (nx_mnrs_driver[i].nx_mnrs_network_driver_in_use == 0)
|
||||
{
|
||||
if(driver_req_ptr->nx_ip_driver_command != NX_LINK_INTERFACE_ATTACH) {
|
||||
for(i = 0; i < NX_MAX_PHYSICAL_INTERFACES; i++) {
|
||||
if(nx_mnrs_driver[i].nx_mnrs_network_driver_in_use == 0) {
|
||||
continue;
|
||||
}
|
||||
if (nx_mnrs_driver[i].nx_mnrs_driver_ip_ptr != ip_ptr)
|
||||
@@ -218,9 +214,8 @@ ULONG *ethernet_frame_ptr;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i == NX_MAX_MNRS_INTERFACES)
|
||||
{
|
||||
driver_req_ptr -> nx_ip_driver_status = NX_INVALID_INTERFACE;
|
||||
if(i == NX_MAX_PHYSICAL_INTERFACES) {
|
||||
driver_req_ptr->nx_ip_driver_status = NX_INVALID_INTERFACE;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -231,16 +226,13 @@ ULONG *ethernet_frame_ptr;
|
||||
case NX_LINK_INTERFACE_ATTACH:
|
||||
{
|
||||
/* Find an available driver instance to attach the interface. */
|
||||
for (i = 0; i < NX_MAX_MNRS_INTERFACES; i++)
|
||||
{
|
||||
if (nx_mnrs_driver[i].nx_mnrs_network_driver_in_use == 0)
|
||||
{
|
||||
for(i = 0; i < NX_MAX_PHYSICAL_INTERFACES; i++) {
|
||||
if(nx_mnrs_driver[i].nx_mnrs_network_driver_in_use == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
/* An available entry is found. */
|
||||
if (i < NX_MAX_MNRS_INTERFACES)
|
||||
{
|
||||
if(i < NX_MAX_PHYSICAL_INTERFACES) {
|
||||
/* Set the IN USE flag.*/
|
||||
nx_mnrs_driver[i].nx_mnrs_network_driver_in_use = 1;
|
||||
nx_mnrs_driver[i].nx_mnrs_network_driver_id = i;
|
||||
@@ -577,16 +569,13 @@ ULONG *ethernet_frame_ptr;
|
||||
case NX_LINK_SET_PHYSICAL_ADDRESS:
|
||||
{
|
||||
/* Find an driver instance to attach the interface. */
|
||||
for (i = 0; i < NX_MAX_MNRS_INTERFACES; i++)
|
||||
{
|
||||
if (nx_mnrs_driver[i].nx_mnrs_driver_interface_ptr == interface_ptr)
|
||||
{
|
||||
for(i = 0; i < NX_MAX_PHYSICAL_INTERFACES; i++) {
|
||||
if(nx_mnrs_driver[i].nx_mnrs_driver_interface_ptr == interface_ptr) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
/* An available entry is found. */
|
||||
if (i < NX_MAX_MNRS_INTERFACES)
|
||||
{
|
||||
if(i < NX_MAX_PHYSICAL_INTERFACES) {
|
||||
/* Set the physical address. */
|
||||
nx_mnrs_driver[i].nx_mnrs_driver_mac_address.nx_mac_address_msw = driver_req_ptr -> nx_ip_driver_physical_address_msw;
|
||||
nx_mnrs_driver[i].nx_mnrs_driver_mac_address.nx_mac_address_lsw = driver_req_ptr -> nx_ip_driver_physical_address_lsw;
|
||||
@@ -910,47 +899,37 @@ UINT mcast_mac_addr_hit_idx(UINT i, MAC_ADDRESS*mac_addr) {
|
||||
}
|
||||
|
||||
static UCHAR nx_mnrs_receive_buffer[NX_MAX_PACKET_SIZE];
|
||||
VOID _nx_mnrs_eth_recv_packet(UINT id, volatile ethmac_t* ethmac){
|
||||
UINT bit_size;
|
||||
UINT word_size;
|
||||
UINT byte_size;
|
||||
UINT i;
|
||||
VOID _nx_mnrs_eth_recv_packet(UINT id, volatile ethmac_t* ethmac) {
|
||||
UINT bits_received;
|
||||
UINT words_to_read;
|
||||
UINT i, j;
|
||||
UINT word;
|
||||
UCHAR buffer[16];
|
||||
MAC_ADDRESS to_mac;
|
||||
MAC_ADDRESS from_mac;
|
||||
UINT status;
|
||||
NX_PACKET* packet_ptr;
|
||||
NX_IP* ip_ptr;
|
||||
UCHAR* data;
|
||||
UINT bytes_received;
|
||||
UINT address_len;
|
||||
UINT packet_type;
|
||||
UINT status;
|
||||
NX_PACKET* packet_ptr;
|
||||
NX_IP* ip_ptr;
|
||||
UCHAR* data;
|
||||
UINT bytes_received;
|
||||
UINT address_len;
|
||||
UINT packet_type;
|
||||
|
||||
set_ethmac_mac_intr_rx_data_avail_intr_enable(ethmac, 0);
|
||||
bit_size = get_ethmac_mac_rx(ethmac);
|
||||
word_size = (bit_size+31)/32;
|
||||
byte_size = (bit_size+7)/8;
|
||||
if(word_size<4)
|
||||
bits_received = get_ethmac_mac_rx(ethmac);
|
||||
words_to_read = (bits_received+31)/32;
|
||||
if(words_to_read<4)
|
||||
{
|
||||
for(j = 0;j < words_to_read;j++)
|
||||
{
|
||||
while(!get_ethmac_mac_ctrl_rx_pending(ethmac))
|
||||
;
|
||||
// be carefull of unaligned accesses since data is 2byte aligned
|
||||
word = get_ethmac_mac_rx(ethmac);
|
||||
memcpy(data + j * sizeof(UINT), &word, sizeof(UINT));
|
||||
}
|
||||
set_ethmac_mac_intr_rx_data_avail_intr_enable(ethmac, 1);
|
||||
return;
|
||||
}
|
||||
// read the first 14 bytes to get from and to mac address (6bytes each) and the frame type/length
|
||||
for( i = 0;i < 4;i++)
|
||||
{
|
||||
while(!get_ethmac_mac_ctrl_rx_pending(ethmac))
|
||||
;
|
||||
// be carefull of unaligned accesses
|
||||
word = get_ethmac_mac_rx(ethmac);
|
||||
memcpy(buffer+i*sizeof(UINT), &word, sizeof(UINT));
|
||||
}
|
||||
to_mac.nx_mac_address_msw=(buffer[0]<<8) + buffer[1];
|
||||
to_mac.nx_mac_address_lsw=(buffer[2]<<24) + (buffer[3]<<16) + (buffer[4]<<8) + buffer[5];
|
||||
from_mac.nx_mac_address_msw=(buffer[6]<<8) + buffer[7];
|
||||
from_mac.nx_mac_address_lsw=(buffer[8]<<24) + (buffer[9]<<16) + (buffer[10]<<8) + buffer[11];
|
||||
// find the diver instance belonging to our ethmac
|
||||
for(i=0; i<NX_MAX_MNRS_INTERFACES; ++i) {
|
||||
for(i=0; i<NX_MAX_PHYSICAL_INTERFACES; ++i) {
|
||||
if(nx_mnrs_driver[i].ethmac == ethmac)
|
||||
{
|
||||
ip_ptr = nx_mnrs_driver[i].nx_mnrs_driver_ip_ptr;
|
||||
@@ -961,33 +940,32 @@ VOID _nx_mnrs_eth_recv_packet(UINT id, volatile ethmac_t* ethmac){
|
||||
packet_ptr = NX_NULL;
|
||||
data = nx_mnrs_receive_buffer;
|
||||
}
|
||||
else if (ip_ptr -> nx_ip_default_packet_pool -> nx_packet_pool_payload_size >= (NX_LINK_MTU + 2))
|
||||
else if(ip_ptr->nx_ip_default_packet_pool->nx_packet_pool_payload_size >= (NX_LINK_MTU + 2))
|
||||
{
|
||||
data = packet_ptr -> nx_packet_prepend_ptr + 2;
|
||||
data = packet_ptr->nx_packet_prepend_ptr + 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
data = nx_mnrs_receive_buffer;
|
||||
}
|
||||
/* read the data from the rx buffer into the packet pointer or our frame buffer */
|
||||
memcpy(data, buffer, 16);
|
||||
/* now get the remaining bytes from the ethmac peripheral */
|
||||
for( i = 4;i < word_size;i++){
|
||||
for(j = 0;j < words_to_read;j++)
|
||||
{
|
||||
while(!get_ethmac_mac_ctrl_rx_pending(ethmac))
|
||||
;
|
||||
// be carefull of unaligned accesses
|
||||
// be carefull of unaligned accesses since data is 2byte aligned
|
||||
word = get_ethmac_mac_rx(ethmac);
|
||||
memcpy(data+i*sizeof(UINT), &word, sizeof(UINT));
|
||||
memcpy(data + j * sizeof(UINT), &word, sizeof(UINT));
|
||||
}
|
||||
if (packet_ptr == NX_NULL)
|
||||
if(packet_ptr == NX_NULL)
|
||||
{
|
||||
/* No packet available. Drop it and continue. */
|
||||
return;
|
||||
}
|
||||
/* Make sure IP header is 4-byte aligned. */
|
||||
packet_ptr -> nx_packet_prepend_ptr += 2;
|
||||
packet_ptr -> nx_packet_append_ptr += 2;
|
||||
if (data == nx_mnrs_receive_buffer)
|
||||
packet_ptr->nx_packet_prepend_ptr += 2;
|
||||
packet_ptr->nx_packet_append_ptr += 2;
|
||||
if(data == nx_mnrs_receive_buffer)
|
||||
{
|
||||
/* Copy data into packet. */
|
||||
status = nx_packet_data_append(packet_ptr, (VOID *)data, bytes_received,
|
||||
@@ -1000,73 +978,28 @@ VOID _nx_mnrs_eth_recv_packet(UINT id, volatile ethmac_t* ethmac){
|
||||
}
|
||||
else
|
||||
{
|
||||
packet_ptr -> nx_packet_length = (ULONG)bytes_received;
|
||||
packet_ptr -> nx_packet_append_ptr += (ULONG)bytes_received;
|
||||
packet_ptr->nx_packet_length = (ULONG)bytes_received;
|
||||
packet_ptr->nx_packet_append_ptr += (ULONG)bytes_received;
|
||||
}
|
||||
/* Pickup the packet header to determine where the packet needs to be sent. */
|
||||
packet_type = (((UINT)(*(packet_ptr -> nx_packet_prepend_ptr + 12))) << 8) |
|
||||
((UINT)(*(packet_ptr -> nx_packet_prepend_ptr + 13)));
|
||||
/* Route the incoming packet according to its ethernet type. */
|
||||
if ((packet_type == NX_ETHERNET_IP) || (packet_type == NX_ETHERNET_IPV6))
|
||||
{
|
||||
/* Note: The length reported by some Ethernet hardware includes bytes after the packet
|
||||
as well as the Ethernet header. In some cases, the actual packet length after the
|
||||
Ethernet header should be derived from the length in the IP header (lower 16 bits of
|
||||
the first 32-bit word). */
|
||||
|
||||
/* Clean off the Ethernet header. */
|
||||
packet_ptr -> nx_packet_prepend_ptr = packet_ptr -> nx_packet_prepend_ptr + NX_ETHERNET_SIZE;
|
||||
/* Adjust the packet length. */
|
||||
packet_ptr -> nx_packet_length = packet_ptr -> nx_packet_length - NX_ETHERNET_SIZE;
|
||||
_nx_ip_packet_deferred_receive(ip_ptr, packet_ptr);
|
||||
}
|
||||
else if (packet_type == NX_ETHERNET_ARP)
|
||||
{
|
||||
/* Clean off the Ethernet header. */
|
||||
packet_ptr -> nx_packet_prepend_ptr = packet_ptr -> nx_packet_prepend_ptr + NX_ETHERNET_SIZE;
|
||||
/* Adjust the packet length. */
|
||||
packet_ptr -> nx_packet_length = packet_ptr -> nx_packet_length - NX_ETHERNET_SIZE;
|
||||
_nx_arp_packet_deferred_receive(ip_ptr, packet_ptr);
|
||||
}
|
||||
else if (packet_type == NX_ETHERNET_RARP)
|
||||
{
|
||||
/* Clean off the Ethernet header. */
|
||||
packet_ptr -> nx_packet_prepend_ptr = packet_ptr -> nx_packet_prepend_ptr + NX_ETHERNET_SIZE;
|
||||
/* Adjust the packet length. */
|
||||
packet_ptr -> nx_packet_length = packet_ptr -> nx_packet_length - NX_ETHERNET_SIZE;
|
||||
_nx_rarp_packet_deferred_receive(ip_ptr, packet_ptr);
|
||||
}
|
||||
#ifdef NX_ENABLE_PPPOE
|
||||
else if ((packet_type == NX_ETHERNET_PPPOE_DISCOVERY) ||
|
||||
(packet_type == NX_ETHERNET_PPPOE_SESSION))
|
||||
{
|
||||
/* Clean off the Ethernet header. */
|
||||
packet_ptr -> nx_packet_prepend_ptr = packet_ptr -> nx_packet_prepend_ptr + NX_ETHERNET_SIZE;
|
||||
/* Adjust the packet length. */
|
||||
packet_ptr -> nx_packet_length = packet_ptr -> nx_packet_length - NX_ETHERNET_SIZE;
|
||||
/* Route to the PPPoE receive function. */
|
||||
_nx_pppoe_packet_deferred_receive(packet_ptr);
|
||||
}
|
||||
#endif
|
||||
else
|
||||
{
|
||||
/* Invalid ethernet header... release the packet. */
|
||||
nx_packet_release(packet_ptr);
|
||||
}
|
||||
_nx_mnrs_network_driver_receive(ip_ptr, packet_ptr, i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
set_ethmac_mac_intr_rx_data_avail_intr_enable(ethmac, 1);
|
||||
}
|
||||
|
||||
VOID _nx_mnrs_eth_recv_packet_eth0(VOID){
|
||||
if(get_ethmac_mac_ctrl_rx_pending(ethmac0)) {
|
||||
VOID _nx_mnrs_eth_recv_packet_eth0(VOID) {
|
||||
if(get_ethmac_mac_ctrl_rx_pending(ethmac0))
|
||||
{
|
||||
_nx_mnrs_eth_recv_packet(0, ethmac0);
|
||||
}
|
||||
}
|
||||
|
||||
VOID _nx_mnrs_eth_recv_packet_eth1(VOID){
|
||||
if(get_ethmac_mac_ctrl_rx_pending(ethmac1)) {
|
||||
_nx_mnrs_eth_recv_packet(1, ethmac1);
|
||||
VOID _nx_mnrs_eth_recv_packet_eth1(VOID) {
|
||||
if(get_ethmac_mac_ctrl_rx_pending(ethmac1))
|
||||
{
|
||||
_nx_mnrs_eth_recv_packet(1, ethmac1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user