aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/neterion
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2013-12-05 19:45:14 -0500
committerDavid S. Miller <davem@davemloft.net>2013-12-05 19:45:14 -0500
commit426e1fa31e0d8e982891e801c80b84b74f209f10 (patch)
treebc53409418ffa918fb3f175639bc5c9245c4219f /drivers/net/ethernet/neterion
parente1ca87bb1b64b044163e686ff3bb71405156c561 (diff)
parenta4bcc795e9cc84902b86edbfbb755ecb38d11f91 (diff)
Merge branch 'siocghwtstamp' of git://git.kernel.org/pub/scm/linux/kernel/git/bwh/sfc-next
Ben Hutchings says: ==================== SIOCGHWTSTAMP ioctl 1. Add the SIOCGHWTSTAMP ioctl and update the timestamping documentation. 2. Implement SIOCGHWTSTAMP in most drivers that support SIOCSHWTSTAMP. 3. Add a test program to exercise SIOC{G,S}HWTSTAMP. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/neterion')
-rw-r--r--drivers/net/ethernet/neterion/vxge/vxge-main.c27
1 files changed, 19 insertions, 8 deletions
diff --git a/drivers/net/ethernet/neterion/vxge/vxge-main.c b/drivers/net/ethernet/neterion/vxge/vxge-main.c
index f9876ea8c8bf..5d4ad589ebf3 100644
--- a/drivers/net/ethernet/neterion/vxge/vxge-main.c
+++ b/drivers/net/ethernet/neterion/vxge/vxge-main.c
@@ -3189,7 +3189,7 @@ static enum vxge_hw_status vxge_timestamp_config(struct __vxge_hw_device *devh)
3189 return status; 3189 return status;
3190} 3190}
3191 3191
3192static int vxge_hwtstamp_ioctl(struct vxgedev *vdev, void __user *data) 3192static int vxge_hwtstamp_set(struct vxgedev *vdev, void __user *data)
3193{ 3193{
3194 struct hwtstamp_config config; 3194 struct hwtstamp_config config;
3195 int i; 3195 int i;
@@ -3250,6 +3250,21 @@ static int vxge_hwtstamp_ioctl(struct vxgedev *vdev, void __user *data)
3250 return 0; 3250 return 0;
3251} 3251}
3252 3252
3253static int vxge_hwtstamp_get(struct vxgedev *vdev, void __user *data)
3254{
3255 struct hwtstamp_config config;
3256
3257 config.flags = 0;
3258 config.tx_type = HWTSTAMP_TX_OFF;
3259 config.rx_filter = (vdev->rx_hwts ?
3260 HWTSTAMP_FILTER_ALL : HWTSTAMP_FILTER_NONE);
3261
3262 if (copy_to_user(data, &config, sizeof(config)))
3263 return -EFAULT;
3264
3265 return 0;
3266}
3267
3253/** 3268/**
3254 * vxge_ioctl 3269 * vxge_ioctl
3255 * @dev: Device pointer. 3270 * @dev: Device pointer.
@@ -3263,19 +3278,15 @@ static int vxge_hwtstamp_ioctl(struct vxgedev *vdev, void __user *data)
3263static int vxge_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) 3278static int vxge_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
3264{ 3279{
3265 struct vxgedev *vdev = netdev_priv(dev); 3280 struct vxgedev *vdev = netdev_priv(dev);
3266 int ret;
3267 3281
3268 switch (cmd) { 3282 switch (cmd) {
3269 case SIOCSHWTSTAMP: 3283 case SIOCSHWTSTAMP:
3270 ret = vxge_hwtstamp_ioctl(vdev, rq->ifr_data); 3284 return vxge_hwtstamp_set(vdev, rq->ifr_data);
3271 if (ret) 3285 case SIOCGHWTSTAMP:
3272 return ret; 3286 return vxge_hwtstamp_get(vdev, rq->ifr_data);
3273 break;
3274 default: 3287 default:
3275 return -EOPNOTSUPP; 3288 return -EOPNOTSUPP;
3276 } 3289 }
3277
3278 return 0;
3279} 3290}
3280 3291
3281/** 3292/**