|
@@ -5392,7 +5392,7 @@ static void igb_tsync_interrupt(struct igb_adapter *adapter)
|
|
|
{
|
|
|
struct e1000_hw *hw = &adapter->hw;
|
|
|
struct ptp_clock_event event;
|
|
|
- struct timespec ts;
|
|
|
+ struct timespec64 ts;
|
|
|
u32 ack = 0, tsauxc, sec, nsec, tsicr = rd32(E1000_TSICR);
|
|
|
|
|
|
if (tsicr & TSINTR_SYS_WRAP) {
|
|
@@ -5412,10 +5412,11 @@ static void igb_tsync_interrupt(struct igb_adapter *adapter)
|
|
|
|
|
|
if (tsicr & TSINTR_TT0) {
|
|
|
spin_lock(&adapter->tmreg_lock);
|
|
|
- ts = timespec_add(adapter->perout[0].start,
|
|
|
- adapter->perout[0].period);
|
|
|
+ ts = timespec64_add(adapter->perout[0].start,
|
|
|
+ adapter->perout[0].period);
|
|
|
+ /* u32 conversion of tv_sec is safe until y2106 */
|
|
|
wr32(E1000_TRGTTIML0, ts.tv_nsec);
|
|
|
- wr32(E1000_TRGTTIMH0, ts.tv_sec);
|
|
|
+ wr32(E1000_TRGTTIMH0, (u32)ts.tv_sec);
|
|
|
tsauxc = rd32(E1000_TSAUXC);
|
|
|
tsauxc |= TSAUXC_EN_TT0;
|
|
|
wr32(E1000_TSAUXC, tsauxc);
|
|
@@ -5426,10 +5427,10 @@ static void igb_tsync_interrupt(struct igb_adapter *adapter)
|
|
|
|
|
|
if (tsicr & TSINTR_TT1) {
|
|
|
spin_lock(&adapter->tmreg_lock);
|
|
|
- ts = timespec_add(adapter->perout[1].start,
|
|
|
- adapter->perout[1].period);
|
|
|
+ ts = timespec64_add(adapter->perout[1].start,
|
|
|
+ adapter->perout[1].period);
|
|
|
wr32(E1000_TRGTTIML1, ts.tv_nsec);
|
|
|
- wr32(E1000_TRGTTIMH1, ts.tv_sec);
|
|
|
+ wr32(E1000_TRGTTIMH1, (u32)ts.tv_sec);
|
|
|
tsauxc = rd32(E1000_TSAUXC);
|
|
|
tsauxc |= TSAUXC_EN_TT1;
|
|
|
wr32(E1000_TSAUXC, tsauxc);
|