All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jon Mason <jon.mason@myri.com>
To: "Michał Mirosław" <mirq-linux@rere.qmqm.pl>
Cc: netdev@vger.kernel.org, Andrew Gallatin <gallatin@myri.com>,
	Brice Goglin <brice@myri.com>
Subject: Re: [PATCH] net: myri10ge: convert to hw_features
Date: Fri, 15 Apr 2011 13:29:22 -0500	[thread overview]
Message-ID: <20110415182922.GA2458@myri.com> (raw)
In-Reply-To: <20110415145050.0D65C13A66@rere.qmqm.pl>

On Fri, Apr 15, 2011 at 04:50:50PM +0200, Michał Mirosław wrote:
> Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
> ---
>  drivers/net/myri10ge/myri10ge.c |   66 +++++++-------------------------------
>  1 files changed, 12 insertions(+), 54 deletions(-)
> 
> diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c
> index 1446de5..a48eb92 100644
> --- a/drivers/net/myri10ge/myri10ge.c
> +++ b/drivers/net/myri10ge/myri10ge.c
> @@ -205,7 +205,6 @@ struct myri10ge_priv {
>  	int tx_boundary;	/* boundary transmits cannot cross */
>  	int num_slices;
>  	int running;		/* running?             */
> -	int csum_flag;		/* rx_csums?            */

Get rid of MXGEFW_FLAGS_CKSUM in drivers/net/myri10ge/myri10ge_mcp.h,
as this was the only thing using it.

>  	int small_bytes;
>  	int big_bytes;
>  	int max_intr_slots;
> @@ -1386,7 +1385,7 @@ myri10ge_rx_done(struct myri10ge_slice_state *ss, int len, __wsum csum,
>  	skb->protocol = eth_type_trans(skb, dev);
>  	skb_record_rx_queue(skb, ss - &mgp->ss[0]);
>  
> -	if (mgp->csum_flag) {
> +	if (dev->features & NETIF_F_RXCSUM) {
>  		if ((skb->protocol == htons(ETH_P_IP)) ||
>  		    (skb->protocol == htons(ETH_P_IPV6))) {
>  			skb->csum = csum;
> @@ -1757,43 +1756,6 @@ myri10ge_get_ringparam(struct net_device *netdev,
>  	ring->tx_pending = ring->tx_max_pending;
>  }
>  
> -static u32 myri10ge_get_rx_csum(struct net_device *netdev)
> -{
> -	struct myri10ge_priv *mgp = netdev_priv(netdev);
> -
> -	if (mgp->csum_flag)
> -		return 1;
> -	else
> -		return 0;
> -}
> -
> -static int myri10ge_set_rx_csum(struct net_device *netdev, u32 csum_enabled)
> -{
> -	struct myri10ge_priv *mgp = netdev_priv(netdev);
> -	int err = 0;
> -
> -	if (csum_enabled)
> -		mgp->csum_flag = MXGEFW_FLAGS_CKSUM;
> -	else {
> -		netdev->features &= ~NETIF_F_LRO;
> -		mgp->csum_flag = 0;
> -
> -	}
> -	return err;
> -}
> -
> -static int myri10ge_set_tso(struct net_device *netdev, u32 tso_enabled)
> -{
> -	struct myri10ge_priv *mgp = netdev_priv(netdev);
> -	u32 flags = mgp->features & (NETIF_F_TSO6 | NETIF_F_TSO);
> -
> -	if (tso_enabled)
> -		netdev->features |= flags;
> -	else
> -		netdev->features &= ~flags;
> -	return 0;
> -}

ethtool_op_set_tso does not support TSO6.  This would remove the
enable/disable of that feature.

> -
>  static const char myri10ge_gstrings_main_stats[][ETH_GSTRING_LEN] = {
>  	"rx_packets", "tx_packets", "rx_bytes", "tx_bytes", "rx_errors",
>  	"tx_errors", "rx_dropped", "tx_dropped", "multicast", "collisions",
> @@ -1944,11 +1906,6 @@ static u32 myri10ge_get_msglevel(struct net_device *netdev)
>  	return mgp->msg_enable;
>  }
>  
> -static int myri10ge_set_flags(struct net_device *netdev, u32 value)
> -{
> -	return ethtool_op_set_flags(netdev, value, ETH_FLAG_LRO);
> -}
> -
>  static const struct ethtool_ops myri10ge_ethtool_ops = {
>  	.get_settings = myri10ge_get_settings,
>  	.get_drvinfo = myri10ge_get_drvinfo,
> @@ -1957,19 +1914,12 @@ static const struct ethtool_ops myri10ge_ethtool_ops = {
>  	.get_pauseparam = myri10ge_get_pauseparam,
>  	.set_pauseparam = myri10ge_set_pauseparam,
>  	.get_ringparam = myri10ge_get_ringparam,
> -	.get_rx_csum = myri10ge_get_rx_csum,
> -	.set_rx_csum = myri10ge_set_rx_csum,
> -	.set_tx_csum = ethtool_op_set_tx_hw_csum,
> -	.set_sg = ethtool_op_set_sg,
> -	.set_tso = myri10ge_set_tso,
>  	.get_link = ethtool_op_get_link,
>  	.get_strings = myri10ge_get_strings,
>  	.get_sset_count = myri10ge_get_sset_count,
>  	.get_ethtool_stats = myri10ge_get_ethtool_stats,
>  	.set_msglevel = myri10ge_set_msglevel,
>  	.get_msglevel = myri10ge_get_msglevel,
> -	.get_flags = ethtool_op_get_flags,
> -	.set_flags = myri10ge_set_flags
>  };
>  
>  static int myri10ge_allocate_rings(struct myri10ge_slice_state *ss)
> @@ -3136,6 +3086,14 @@ static int myri10ge_set_mac_address(struct net_device *dev, void *addr)
>  	return 0;
>  }
>  
> +static u32 myri10ge_fix_features(struct net_device *dev, u32 features)
> +{
> +	if (!(features & NETIF_F_RXCSUM))
> +		features &= ~NETIF_F_LRO;
> +
> +	return features;
> +}
> +
>  static int myri10ge_change_mtu(struct net_device *dev, int new_mtu)
>  {
>  	struct myri10ge_priv *mgp = netdev_priv(dev);
> @@ -3834,6 +3792,7 @@ static const struct net_device_ops myri10ge_netdev_ops = {
>  	.ndo_get_stats		= myri10ge_get_stats,
>  	.ndo_validate_addr	= eth_validate_addr,
>  	.ndo_change_mtu		= myri10ge_change_mtu,
> +	.ndo_fix_features	= myri10ge_fix_features,
>  	.ndo_set_multicast_list = myri10ge_set_multicast_list,
>  	.ndo_set_mac_address	= myri10ge_set_mac_address,
>  };
> @@ -3860,7 +3819,6 @@ static int myri10ge_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
>  	mgp = netdev_priv(netdev);
>  	mgp->dev = netdev;
>  	mgp->pdev = pdev;
> -	mgp->csum_flag = MXGEFW_FLAGS_CKSUM;
>  	mgp->pause = myri10ge_flow_control;
>  	mgp->intr_coal_delay = myri10ge_intr_coal_delay;
>  	mgp->msg_enable = netif_msg_init(myri10ge_debug, MYRI10GE_MSG_DEFAULT);
> @@ -3976,11 +3934,11 @@ static int myri10ge_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
>  	netdev->netdev_ops = &myri10ge_netdev_ops;
>  	netdev->mtu = myri10ge_initial_mtu;
>  	netdev->base_addr = mgp->iomem_base;
> -	netdev->features = mgp->features;
> +	netdev->hw_features = mgp->features | NETIF_F_LRO | NETIF_F_RXCSUM;
> +	netdev->features = netdev->hw_features;
>  
>  	if (dac_enabled)
>  		netdev->features |= NETIF_F_HIGHDMA;
> -	netdev->features |= NETIF_F_LRO;
>  
>  	netdev->vlan_features |= mgp->features;
>  	if (mgp->fw_ver_tiny < 37)
> -- 
> 1.7.2.5
> 
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

  reply	other threads:[~2011-04-15 19:04 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-15 14:50 [PATCH] net: myri10ge: convert to hw_features Michał Mirosław
2011-04-15 18:29 ` Jon Mason [this message]
2011-04-15 18:36   ` Andrew Gallatin
2011-04-15 18:47   ` Michał Mirosław
2011-04-18  6:30   ` David Miller
2011-04-18 11:03     ` Michał Mirosław
2011-04-18 14:24       ` Jon Mason
2011-04-19  5:49       ` David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20110415182922.GA2458@myri.com \
    --to=jon.mason@myri.com \
    --cc=brice@myri.com \
    --cc=gallatin@myri.com \
    --cc=mirq-linux@rere.qmqm.pl \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.