ipeth_restart_send() attempts to send out the packets in an ip port's linked list of ethernet packets waiting to be sent out. If the ethernet packets are too large, ipeth_restart_send() calls ip_split_pack() to split the ethernet packet's encapsulated ip packet into two fragments.
ipeth_restart_send() is called in a number of places within ip_eth.c. For example, ipeth_restart_send() is called if an arp-reply is received for a previous arp-request sent out by the system. Since the destination ethernet address for an ethernet packet is now known, an attempt to send out the packet can be made.