Hi Kyle,
It doesn't look as though you are doing much wrong, so it may be more that one of the calls has failed. I know that some of your code must be working for a SYN to have been sent, but I'd do the following:
Check that m_sock doesn't return NULL;
Explicitly set the socket to blocking mode - m_ioctl(sockfd, SO_BIO, NULL); // data not used by m_ioctl
Check the return from m_connect, if it is EINPROGRESS, the socket is non-blocking. Connected OK will return 0.
What is nmpcts after the call to m_send? -1 indicates an error and a BSD error code may be found in sockfd->error.
If that is all fine, try removing the m_close - maybe the stack dumps the data before it reaches the ethernet interface.
Paul.