|
@@ -13618,16 +13618,9 @@ static int tg3_hwtstamp_ioctl(struct net_device *dev,
|
|
|
if (stmpconf.flags)
|
|
|
return -EINVAL;
|
|
|
|
|
|
- switch (stmpconf.tx_type) {
|
|
|
- case HWTSTAMP_TX_ON:
|
|
|
- tg3_flag_set(tp, TX_TSTAMP_EN);
|
|
|
- break;
|
|
|
- case HWTSTAMP_TX_OFF:
|
|
|
- tg3_flag_clear(tp, TX_TSTAMP_EN);
|
|
|
- break;
|
|
|
- default:
|
|
|
+ if (stmpconf.tx_type != HWTSTAMP_TX_ON &&
|
|
|
+ stmpconf.tx_type != HWTSTAMP_TX_OFF)
|
|
|
return -ERANGE;
|
|
|
- }
|
|
|
|
|
|
switch (stmpconf.rx_filter) {
|
|
|
case HWTSTAMP_FILTER_NONE:
|
|
@@ -13689,6 +13682,11 @@ static int tg3_hwtstamp_ioctl(struct net_device *dev,
|
|
|
tw32(TG3_RX_PTP_CTL,
|
|
|
tp->rxptpctl | TG3_RX_PTP_CTL_HWTS_INTERLOCK);
|
|
|
|
|
|
+ if (stmpconf.tx_type == HWTSTAMP_TX_ON)
|
|
|
+ tg3_flag_set(tp, TX_TSTAMP_EN);
|
|
|
+ else
|
|
|
+ tg3_flag_clear(tp, TX_TSTAMP_EN);
|
|
|
+
|
|
|
return copy_to_user(ifr->ifr_data, &stmpconf, sizeof(stmpconf)) ?
|
|
|
-EFAULT : 0;
|
|
|
}
|