Skip to content

Commit 81c52c4

Browse files
Xiaoliang Yangdavem330
Xiaoliang Yang
authored andcommitted
net: stmmac: separate the tas basetime calculation function
Separate the TAS basetime calculation function so that it can be called by other functions. Signed-off-by: Xiaoliang Yang <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent f6a175c commit 81c52c4

File tree

2 files changed

+28
-13
lines changed

2 files changed

+28
-13
lines changed

drivers/net/ethernet/stmicro/stmmac/stmmac.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,9 @@ void stmmac_enable_rx_queue(struct stmmac_priv *priv, u32 queue);
349349
void stmmac_disable_tx_queue(struct stmmac_priv *priv, u32 queue);
350350
void stmmac_enable_tx_queue(struct stmmac_priv *priv, u32 queue);
351351
int stmmac_xsk_wakeup(struct net_device *dev, u32 queue, u32 flags);
352+
struct timespec64 stmmac_calc_tas_basetime(ktime_t old_base_time,
353+
ktime_t current_time,
354+
u64 cycle_time);
352355

353356
#if IS_ENABLED(CONFIG_STMMAC_SELFTESTS)
354357
void stmmac_selftest_run(struct net_device *dev,

drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -711,6 +711,29 @@ static int tc_setup_cls(struct stmmac_priv *priv,
711711
return ret;
712712
}
713713

714+
struct timespec64 stmmac_calc_tas_basetime(ktime_t old_base_time,
715+
ktime_t current_time,
716+
u64 cycle_time)
717+
{
718+
struct timespec64 time;
719+
720+
if (ktime_after(old_base_time, current_time)) {
721+
time = ktime_to_timespec64(old_base_time);
722+
} else {
723+
s64 n;
724+
ktime_t base_time;
725+
726+
n = div64_s64(ktime_sub_ns(current_time, old_base_time),
727+
cycle_time);
728+
base_time = ktime_add_ns(old_base_time,
729+
(n + 1) * cycle_time);
730+
731+
time = ktime_to_timespec64(base_time);
732+
}
733+
734+
return time;
735+
}
736+
714737
static int tc_setup_taprio(struct stmmac_priv *priv,
715738
struct tc_taprio_qopt_offload *qopt)
716739
{
@@ -814,19 +837,8 @@ static int tc_setup_taprio(struct stmmac_priv *priv,
814837
/* Adjust for real system time */
815838
priv->ptp_clock_ops.gettime64(&priv->ptp_clock_ops, &current_time);
816839
current_time_ns = timespec64_to_ktime(current_time);
817-
if (ktime_after(qopt->base_time, current_time_ns)) {
818-
time = ktime_to_timespec64(qopt->base_time);
819-
} else {
820-
ktime_t base_time;
821-
s64 n;
822-
823-
n = div64_s64(ktime_sub_ns(current_time_ns, qopt->base_time),
824-
qopt->cycle_time);
825-
base_time = ktime_add_ns(qopt->base_time,
826-
(n + 1) * qopt->cycle_time);
827-
828-
time = ktime_to_timespec64(base_time);
829-
}
840+
time = stmmac_calc_tas_basetime(qopt->base_time, current_time_ns,
841+
qopt->cycle_time);
830842

831843
priv->plat->est->btr[0] = (u32)time.tv_nsec;
832844
priv->plat->est->btr[1] = (u32)time.tv_sec;

0 commit comments

Comments
 (0)