From 3e8fa257d597f4c73bf31001e33b20f1d152d371 Mon Sep 17 00:00:00 2001 From: Eyck Jentzsch Date: Tue, 3 Feb 2026 22:54:53 +0100 Subject: [PATCH] clean unused code in macteh driver --- port/moonlight/mnrs_network_driver.c | 179 +++++++++------------------ 1 file changed, 56 insertions(+), 123 deletions(-) diff --git a/port/moonlight/mnrs_network_driver.c b/port/moonlight/mnrs_network_driver.c index 2c77631..c0da155 100644 --- a/port/moonlight/mnrs_network_driver.c +++ b/port/moonlight/mnrs_network_driver.c @@ -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_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); } }