support h/w assisted vlan tag insertion.
This commit is contained in:
parent
9324f158e1
commit
635ee237b0
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: i82557.c,v 1.80 2004/02/19 13:34:51 yamt Exp $ */
|
/* $NetBSD: i82557.c,v 1.81 2004/02/19 14:21:40 yamt Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1997, 1998, 1999, 2001, 2002 The NetBSD Foundation, Inc.
|
* Copyright (c) 1997, 1998, 1999, 2001, 2002 The NetBSD Foundation, Inc.
|
||||||
@ -73,7 +73,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
__KERNEL_RCSID(0, "$NetBSD: i82557.c,v 1.80 2004/02/19 13:34:51 yamt Exp $");
|
__KERNEL_RCSID(0, "$NetBSD: i82557.c,v 1.81 2004/02/19 14:21:40 yamt Exp $");
|
||||||
|
|
||||||
#include "bpfilter.h"
|
#include "bpfilter.h"
|
||||||
#include "rnd.h"
|
#include "rnd.h"
|
||||||
@ -404,6 +404,7 @@ fxp_attach(struct fxp_softc *sc)
|
|||||||
*/
|
*/
|
||||||
ifp->if_capabilities =
|
ifp->if_capabilities =
|
||||||
/*IFCAP_CSUM_IPv4 |*/ IFCAP_CSUM_TCPv4 | IFCAP_CSUM_UDPv4;
|
/*IFCAP_CSUM_IPv4 |*/ IFCAP_CSUM_TCPv4 | IFCAP_CSUM_UDPv4;
|
||||||
|
sc->sc_ethercom.ec_capabilities |= ETHERCAP_VLAN_HWTAGGING;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1016,6 +1017,21 @@ fxp_start(struct ifnet *ifp)
|
|||||||
ipcb->ipcb_ip_schedule |=
|
ipcb->ipcb_ip_schedule |=
|
||||||
FXP_IPCB_TCPUDP_CHECKSUM_ENABLE;
|
FXP_IPCB_TCPUDP_CHECKSUM_ENABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* request VLAN tag insertion if needed.
|
||||||
|
*/
|
||||||
|
if (sc->sc_ethercom.ec_nvlans != 0) {
|
||||||
|
struct m_tag *vtag;
|
||||||
|
|
||||||
|
vtag = m_tag_find(m0, PACKET_TAG_VLAN, NULL);
|
||||||
|
if (vtag) {
|
||||||
|
ipcb->ipcb_vlan_id =
|
||||||
|
htobe16(*(u_int *)(vtag + 1));
|
||||||
|
ipcb->ipcb_ip_activation_high |=
|
||||||
|
FXP_IPCB_INSERTVLAN_ENABLE;
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
KASSERT((csum_flags &
|
KASSERT((csum_flags &
|
||||||
(M_CSUM_IPv4 | M_CSUM_TCPv4 | M_CSUM_UDPv4)) == 0);
|
(M_CSUM_IPv4 | M_CSUM_TCPv4 | M_CSUM_UDPv4)) == 0);
|
||||||
|
Loading…
Reference in New Issue
Block a user