net: stmmac: tc: Fix TAPRIO division operation
authorJose Abreu <Jose.Abreu@synopsys.com>
Wed, 18 Dec 2019 22:55:01 +0000 (23:55 +0100)
committerDavid S. Miller <davem@davemloft.net>
Wed, 18 Dec 2019 23:12:33 +0000 (15:12 -0800)
For ARCHs that don't support 64 bits division we need to use the
helpers.

Fixes: b60189e0392f ("net: stmmac: Integrate EST with TAPRIO scheduler API")
Signed-off-by: Jose Abreu <Jose.Abreu@synopsys.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c

index 8ff8f9b..6c4686b 100644 (file)
@@ -599,6 +599,7 @@ static int tc_setup_taprio(struct stmmac_priv *priv,
        struct timespec64 time;
        bool fpe = false;
        int i, ret = 0;
+       u64 ctr;
 
        if (!priv->dma_cap.estsel)
                return -EOPNOTSUPP;
@@ -694,8 +695,9 @@ static int tc_setup_taprio(struct stmmac_priv *priv,
        priv->plat->est->btr[0] = (u32)time.tv_nsec;
        priv->plat->est->btr[1] = (u32)time.tv_sec;
 
-       priv->plat->est->ctr[0] = (u32)(qopt->cycle_time % NSEC_PER_SEC);
-       priv->plat->est->ctr[1] = (u32)(qopt->cycle_time / NSEC_PER_SEC);
+       ctr = qopt->cycle_time;
+       priv->plat->est->ctr[0] = do_div(ctr, NSEC_PER_SEC);
+       priv->plat->est->ctr[1] = (u32)ctr;
 
        if (fpe && !priv->dma_cap.fpesel)
                return -EOPNOTSUPP;