Commit e92702b1 authored by Michał Mirosław's avatar Michał Mirosław Committed by David S. Miller

skge: convert to hw_features

just IP_CSUM.  This needs testing and so is not changed here.
Signed-off-by: default avatarMichał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 57841869
...@@ -537,46 +537,6 @@ static int skge_nway_reset(struct net_device *dev) ...@@ -537,46 +537,6 @@ static int skge_nway_reset(struct net_device *dev)
return 0; return 0;
} }
static int skge_set_sg(struct net_device *dev, u32 data)
{
struct skge_port *skge = netdev_priv(dev);
struct skge_hw *hw = skge->hw;
if (hw->chip_id == CHIP_ID_GENESIS && data)
return -EOPNOTSUPP;
return ethtool_op_set_sg(dev, data);
}
static int skge_set_tx_csum(struct net_device *dev, u32 data)
{
struct skge_port *skge = netdev_priv(dev);
struct skge_hw *hw = skge->hw;
if (hw->chip_id == CHIP_ID_GENESIS && data)
return -EOPNOTSUPP;
return ethtool_op_set_tx_csum(dev, data);
}
static u32 skge_get_rx_csum(struct net_device *dev)
{
struct skge_port *skge = netdev_priv(dev);
return skge->rx_csum;
}
/* Only Yukon supports checksum offload. */
static int skge_set_rx_csum(struct net_device *dev, u32 data)
{
struct skge_port *skge = netdev_priv(dev);
if (skge->hw->chip_id == CHIP_ID_GENESIS && data)
return -EOPNOTSUPP;
skge->rx_csum = data;
return 0;
}
static void skge_get_pauseparam(struct net_device *dev, static void skge_get_pauseparam(struct net_device *dev,
struct ethtool_pauseparam *ecmd) struct ethtool_pauseparam *ecmd)
{ {
...@@ -924,10 +884,6 @@ static const struct ethtool_ops skge_ethtool_ops = { ...@@ -924,10 +884,6 @@ static const struct ethtool_ops skge_ethtool_ops = {
.set_pauseparam = skge_set_pauseparam, .set_pauseparam = skge_set_pauseparam,
.get_coalesce = skge_get_coalesce, .get_coalesce = skge_get_coalesce,
.set_coalesce = skge_set_coalesce, .set_coalesce = skge_set_coalesce,
.set_sg = skge_set_sg,
.set_tx_csum = skge_set_tx_csum,
.get_rx_csum = skge_get_rx_csum,
.set_rx_csum = skge_set_rx_csum,
.get_strings = skge_get_strings, .get_strings = skge_get_strings,
.set_phys_id = skge_set_phys_id, .set_phys_id = skge_set_phys_id,
.get_sset_count = skge_get_sset_count, .get_sset_count = skge_get_sset_count,
...@@ -3084,7 +3040,8 @@ static struct sk_buff *skge_rx_get(struct net_device *dev, ...@@ -3084,7 +3040,8 @@ static struct sk_buff *skge_rx_get(struct net_device *dev,
} }
skb_put(skb, len); skb_put(skb, len);
if (skge->rx_csum) {
if (dev->features & NETIF_F_RXCSUM) {
skb->csum = csum; skb->csum = csum;
skb->ip_summed = CHECKSUM_COMPLETE; skb->ip_summed = CHECKSUM_COMPLETE;
} }
...@@ -3846,10 +3803,10 @@ static struct net_device *skge_devinit(struct skge_hw *hw, int port, ...@@ -3846,10 +3803,10 @@ static struct net_device *skge_devinit(struct skge_hw *hw, int port,
setup_timer(&skge->link_timer, xm_link_timer, (unsigned long) skge); setup_timer(&skge->link_timer, xm_link_timer, (unsigned long) skge);
if (hw->chip_id != CHIP_ID_GENESIS) { if (hw->chip_id != CHIP_ID_GENESIS) {
dev->features |= NETIF_F_IP_CSUM | NETIF_F_SG; dev->hw_features = NETIF_F_IP_CSUM | NETIF_F_SG |
skge->rx_csum = 1; NETIF_F_RXCSUM;
dev->features |= dev->hw_features;
} }
dev->features |= NETIF_F_GRO;
/* read the mac address */ /* read the mac address */
memcpy_fromio(dev->dev_addr, hw->regs + B2_MAC_1 + port*8, ETH_ALEN); memcpy_fromio(dev->dev_addr, hw->regs + B2_MAC_1 + port*8, ETH_ALEN);
......
...@@ -2460,7 +2460,6 @@ struct skge_port { ...@@ -2460,7 +2460,6 @@ struct skge_port {
struct timer_list link_timer; struct timer_list link_timer;
enum pause_control flow_control; enum pause_control flow_control;
enum pause_status flow_status; enum pause_status flow_status;
u8 rx_csum;
u8 blink_on; u8 blink_on;
u8 wol; u8 wol;
u8 autoneg; /* AUTONEG_ENABLE, AUTONEG_DISABLE */ u8 autoneg; /* AUTONEG_ENABLE, AUTONEG_DISABLE */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment