lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20160616175539.lt7iqjrlixagwfbh@f1.synalogic.ca>
Date:	Thu, 16 Jun 2016 10:55:39 -0700
From:	Benjamin Poirier <benjamin.poirier@...il.com>
To:	Netanel Belgazal <netanel@...apurnalabs.com>
Cc:	netdev@...r.kernel.org, davem@...emloft.net,
	linux-kernel@...r.kernel.org, zorik@...apurnalabs.com,
	saeed@...apurnalabs.com, alex@...apurnalabs.com, msw@...zon.com,
	aliguori@...zon.com, antoine.tenart@...e-electrons.com,
	Ben Hutchings <ben@...adent.org.uk>
Subject: Re: [PATCH net-next] net: ena: Add a driver for Amazon Elastic
 Network Adapters (ENA)

On 2016/06/13 11:46, Netanel Belgazal wrote:
[...]
> +
> +static int ena_set_coalesce(struct net_device *net_dev,
> +			    struct ethtool_coalesce *coalesce)
> +{
> +	struct ena_adapter *adapter = netdev_priv(net_dev);
> +	struct ena_com_dev *ena_dev = adapter->ena_dev;
> +	int rc;
> +
> +	if (!ena_com_interrupt_moderation_supported(ena_dev)) {
> +		/* the devie doesn't support interrupt moderation */
> +		return -EOPNOTSUPP;
> +	}
> +
> +	/* Note, adaptive coalescing settings are updated through sysfs */

I believe the usual approach is to use ethtool for these kinds of
settings, extending the interface if necessary.

> +	if (coalesce->rx_coalesce_usecs_irq ||
> +	    coalesce->rx_max_coalesced_frames ||
> +	    coalesce->rx_max_coalesced_frames_irq ||
> +	    coalesce->tx_coalesce_usecs_irq ||
> +	    coalesce->tx_max_coalesced_frames ||
> +	    coalesce->tx_max_coalesced_frames_irq ||
> +	    coalesce->stats_block_coalesce_usecs ||
> +	    coalesce->use_adaptive_tx_coalesce ||
> +	    coalesce->pkt_rate_low ||
> +	    coalesce->rx_coalesce_usecs_low ||
> +	    coalesce->rx_max_coalesced_frames_low ||
> +	    coalesce->tx_coalesce_usecs_low ||
> +	    coalesce->tx_max_coalesced_frames_low ||
> +	    coalesce->pkt_rate_high ||
> +	    coalesce->rx_coalesce_usecs_high ||
> +	    coalesce->rx_max_coalesced_frames_high ||
> +	    coalesce->tx_coalesce_usecs_high ||
> +	    coalesce->tx_max_coalesced_frames_high ||
> +	    coalesce->rate_sample_interval)
> +		return -EINVAL;
> +

[...]

> +
> +static ssize_t ena_store_small_copy_len(struct device *dev,
> +					struct device_attribute *attr,
> +					const char *buf, size_t len)
> +{
> +	struct ena_adapter *adapter = dev_get_drvdata(dev);
> +	unsigned long small_copy_len;
> +	struct ena_ring *rx_ring;
> +	int err, i;
> +
> +	err = kstrtoul(buf, 10, &small_copy_len);
> +	if (err < 0)
> +		return err;
> +
> +	err = ena_validate_small_copy_len(adapter, small_copy_len);
> +	if (err)
> +		return err;
> +
> +	rtnl_lock();
> +	adapter->small_copy_len = small_copy_len;
> +
> +	for (i = 0; i < adapter->num_queues; i++) {
> +		rx_ring = &adapter->rx_ring[i];
> +		rx_ring->rx_small_copy_len = small_copy_len;
> +	}
> +	rtnl_unlock();
> +
> +	return len;
> +}
> +
> +static ssize_t ena_show_small_copy_len(struct device *dev,
> +				       struct device_attribute *attr, char *buf)
> +{
> +	struct ena_adapter *adapter = dev_get_drvdata(dev);
> +
> +	return sprintf(buf, "%d\n", adapter->small_copy_len);
> +}
> +
> +static DEVICE_ATTR(small_copy_len, S_IRUGO | S_IWUSR, ena_show_small_copy_len,
> +		   ena_store_small_copy_len);

This is what many other drivers call (rx_)copybreak. Perhaps it's time
to add it to ethtool as well?

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ