Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 728bf098 authored by Jarek Poplawski's avatar Jarek Poplawski Committed by David S. Miller
Browse files

pkt_sched: Use PSCHED_SHIFT in PSCHED time conversion



Use PSCHED_SHIFT constant instead of '10' in PSCHED_US2NS() and
PSCHED_NS2US() macros to enable changing this value later.

Additionally use PSCHED_SHIFT in sch_hfsc SM_SHIFT and ISM_SHIFT
definitions. This part of the patch is based on feedback from
Patrick McHardy <kaber@trash.net>.

Reported-by: default avatarAntonio Almeida <vexwek@gmail.com>
Tested-by: default avatarAntonio Almeida <vexwek@gmail.com>
Signed-off-by: default avatarJarek Poplawski <jarkao2@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 0c27922e
Loading
Loading
Loading
Loading
+3 −2
Original line number Original line Diff line number Diff line
@@ -42,8 +42,9 @@ typedef u64 psched_time_t;
typedef long	psched_tdiff_t;
typedef long	psched_tdiff_t;


/* Avoid doing 64 bit divide by 1000 */
/* Avoid doing 64 bit divide by 1000 */
#define PSCHED_US2NS(x)			((s64)(x) << 10)
#define PSCHED_SHIFT			10
#define PSCHED_NS2US(x)			((x) >> 10)
#define PSCHED_US2NS(x)			((s64)(x) << PSCHED_SHIFT)
#define PSCHED_NS2US(x)			((x) >> PSCHED_SHIFT)


#define PSCHED_TICKS_PER_SEC		PSCHED_NS2US(NSEC_PER_SEC)
#define PSCHED_TICKS_PER_SEC		PSCHED_NS2US(NSEC_PER_SEC)
#define PSCHED_PASTPERFECT		0
#define PSCHED_PASTPERFECT		0
+5 −3
Original line number Original line Diff line number Diff line
@@ -372,7 +372,7 @@ cftree_update(struct hfsc_class *cl)
 *	ism: (psched_us/byte) << ISM_SHIFT
 *	ism: (psched_us/byte) << ISM_SHIFT
 *	dx: psched_us
 *	dx: psched_us
 *
 *
 * The clock source resolution with ktime is 1.024us.
 * The clock source resolution with ktime and PSCHED_SHIFT 10 is 1.024us.
 *
 *
 * sm and ism are scaled in order to keep effective digits.
 * sm and ism are scaled in order to keep effective digits.
 * SM_SHIFT and ISM_SHIFT are selected to keep at least 4 effective
 * SM_SHIFT and ISM_SHIFT are selected to keep at least 4 effective
@@ -383,9 +383,11 @@ cftree_update(struct hfsc_class *cl)
 *  bytes/1.024us 12.8e-3    128e-3     1280e-3    12800e-3   128000e-3
 *  bytes/1.024us 12.8e-3    128e-3     1280e-3    12800e-3   128000e-3
 *
 *
 *  1.024us/byte  78.125     7.8125     0.78125    0.078125   0.0078125
 *  1.024us/byte  78.125     7.8125     0.78125    0.078125   0.0078125
 *
 * So, for PSCHED_SHIFT 10 we need: SM_SHIFT 20, ISM_SHIFT 18.
 */
 */
#define	SM_SHIFT	20
#define	SM_SHIFT	(30 - PSCHED_SHIFT)
#define	ISM_SHIFT	18
#define	ISM_SHIFT	(8 + PSCHED_SHIFT)


#define	SM_MASK		((1ULL << SM_SHIFT) - 1)
#define	SM_MASK		((1ULL << SM_SHIFT) - 1)
#define	ISM_MASK	((1ULL << ISM_SHIFT) - 1)
#define	ISM_MASK	((1ULL << ISM_SHIFT) - 1)