cxgb_main.c (237263) | cxgb_main.c (237832) |
---|---|
1/************************************************************************** 2 3Copyright (c) 2007-2009, Chelsio Inc. 4All rights reserved. 5 6Redistribution and use in source and binary forms, with or without 7modification, are permitted provided that the following conditions are met: 8 --- 14 unchanged lines hidden (view full) --- 23INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26POSSIBILITY OF SUCH DAMAGE. 27 28***************************************************************************/ 29 30#include <sys/cdefs.h> | 1/************************************************************************** 2 3Copyright (c) 2007-2009, Chelsio Inc. 4All rights reserved. 5 6Redistribution and use in source and binary forms, with or without 7modification, are permitted provided that the following conditions are met: 8 --- 14 unchanged lines hidden (view full) --- 23INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26POSSIBILITY OF SUCH DAMAGE. 27 28***************************************************************************/ 29 30#include <sys/cdefs.h> |
31__FBSDID("$FreeBSD: head/sys/dev/cxgb/cxgb_main.c 237263 2012-06-19 07:34:13Z np $"); | 31__FBSDID("$FreeBSD: head/sys/dev/cxgb/cxgb_main.c 237832 2012-06-30 02:11:53Z np $"); |
32 33#include "opt_inet.h" 34 35#include <sys/param.h> 36#include <sys/systm.h> 37#include <sys/kernel.h> 38#include <sys/bus.h> 39#include <sys/module.h> --- 941 unchanged lines hidden (view full) --- 981 982 pi->port_cdev->si_drv1 = (void *)pi; 983 984 return (0); 985} 986 987#define CXGB_CAP (IFCAP_VLAN_HWTAGGING | IFCAP_VLAN_MTU | IFCAP_HWCSUM | \ 988 IFCAP_VLAN_HWCSUM | IFCAP_TSO | IFCAP_JUMBO_MTU | IFCAP_LRO | \ | 32 33#include "opt_inet.h" 34 35#include <sys/param.h> 36#include <sys/systm.h> 37#include <sys/kernel.h> 38#include <sys/bus.h> 39#include <sys/module.h> --- 941 unchanged lines hidden (view full) --- 981 982 pi->port_cdev->si_drv1 = (void *)pi; 983 984 return (0); 985} 986 987#define CXGB_CAP (IFCAP_VLAN_HWTAGGING | IFCAP_VLAN_MTU | IFCAP_HWCSUM | \ 988 IFCAP_VLAN_HWCSUM | IFCAP_TSO | IFCAP_JUMBO_MTU | IFCAP_LRO | \ |
989 IFCAP_VLAN_HWTSO | IFCAP_LINKSTATE) | 989 IFCAP_VLAN_HWTSO | IFCAP_LINKSTATE | IFCAP_HWCSUM_IPV6) |
990#define CXGB_CAP_ENABLE CXGB_CAP 991 992static int 993cxgb_port_attach(device_t dev) 994{ 995 struct port_info *p; 996 struct ifnet *ifp; 997 int err; --- 24 unchanged lines hidden (view full) --- 1022 ifp->if_qflush = cxgb_qflush; 1023 1024 ifp->if_capabilities = CXGB_CAP; 1025#ifdef TCP_OFFLOAD 1026 if (is_offload(sc)) 1027 ifp->if_capabilities |= IFCAP_TOE4; 1028#endif 1029 ifp->if_capenable = CXGB_CAP_ENABLE; | 990#define CXGB_CAP_ENABLE CXGB_CAP 991 992static int 993cxgb_port_attach(device_t dev) 994{ 995 struct port_info *p; 996 struct ifnet *ifp; 997 int err; --- 24 unchanged lines hidden (view full) --- 1022 ifp->if_qflush = cxgb_qflush; 1023 1024 ifp->if_capabilities = CXGB_CAP; 1025#ifdef TCP_OFFLOAD 1026 if (is_offload(sc)) 1027 ifp->if_capabilities |= IFCAP_TOE4; 1028#endif 1029 ifp->if_capenable = CXGB_CAP_ENABLE; |
1030 ifp->if_hwassist = CSUM_TCP | CSUM_UDP | CSUM_IP | CSUM_TSO; | 1030 ifp->if_hwassist = CSUM_TCP | CSUM_UDP | CSUM_IP | CSUM_TSO | 1031 CSUM_UDP_IPV6 | CSUM_TCP_IPV6; |
1031 1032 /* 1033 * Disable TSO on 4-port - it isn't supported by the firmware. 1034 */ 1035 if (sc->params.nports > 2) { 1036 ifp->if_capabilities &= ~(IFCAP_TSO | IFCAP_VLAN_HWTSO); 1037 ifp->if_capenable &= ~(IFCAP_TSO | IFCAP_VLAN_HWTSO); 1038 ifp->if_hwassist &= ~CSUM_TSO; --- 906 unchanged lines hidden (view full) --- 1945 if (error) 1946 goto fail; 1947 1948 mask = ifr->ifr_reqcap ^ ifp->if_capenable; 1949 if (mask & IFCAP_TXCSUM) { 1950 ifp->if_capenable ^= IFCAP_TXCSUM; 1951 ifp->if_hwassist ^= (CSUM_TCP | CSUM_UDP | CSUM_IP); 1952 | 1032 1033 /* 1034 * Disable TSO on 4-port - it isn't supported by the firmware. 1035 */ 1036 if (sc->params.nports > 2) { 1037 ifp->if_capabilities &= ~(IFCAP_TSO | IFCAP_VLAN_HWTSO); 1038 ifp->if_capenable &= ~(IFCAP_TSO | IFCAP_VLAN_HWTSO); 1039 ifp->if_hwassist &= ~CSUM_TSO; --- 906 unchanged lines hidden (view full) --- 1946 if (error) 1947 goto fail; 1948 1949 mask = ifr->ifr_reqcap ^ ifp->if_capenable; 1950 if (mask & IFCAP_TXCSUM) { 1951 ifp->if_capenable ^= IFCAP_TXCSUM; 1952 ifp->if_hwassist ^= (CSUM_TCP | CSUM_UDP | CSUM_IP); 1953 |
1953 if (IFCAP_TSO & ifp->if_capenable && | 1954 if (IFCAP_TSO4 & ifp->if_capenable && |
1954 !(IFCAP_TXCSUM & ifp->if_capenable)) { | 1955 !(IFCAP_TXCSUM & ifp->if_capenable)) { |
1955 ifp->if_capenable &= ~IFCAP_TSO; 1956 ifp->if_hwassist &= ~CSUM_TSO; | 1956 ifp->if_capenable &= ~IFCAP_TSO4; |
1957 if_printf(ifp, | 1957 if_printf(ifp, |
1958 "tso disabled due to -txcsum.\n"); | 1958 "tso4 disabled due to -txcsum.\n"); |
1959 } 1960 } | 1959 } 1960 } |
1961 if (mask & IFCAP_TXCSUM_IPV6) { 1962 ifp->if_capenable ^= IFCAP_TXCSUM_IPV6; 1963 ifp->if_hwassist ^= (CSUM_UDP_IPV6 | CSUM_TCP_IPV6); 1964 1965 if (IFCAP_TSO6 & ifp->if_capenable && 1966 !(IFCAP_TXCSUM_IPV6 & ifp->if_capenable)) { 1967 ifp->if_capenable &= ~IFCAP_TSO6; 1968 if_printf(ifp, 1969 "tso6 disabled due to -txcsum6.\n"); 1970 } 1971 } |
|
1961 if (mask & IFCAP_RXCSUM) 1962 ifp->if_capenable ^= IFCAP_RXCSUM; | 1972 if (mask & IFCAP_RXCSUM) 1973 ifp->if_capenable ^= IFCAP_RXCSUM; |
1963 if (mask & IFCAP_TSO) { 1964 ifp->if_capenable ^= IFCAP_TSO; | 1974 if (mask & IFCAP_RXCSUM_IPV6) 1975 ifp->if_capenable ^= IFCAP_RXCSUM_IPV6; |
1965 | 1976 |
1966 if (IFCAP_TSO & ifp->if_capenable) { 1967 if (IFCAP_TXCSUM & ifp->if_capenable) 1968 ifp->if_hwassist |= CSUM_TSO; 1969 else { 1970 ifp->if_capenable &= ~IFCAP_TSO; 1971 ifp->if_hwassist &= ~CSUM_TSO; 1972 if_printf(ifp, 1973 "enable txcsum first.\n"); 1974 error = EAGAIN; 1975 } 1976 } else 1977 ifp->if_hwassist &= ~CSUM_TSO; | 1977 /* 1978 * Note that we leave CSUM_TSO alone (it is always set). The 1979 * kernel takes both IFCAP_TSOx and CSUM_TSO into account before 1980 * sending a TSO request our way, so it's sufficient to toggle 1981 * IFCAP_TSOx only. 1982 */ 1983 if (mask & IFCAP_TSO4) { 1984 if (!(IFCAP_TSO4 & ifp->if_capenable) && 1985 !(IFCAP_TXCSUM & ifp->if_capenable)) { 1986 if_printf(ifp, "enable txcsum first.\n"); 1987 error = EAGAIN; 1988 goto fail; 1989 } 1990 ifp->if_capenable ^= IFCAP_TSO4; |
1978 } | 1991 } |
1992 if (mask & IFCAP_TSO6) { 1993 if (!(IFCAP_TSO6 & ifp->if_capenable) && 1994 !(IFCAP_TXCSUM_IPV6 & ifp->if_capenable)) { 1995 if_printf(ifp, "enable txcsum6 first.\n"); 1996 error = EAGAIN; 1997 goto fail; 1998 } 1999 ifp->if_capenable ^= IFCAP_TSO6; 2000 } |
|
1979 if (mask & IFCAP_LRO) { 1980 ifp->if_capenable ^= IFCAP_LRO; 1981 1982 /* Safe to do this even if cxgb_up not called yet */ 1983 cxgb_set_lro(p, ifp->if_capenable & IFCAP_LRO); 1984 } 1985#ifdef TCP_OFFLOAD 1986 if (mask & IFCAP_TOE4) { --- 1520 unchanged lines hidden --- | 2001 if (mask & IFCAP_LRO) { 2002 ifp->if_capenable ^= IFCAP_LRO; 2003 2004 /* Safe to do this even if cxgb_up not called yet */ 2005 cxgb_set_lro(p, ifp->if_capenable & IFCAP_LRO); 2006 } 2007#ifdef TCP_OFFLOAD 2008 if (mask & IFCAP_TOE4) { --- 1520 unchanged lines hidden --- |