see sys/net/if_fwsubr.c::firewire_input(). Why does it perform htonl() at the time of input of a packet? An input packet is a network-byte-order. We should use ntohl(). Fix: sys/net/if_fwsubr.c::firewire_input() ------------------------------------- void firewire_input(struct ifnet *ifp, struct mbuf *m, uint16_t src) { ... snip ... /* * Byte swap the encapsulation header manually. */ - enc->ul[0] = htonl(enc->ul[0]); + enc->ul[0] = ntohl(enc->ul[0]); if (enc->unfrag.lf != 0) { m = m_pullup(m, 2*sizeof(uint32_t)); if (!m) return; enc = mtod(m, union fw_encap *); - enc->ul[1] = htonl(enc->ul[1]); + enc->ul[1] = ntohl(enc->ul[1]); m = firewire_input_fragment(fc, m, src);
Responsible Changed From-To: freebsd-bugs->freebsd-firewire over to the firewire Mailinglist
State Changed From-To: open->closed Looks good, applied! No need to merge this specifically, so closed.