A comment at the beginning of the function notes that we may be
transmitting multiple fragments as distinct fragments. So, the function
loops over all fragments, transmitting each mbuf chain. If if_transmit
fails, we need to free all of the fragments, but m_freem() only frees an
mbuf chain - it doesn't follow m_nextpkt.
Change the error handler to free each packet fragment, and count each
fragment as a separate error since we increment OPACKETS once per
fragment when transmission is successful.