diff options
Diffstat (limited to 'drivers/net/xen-netback/xenbus.c')
| -rw-r--r-- | drivers/net/xen-netback/xenbus.c | 58 | 
1 files changed, 35 insertions, 23 deletions
diff --git a/drivers/net/xen-netback/xenbus.c b/drivers/net/xen-netback/xenbus.c index daf4c7867102..8674e188b697 100644 --- a/drivers/net/xen-netback/xenbus.c +++ b/drivers/net/xen-netback/xenbus.c @@ -165,7 +165,7 @@ xenvif_write_io_ring(struct file *filp, const char __user *buf, size_t count,  	return count;  } -static int xenvif_dump_open(struct inode *inode, struct file *filp) +static int xenvif_io_ring_open(struct inode *inode, struct file *filp)  {  	int ret;  	void *queue = NULL; @@ -179,13 +179,35 @@ static int xenvif_dump_open(struct inode *inode, struct file *filp)  static const struct file_operations xenvif_dbg_io_ring_ops_fops = {  	.owner = THIS_MODULE, -	.open = xenvif_dump_open, +	.open = xenvif_io_ring_open,  	.read = seq_read,  	.llseek = seq_lseek,  	.release = single_release,  	.write = xenvif_write_io_ring,  }; +static int xenvif_read_ctrl(struct seq_file *m, void *v) +{ +	struct xenvif *vif = m->private; + +	xenvif_dump_hash_info(vif, m); + +	return 0; +} + +static int xenvif_ctrl_open(struct inode *inode, struct file *filp) +{ +	return single_open(filp, xenvif_read_ctrl, inode->i_private); +} + +static const struct file_operations xenvif_dbg_ctrl_ops_fops = { +	.owner = THIS_MODULE, +	.open = xenvif_ctrl_open, +	.read = seq_read, +	.llseek = seq_lseek, +	.release = single_release, +}; +  static void xenvif_debugfs_addif(struct xenvif *vif)  {  	struct dentry *pfile; @@ -210,6 +232,17 @@ static void xenvif_debugfs_addif(struct xenvif *vif)  				pr_warn("Creation of io_ring file returned %ld!\n",  					PTR_ERR(pfile));  		} + +		if (vif->ctrl_irq) { +			pfile = debugfs_create_file("ctrl", +						    S_IRUSR, +						    vif->xenvif_dbg_root, +						    vif, +						    &xenvif_dbg_ctrl_ops_fops); +			if (IS_ERR_OR_NULL(pfile)) +				pr_warn("Creation of ctrl file returned %ld!\n", +					PTR_ERR(pfile)); +		}  	} else  		netdev_warn(vif->dev,  			    "Creation of vif debugfs dir returned %ld!\n", @@ -1135,7 +1168,6 @@ static int read_xenbus_vif_flags(struct backend_info *be)  	vif->can_sg = !!val;  	vif->gso_mask = 0; -	vif->gso_prefix_mask = 0;  	if (xenbus_scanf(XBT_NIL, dev->otherend, "feature-gso-tcpv4",  			 "%d", &val) < 0) @@ -1143,32 +1175,12 @@ static int read_xenbus_vif_flags(struct backend_info *be)  	if (val)  		vif->gso_mask |= GSO_BIT(TCPV4); -	if (xenbus_scanf(XBT_NIL, dev->otherend, "feature-gso-tcpv4-prefix", -			 "%d", &val) < 0) -		val = 0; -	if (val) -		vif->gso_prefix_mask |= GSO_BIT(TCPV4); -  	if (xenbus_scanf(XBT_NIL, dev->otherend, "feature-gso-tcpv6",  			 "%d", &val) < 0)  		val = 0;  	if (val)  		vif->gso_mask |= GSO_BIT(TCPV6); -	if (xenbus_scanf(XBT_NIL, dev->otherend, "feature-gso-tcpv6-prefix", -			 "%d", &val) < 0) -		val = 0; -	if (val) -		vif->gso_prefix_mask |= GSO_BIT(TCPV6); - -	if (vif->gso_mask & vif->gso_prefix_mask) { -		xenbus_dev_fatal(dev, err, -				 "%s: gso and gso prefix flags are not " -				 "mutually exclusive", -				 dev->otherend); -		return -EOPNOTSUPP; -	} -  	if (xenbus_scanf(XBT_NIL, dev->otherend, "feature-no-csum-offload",  			 "%d", &val) < 0)  		val = 0;  |