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

Commit 896392ef authored by Divy Le Ray's avatar Divy Le Ray Committed by Jeff Garzik
Browse files

cxgb3 - manage sysfs attributes per port



sysfs attributes are now managed per port, no longer per adapter.

Signed-off-by: default avatarDivy Le Ray <divy@chelsio.com>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent d8d70caf
Loading
Loading
Loading
Loading
+12 −9
Original line number Diff line number Diff line
@@ -434,27 +434,25 @@ static int setup_sge_qsets(struct adapter *adap)

static ssize_t attr_show(struct device *d, struct device_attribute *attr,
			 char *buf,
			 ssize_t(*format) (struct adapter *, char *))
			 ssize_t(*format) (struct net_device *, char *))
{
	ssize_t len;
	struct adapter *adap = to_net_dev(d)->priv;

	/* Synchronize with ioctls that may shut down the device */
	rtnl_lock();
	len = (*format) (adap, buf);
	len = (*format) (to_net_dev(d), buf);
	rtnl_unlock();
	return len;
}

static ssize_t attr_store(struct device *d, struct device_attribute *attr,
			  const char *buf, size_t len,
			  ssize_t(*set) (struct adapter *, unsigned int),
			  ssize_t(*set) (struct net_device *, unsigned int),
			  unsigned int min_val, unsigned int max_val)
{
	char *endp;
	ssize_t ret;
	unsigned int val;
	struct adapter *adap = to_net_dev(d)->priv;

	if (!capable(CAP_NET_ADMIN))
		return -EPERM;
@@ -464,7 +462,7 @@ static ssize_t attr_store(struct device *d, struct device_attribute *attr,
		return -EINVAL;

	rtnl_lock();
	ret = (*set) (adap, val);
	ret = (*set) (to_net_dev(d), val);
	if (!ret)
		ret = len;
	rtnl_unlock();
@@ -472,8 +470,9 @@ static ssize_t attr_store(struct device *d, struct device_attribute *attr,
}

#define CXGB3_SHOW(name, val_expr) \
static ssize_t format_##name(struct adapter *adap, char *buf) \
static ssize_t format_##name(struct net_device *dev, char *buf) \
{ \
	struct adapter *adap = dev->priv; \
	return sprintf(buf, "%u\n", val_expr); \
} \
static ssize_t show_##name(struct device *d, struct device_attribute *attr, \
@@ -482,8 +481,10 @@ static ssize_t show_##name(struct device *d, struct device_attribute *attr, \
	return attr_show(d, attr, buf, format_##name); \
}

static ssize_t set_nfilters(struct adapter *adap, unsigned int val)
static ssize_t set_nfilters(struct net_device *dev, unsigned int val)
{
	struct adapter *adap = dev->priv;

	if (adap->flags & FULL_INIT_DONE)
		return -EBUSY;
	if (val && adap->params.rev == 0)
@@ -500,8 +501,10 @@ static ssize_t store_nfilters(struct device *d, struct device_attribute *attr,
	return attr_store(d, attr, buf, len, set_nfilters, 0, ~0);
}

static ssize_t set_nservers(struct adapter *adap, unsigned int val)
static ssize_t set_nservers(struct net_device *dev, unsigned int val)
{
	struct adapter *adap = dev->priv;

	if (adap->flags & FULL_INIT_DONE)
		return -EBUSY;
	if (val > t3_mc5_size(&adap->mc5) - adap->params.mc5.nfilters)