Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+5 −48
Original line number Diff line number Diff line
@@ -537,46 +537,6 @@ static int skge_nway_reset(struct net_device *dev)
	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,
				struct ethtool_pauseparam *ecmd)
{
@@ -924,10 +884,6 @@ static const struct ethtool_ops skge_ethtool_ops = {
	.set_pauseparam = skge_set_pauseparam,
	.get_coalesce	= skge_get_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,
	.set_phys_id	= skge_set_phys_id,
	.get_sset_count = skge_get_sset_count,
@@ -3084,7 +3040,8 @@ static struct sk_buff *skge_rx_get(struct net_device *dev,
	}

	skb_put(skb, len);
	if (skge->rx_csum) {

	if (dev->features & NETIF_F_RXCSUM) {
		skb->csum = csum;
		skb->ip_summed = CHECKSUM_COMPLETE;
	}
@@ -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);

	if (hw->chip_id != CHIP_ID_GENESIS) {
		dev->features |= NETIF_F_IP_CSUM | NETIF_F_SG;
		skge->rx_csum = 1;
		dev->hw_features = NETIF_F_IP_CSUM | NETIF_F_SG |
		                   NETIF_F_RXCSUM;
		dev->features |= dev->hw_features;
	}
	dev->features |= NETIF_F_GRO;

	/* read the mac address */
	memcpy_fromio(dev->dev_addr, hw->regs + B2_MAC_1 + port*8, ETH_ALEN);
+0 −1
Original line number Diff line number Diff line
@@ -2460,7 +2460,6 @@ struct skge_port {
	struct timer_list    link_timer;
	enum pause_control   flow_control;
	enum pause_status    flow_status;
	u8		     rx_csum;
	u8		     blink_on;
	u8		     wol;
	u8		     autoneg;	/* AUTONEG_ENABLE, AUTONEG_DISABLE */