Skip to content

Commit

Permalink
vxge: Implement the SIOCGHWTSTAMP ioctl
Browse files Browse the repository at this point in the history
Compile-tested only.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
  • Loading branch information
Ben Hutchings committed Nov 21, 2013
1 parent 100dbda commit 450e55e
Showing 1 changed file with 19 additions and 8 deletions.
27 changes: 19 additions & 8 deletions drivers/net/ethernet/neterion/vxge/vxge-main.c
Original file line number Diff line number Diff line change
Expand Up @@ -3185,7 +3185,7 @@ static enum vxge_hw_status vxge_timestamp_config(struct __vxge_hw_device *devh)
return status;
}

static int vxge_hwtstamp_ioctl(struct vxgedev *vdev, void __user *data)
static int vxge_hwtstamp_set(struct vxgedev *vdev, void __user *data)
{
struct hwtstamp_config config;
int i;
Expand Down Expand Up @@ -3246,6 +3246,21 @@ static int vxge_hwtstamp_ioctl(struct vxgedev *vdev, void __user *data)
return 0;
}

static int vxge_hwtstamp_get(struct vxgedev *vdev, void __user *data)
{
struct hwtstamp_config config;

config.flags = 0;
config.tx_type = HWTSTAMP_TX_OFF;
config.rx_filter = (vdev->rx_hwts ?
HWTSTAMP_FILTER_ALL : HWTSTAMP_FILTER_NONE);

if (copy_to_user(data, &config, sizeof(config)))
return -EFAULT;

return 0;
}

/**
* vxge_ioctl
* @dev: Device pointer.
Expand All @@ -3259,19 +3274,15 @@ static int vxge_hwtstamp_ioctl(struct vxgedev *vdev, void __user *data)
static int vxge_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
{
struct vxgedev *vdev = netdev_priv(dev);
int ret;

switch (cmd) {
case SIOCSHWTSTAMP:
ret = vxge_hwtstamp_ioctl(vdev, rq->ifr_data);
if (ret)
return ret;
break;
return vxge_hwtstamp_set(vdev, rq->ifr_data);
case SIOCGHWTSTAMP:
return vxge_hwtstamp_get(vdev, rq->ifr_data);
default:
return -EOPNOTSUPP;
}

return 0;
}

/**
Expand Down

0 comments on commit 450e55e

Please sign in to comment.