mirror of
https://github.com/opnsense/src.git
synced 2026-06-11 09:41:03 -04:00
sfxge: advertise IPv6 Rx and Tx checksum offload support
Tx checksum offload may be enabled/disabled. Sponsored by: Solarflare Communications, Inc. MFC after: 2 days Differential Revision: https://reviews.freebsd.org/D2543
This commit is contained in:
parent
e51fbd6f54
commit
db7e53aa3f
2 changed files with 10 additions and 2 deletions
|
|
@ -61,10 +61,12 @@ __FBSDID("$FreeBSD$");
|
|||
|
||||
#define SFXGE_CAP (IFCAP_VLAN_MTU | IFCAP_VLAN_HWCSUM | \
|
||||
IFCAP_RXCSUM | IFCAP_TXCSUM | IFCAP_TSO | \
|
||||
IFCAP_RXCSUM_IPV6 | IFCAP_TXCSUM_IPV6 | \
|
||||
IFCAP_JUMBO_MTU | IFCAP_LRO | \
|
||||
IFCAP_VLAN_HWTSO | IFCAP_LINKSTATE | IFCAP_HWSTATS)
|
||||
#define SFXGE_CAP_ENABLE SFXGE_CAP
|
||||
#define SFXGE_CAP_FIXED (IFCAP_VLAN_MTU | IFCAP_RXCSUM | IFCAP_VLAN_HWCSUM | \
|
||||
IFCAP_RXCSUM_IPV6 | \
|
||||
IFCAP_JUMBO_MTU | IFCAP_LINKSTATE | IFCAP_HWSTATS)
|
||||
|
||||
MALLOC_DEFINE(M_SFXGE, "sfxge", "Solarflare 10GigE driver");
|
||||
|
|
@ -276,6 +278,10 @@ sfxge_if_ioctl(struct ifnet *ifp, unsigned long command, caddr_t data)
|
|||
ifp->if_hwassist |= (CSUM_IP | CSUM_TCP | CSUM_UDP);
|
||||
else
|
||||
ifp->if_hwassist &= ~(CSUM_IP | CSUM_TCP | CSUM_UDP);
|
||||
if (ifp->if_capenable & IFCAP_TXCSUM_IPV6)
|
||||
ifp->if_hwassist |= (CSUM_TCP_IPV6 | CSUM_UDP_IPV6);
|
||||
else
|
||||
ifp->if_hwassist &= ~(CSUM_TCP_IPV6 | CSUM_UDP_IPV6);
|
||||
if (ifp->if_capenable & IFCAP_TSO)
|
||||
ifp->if_hwassist |= CSUM_TSO;
|
||||
else
|
||||
|
|
@ -326,7 +332,8 @@ sfxge_ifnet_init(struct ifnet *ifp, struct sfxge_softc *sc)
|
|||
|
||||
ifp->if_capabilities = SFXGE_CAP;
|
||||
ifp->if_capenable = SFXGE_CAP_ENABLE;
|
||||
ifp->if_hwassist = CSUM_TCP | CSUM_UDP | CSUM_IP | CSUM_TSO;
|
||||
ifp->if_hwassist = CSUM_TCP | CSUM_UDP | CSUM_IP | CSUM_TSO |
|
||||
CSUM_TCP_IPV6 | CSUM_UDP_IPV6;
|
||||
|
||||
ether_ifattach(ifp, encp->enc_mac_addr);
|
||||
|
||||
|
|
|
|||
|
|
@ -699,7 +699,8 @@ sfxge_if_transmit(struct ifnet *ifp, struct mbuf *m)
|
|||
("interface not up"));
|
||||
|
||||
/* Pick the desired transmit queue. */
|
||||
if (m->m_pkthdr.csum_flags & (CSUM_DELAY_DATA | CSUM_TSO)) {
|
||||
if (m->m_pkthdr.csum_flags &
|
||||
(CSUM_DELAY_DATA | CSUM_TCP_IPV6 | CSUM_UDP_IPV6 | CSUM_TSO)) {
|
||||
int index = 0;
|
||||
|
||||
/* check if flowid is set */
|
||||
|
|
|
|||
Loading…
Reference in a new issue