diff options
Diffstat (limited to 'drivers/net/ethernet/ti/cpsw.c')
-rw-r--r-- | drivers/net/ethernet/ti/cpsw.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c index 90d41d26ec6d..30b0c032e5fc 100644 --- a/drivers/net/ethernet/ti/cpsw.c +++ b/drivers/net/ethernet/ti/cpsw.c | |||
@@ -1323,6 +1323,10 @@ static int cpsw_hwtstamp_ioctl(struct net_device *dev, struct ifreq *ifr) | |||
1323 | struct cpts *cpts = priv->cpts; | 1323 | struct cpts *cpts = priv->cpts; |
1324 | struct hwtstamp_config cfg; | 1324 | struct hwtstamp_config cfg; |
1325 | 1325 | ||
1326 | if (priv->version != CPSW_VERSION_1 && | ||
1327 | priv->version != CPSW_VERSION_2) | ||
1328 | return -EOPNOTSUPP; | ||
1329 | |||
1326 | if (copy_from_user(&cfg, ifr->ifr_data, sizeof(cfg))) | 1330 | if (copy_from_user(&cfg, ifr->ifr_data, sizeof(cfg))) |
1327 | return -EFAULT; | 1331 | return -EFAULT; |
1328 | 1332 | ||
@@ -1330,16 +1334,8 @@ static int cpsw_hwtstamp_ioctl(struct net_device *dev, struct ifreq *ifr) | |||
1330 | if (cfg.flags) | 1334 | if (cfg.flags) |
1331 | return -EINVAL; | 1335 | return -EINVAL; |
1332 | 1336 | ||
1333 | switch (cfg.tx_type) { | 1337 | if (cfg.tx_type != HWTSTAMP_TX_OFF && cfg.tx_type != HWTSTAMP_TX_ON) |
1334 | case HWTSTAMP_TX_OFF: | ||
1335 | cpts->tx_enable = 0; | ||
1336 | break; | ||
1337 | case HWTSTAMP_TX_ON: | ||
1338 | cpts->tx_enable = 1; | ||
1339 | break; | ||
1340 | default: | ||
1341 | return -ERANGE; | 1338 | return -ERANGE; |
1342 | } | ||
1343 | 1339 | ||
1344 | switch (cfg.rx_filter) { | 1340 | switch (cfg.rx_filter) { |
1345 | case HWTSTAMP_FILTER_NONE: | 1341 | case HWTSTAMP_FILTER_NONE: |
@@ -1366,6 +1362,8 @@ static int cpsw_hwtstamp_ioctl(struct net_device *dev, struct ifreq *ifr) | |||
1366 | return -ERANGE; | 1362 | return -ERANGE; |
1367 | } | 1363 | } |
1368 | 1364 | ||
1365 | cpts->tx_enable = cfg.tx_type == HWTSTAMP_TX_ON; | ||
1366 | |||
1369 | switch (priv->version) { | 1367 | switch (priv->version) { |
1370 | case CPSW_VERSION_1: | 1368 | case CPSW_VERSION_1: |
1371 | cpsw_hwtstamp_v1(priv); | 1369 | cpsw_hwtstamp_v1(priv); |
@@ -1374,7 +1372,7 @@ static int cpsw_hwtstamp_ioctl(struct net_device *dev, struct ifreq *ifr) | |||
1374 | cpsw_hwtstamp_v2(priv); | 1372 | cpsw_hwtstamp_v2(priv); |
1375 | break; | 1373 | break; |
1376 | default: | 1374 | default: |
1377 | return -ENOTSUPP; | 1375 | WARN_ON(1); |
1378 | } | 1376 | } |
1379 | 1377 | ||
1380 | return copy_to_user(ifr->ifr_data, &cfg, sizeof(cfg)) ? -EFAULT : 0; | 1378 | return copy_to_user(ifr->ifr_data, &cfg, sizeof(cfg)) ? -EFAULT : 0; |