1. 15 11月, 2019 3 次提交
    • D
      Merge branch 'PTP-clock-source-for-SJA1105-tc-taprio-offload' · ccb68993
      David S. Miller 提交于
      Vladimir Oltean says:
      
      ====================
      PTP clock source for SJA1105 tc-taprio offload
      
      This series makes the IEEE 802.1Qbv egress scheduler of the sja1105
      switch use a time reference that is synchronized to the network. This
      enables quite a few real Time Sensitive Networking use cases, since in
      this mode the switch can offer its clients a TDMA sort of access to the
      network, and guaranteed latency for frames that are properly scheduled
      based on the common PTP time.
      
      The driver needs to do a 2-part activity:
      - Program the gate control list into the static config and upload it
        over SPI to the switch (already supported)
      - Write the activation time of the scheduler (base-time) into the
        PTPSCHTM register, and set the PTPSTRTSCH bit.
      - Monitor the activation of the scheduler at the planned time and its
        health.
      
      Ok, 3 parts.
      
      The time-aware scheduler cannot be programmed to activate at a time in
      the past, and there is some logic to avoid that.
      
      PTPCLKCORP is one of those "black magic" registers that just need to be
      written to the length of the cycle. There is a 40-line long comment in
      the second patch which explains why.
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ccb68993
    • V
      net: dsa: sja1105: Implement state machine for TAS with PTP clock source · 86db36a3
      Vladimir Oltean 提交于
      Tested using the following bash script and the tc from iproute2-next:
      
      	#!/bin/bash
      
      	set -e -u -o pipefail
      
      	NSEC_PER_SEC="1000000000"
      
      	gatemask() {
      		local tc_list="$1"
      		local mask=0
      
      		for tc in ${tc_list}; do
      			mask=$((${mask} | (1 << ${tc})))
      		done
      
      		printf "%02x" ${mask}
      	}
      
      	if ! systemctl is-active --quiet ptp4l; then
      		echo "Please start the ptp4l service"
      		exit
      	fi
      
      	now=$(phc_ctl /dev/ptp1 get | gawk '/clock time is/ { print $5; }')
      	# Phase-align the base time to the start of the next second.
      	sec=$(echo "${now}" | gawk -F. '{ print $1; }')
      	base_time="$(((${sec} + 1) * ${NSEC_PER_SEC}))"
      
      	tc qdisc add dev swp5 parent root handle 100 taprio \
      		num_tc 8 \
      		map 0 1 2 3 5 6 7 \
      		queues 1@0 1@1 1@2 1@3 1@4 1@5 1@6 1@7 \
      		base-time ${base_time} \
      		sched-entry S $(gatemask 7) 100000 \
      		sched-entry S $(gatemask "0 1 2 3 4 5 6") 400000 \
      		clockid CLOCK_TAI flags 2
      
      The "state machine" is a workqueue invoked after each manipulation
      command on the PTP clock (reset, adjust time, set time, adjust
      frequency) which checks over the state of the time-aware scheduler.
      So it is not monitored periodically, only in reaction to a PTP command
      typically triggered from a userspace daemon (linuxptp). Otherwise there
      is no reason for things to go wrong.
      
      Now that the timecounter/cyclecounter has been replaced with hardware
      operations on the PTP clock, the TAS Kconfig now depends upon PTP and
      the standalone clocksource operating mode has been removed.
      Signed-off-by: NVladimir Oltean <olteanv@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      86db36a3
    • V
      net: dsa: sja1105: Make the PTP command read-write · 41603d78
      Vladimir Oltean 提交于
      The PTPSTRTSCH and PTPSTOPSCH bits are actually readable and indicate
      whether the time-aware scheduler is running or not. We will be using
      that for monitoring the scheduler in the next patch, so refactor the PTP
      command API in order to allow that.
      Signed-off-by: NVladimir Oltean <olteanv@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      41603d78
  2. 14 11月, 2019 13 次提交
  3. 13 11月, 2019 24 次提交
新手
引导
客服 返回
顶部