Fix VLAN hardware tag insertion/stripping on big-endian

architectures.

Reported by:	naddy
Tested on:	sparc64
MFC after:	1 week
This commit is contained in:
Pyun YongHyeon 2008-08-13 03:40:08 +00:00
parent 2bd5f41aae
commit bddff93469

View file

@ -1903,7 +1903,7 @@ re_rxeof(struct rl_softc *sc)
maxpkt--;
if (rxvlan & RL_RDESC_VLANCTL_TAG) {
m->m_pkthdr.ether_vtag =
ntohs((rxvlan & RL_RDESC_VLANCTL_DATA));
bswap16((rxvlan & RL_RDESC_VLANCTL_DATA));
m->m_flags |= M_VLANTAG;
}
RL_UNLOCK(sc);
@ -2307,7 +2307,7 @@ re_encap(struct rl_softc *sc, struct mbuf **m_head)
* transmission attempt.
*/
if ((*m_head)->m_flags & M_VLANTAG)
vlanctl |= htons((*m_head)->m_pkthdr.ether_vtag) |
vlanctl |= bswap16((*m_head)->m_pkthdr.ether_vtag) |
RL_TDESC_VLANCTL_TAG;
si = prod;