@ -1531,24 +1531,6 @@ static int set_pauseparam(struct net_device *dev,
return 0 ;
}
static u32 get_rx_csum ( struct net_device * dev )
{
struct port_info * p = netdev_priv ( dev ) ;
return p - > rx_offload & RX_CSO ;
}
static int set_rx_csum ( struct net_device * dev , u32 data )
{
struct port_info * p = netdev_priv ( dev ) ;
if ( data )
p - > rx_offload | = RX_CSO ;
else
p - > rx_offload & = ~ RX_CSO ;
return 0 ;
}
static void get_sge_param ( struct net_device * dev , struct ethtool_ringparam * e )
{
const struct port_info * pi = netdev_priv ( dev ) ;
@ -1870,36 +1852,20 @@ static int set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
return err ;
}
# define TSO_FLAGS (NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_TSO_ECN)
static int set_tso ( struct net_device * dev , u32 value )
{
if ( value )
dev - > features | = TSO_FLAGS ;
else
dev - > features & = ~ TSO_FLAGS ;
return 0 ;
}
static int set_flags ( struct net_device * dev , u32 flags )
static int cxgb_set_features ( struct net_device * dev , u32 features )
{
const struct port_info * pi = netdev_priv ( dev ) ;
u32 changed = dev - > features ^ features ;
int err ;
unsigned long old_feat = dev - > features ;
err = ethtool_op_set_flags ( dev , flags , ETH_FLAG_RXHASH |
ETH_FLAG_RXVLAN | ETH_FLAG_TXVLAN ) ;
if ( err )
return err ;
if ( ( old_feat ^ dev - > features ) & NETIF_F_HW_VLAN_RX ) {
const struct port_info * pi = netdev_priv ( dev ) ;
if ( ! ( changed & NETIF_F_HW_VLAN_RX ) )
return 0 ;
err = t4_set_rxmode ( pi - > adapter , pi - > adapter - > fn , pi - > viid , - 1 ,
- 1 , - 1 , - 1 , ! ! ( flags & ETH_FLAG_RXVLAN ) ,
true ) ;
if ( err )
dev - > features = old_feat ;
}
err = t4_set_rxmode ( pi - > adapter , pi - > adapter - > fn , pi - > viid , - 1 ,
- 1 , - 1 , - 1 ,
! ! ( features & NETIF_F_HW_VLAN_RX ) , true ) ;
if ( unlikely ( err ) )
dev - > features = features ^ NETIF_F_HW_VLAN_RX ;
return err ;
}
@ -2010,10 +1976,6 @@ static struct ethtool_ops cxgb_ethtool_ops = {
. set_eeprom = set_eeprom ,
. get_pauseparam = get_pauseparam ,
. set_pauseparam = set_pauseparam ,
. get_rx_csum = get_rx_csum ,
. set_rx_csum = set_rx_csum ,
. set_tx_csum = ethtool_op_set_tx_ipv6_csum ,
. set_sg = ethtool_op_set_sg ,
. get_link = ethtool_op_get_link ,
. get_strings = get_strings ,
. set_phys_id = identify_port ,
@ -2024,8 +1986,6 @@ static struct ethtool_ops cxgb_ethtool_ops = {
. get_regs = get_regs ,
. get_wol = get_wol ,
. set_wol = set_wol ,
. set_tso = set_tso ,
. set_flags = set_flags ,
. get_rxnfc = get_rxnfc ,
. get_rxfh_indir = get_rss_table ,
. set_rxfh_indir = set_rss_table ,
@ -2882,6 +2842,7 @@ static const struct net_device_ops cxgb4_netdev_ops = {
. ndo_get_stats64 = cxgb_get_stats ,
. ndo_set_rx_mode = cxgb_set_rxmode ,
. ndo_set_mac_address = cxgb_set_mac_addr ,
. ndo_set_features = cxgb_set_features ,
. ndo_validate_addr = eth_validate_addr ,
. ndo_do_ioctl = cxgb_ioctl ,
. ndo_change_mtu = cxgb_change_mtu ,
@ -3564,6 +3525,7 @@ static void free_some_resources(struct adapter *adapter)
t4_fw_bye ( adapter , adapter - > fn ) ;
}
# define TSO_FLAGS (NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_TSO_ECN)
# define VLAN_FEAT (NETIF_F_SG | NETIF_F_IP_CSUM | TSO_FLAGS | \
NETIF_F_IPV6_CSUM | NETIF_F_HIGHDMA )
@ -3665,14 +3627,14 @@ static int __devinit init_one(struct pci_dev *pdev,
pi = netdev_priv ( netdev ) ;
pi - > adapter = adapter ;
pi - > xact_addr_filt = - 1 ;
pi - > rx_offload = RX_CSO ;
pi - > port_id = i ;
netdev - > irq = pdev - > irq ;
netdev - > features | = NETIF_F_SG | TSO_FLAGS ;
netdev - > features | = NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM ;
netdev - > features | = NETIF_F_GRO | NETIF_F_RXHASH | highdma ;
netdev - > features | = NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX ;
netdev - > hw_features = NETIF_F_SG | TSO_FLAGS |
NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM |
NETIF_F_RXCSUM | NETIF_F_RXHASH |
NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX ;
netdev - > features | = netdev - > hw_features | highdma ;
netdev - > vlan_features = netdev - > features & VLAN_FEAT ;
netdev - > netdev_ops = & cxgb4_netdev_ops ;