diff options
| author | David S. Miller <davem@davemloft.net> | 2013-12-05 19:45:14 -0500 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2013-12-05 19:45:14 -0500 |
| commit | 426e1fa31e0d8e982891e801c80b84b74f209f10 (patch) | |
| tree | bc53409418ffa918fb3f175639bc5c9245c4219f /drivers/net/ethernet/tile | |
| parent | e1ca87bb1b64b044163e686ff3bb71405156c561 (diff) | |
| parent | a4bcc795e9cc84902b86edbfbb755ecb38d11f91 (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.c | 22 |
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. */ |
| 484 | static int tile_hwtstamp_ioctl(struct net_device *dev, struct ifreq *rq, | 484 | static 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 | ||
| 537 | static 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 | |||
| 538 | static inline bool filter_packet(struct net_device *dev, void *buf) | 552 | static 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) | |||
| 2098 | static int tile_net_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) | 2112 | static 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 | } |
