Author: arybchik
Date: Thu May 21 09:03:18 2015
New Revision: 283205
URL: https://svnweb.freebsd.org/changeset/base/283205

Log:
  MFC: r282903
  
  sfxge: advertise IPv6 Rx and Tx checksum offload support
  
  Tx checksum offload may be enabled/disabled.
  
  Sponsored by:   Solarflare Communications, Inc.

Modified:
  stable/10/sys/dev/sfxge/sfxge.c
  stable/10/sys/dev/sfxge/sfxge_tx.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/dev/sfxge/sfxge.c
==============================================================================
--- stable/10/sys/dev/sfxge/sfxge.c     Thu May 21 09:00:45 2015        
(r283204)
+++ stable/10/sys/dev/sfxge/sfxge.c     Thu May 21 09:03:18 2015        
(r283205)
@@ -60,10 +60,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)
 #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)
 
 MALLOC_DEFINE(M_SFXGE, "sfxge", "Solarflare 10GigE driver");
@@ -275,6 +277,10 @@ sfxge_if_ioctl(struct ifnet *ifp, unsign
                        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
@@ -325,7 +331,8 @@ sfxge_ifnet_init(struct ifnet *ifp, stru
 
        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);
 

Modified: stable/10/sys/dev/sfxge/sfxge_tx.c
==============================================================================
--- stable/10/sys/dev/sfxge/sfxge_tx.c  Thu May 21 09:00:45 2015        
(r283204)
+++ stable/10/sys/dev/sfxge/sfxge_tx.c  Thu May 21 09:03:18 2015        
(r283205)
@@ -699,7 +699,8 @@ sfxge_if_transmit(struct ifnet *ifp, str
                ("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 */
_______________________________________________
svn-src-stable-10@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-stable-10
To unsubscribe, send any mail to "svn-src-stable-10-unsubscr...@freebsd.org"

Reply via email to