aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/tile
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/tile
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/tile')
-rw-r--r--drivers/net/ethernet/tile/tilegx.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/drivers/net/ethernet/tile/tilegx.c b/drivers/net/ethernet/tile/tilegx.c
index 628b736e5ae7..858f9a786b8c 100644
--- a/drivers/net/ethernet/tile/tilegx.c
+++ b/drivers/net/ethernet/tile/tilegx.c
@@ -481,8 +481,7 @@ static void tile_tx_timestamp(struct sk_buff *skb, int instance)
481} 481}
482 482
483/* Use ioctl() to enable or disable TX or RX timestamping. */ 483/* Use ioctl() to enable or disable TX or RX timestamping. */
484static int tile_hwtstamp_ioctl(struct net_device *dev, struct ifreq *rq, 484static int tile_hwtstamp_set(struct net_device *dev, struct ifreq *rq)
485 int cmd)
486{ 485{
487#ifdef CONFIG_PTP_1588_CLOCK_TILEGX 486#ifdef CONFIG_PTP_1588_CLOCK_TILEGX
488 struct hwtstamp_config config; 487 struct hwtstamp_config config;
@@ -535,6 +534,21 @@ static int tile_hwtstamp_ioctl(struct net_device *dev, struct ifreq *rq,
535#endif 534#endif
536} 535}
537 536
537static int tile_hwtstamp_get(struct net_device *dev, struct ifreq *rq)
538{
539#ifdef CONFIG_PTP_1588_CLOCK_TILEGX
540 struct tile_net_priv *priv = netdev_priv(dev);
541
542 if (copy_to_user(rq->ifr_data, &priv->stamp_cfg,
543 sizeof(priv->stamp_cfg)))
544 return -EFAULT;
545
546 return 0;
547#else
548 return -EOPNOTSUPP;
549#endif
550}
551
538static inline bool filter_packet(struct net_device *dev, void *buf) 552static inline bool filter_packet(struct net_device *dev, void *buf)
539{ 553{
540 /* Filter packets received before we're up. */ 554 /* Filter packets received before we're up. */
@@ -2098,7 +2112,9 @@ static void tile_net_tx_timeout(struct net_device *dev)
2098static int tile_net_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) 2112static int tile_net_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
2099{ 2113{
2100 if (cmd == SIOCSHWTSTAMP) 2114 if (cmd == SIOCSHWTSTAMP)
2101 return tile_hwtstamp_ioctl(dev, rq, cmd); 2115 return tile_hwtstamp_set(dev, rq);
2116 if (cmd == SIOCGHWTSTAMP)
2117 return tile_hwtstamp_get(dev, rq);
2102 2118
2103 return -EOPNOTSUPP; 2119 return -EOPNOTSUPP;
2104} 2120}