1. 04 Apr, 2016 23 commits
    • Alessandro Rubini's avatar
      Support for host builds. · cf33ae1d
      Alessandro Rubini authored
      This commit is not breaking the current status, but adds the
      ability to build on the host, to simulate and (mainly) to help
      me hack the networking code in a simpler/faster environment.
      
      Missing features:
      	- ptp
      	- build in i386 (currently x86-64 is hardwired)
      
      Also, this commit requires a change in ppsi, that I'm not going to
      commit now: we must get rid of the main function (most of that
      stuff is done win wrc_ptp.c, which we must replicate  in a unix-compatible
      way).
      
      This is the ppsi change
      
         --- a/arch-unix/Makefile
         +++ b/arch-unix/Makefile
         @@ -4,7 +4,7 @@ A := arch-$(ARCH)
      
          CFLAGS += -Itools
      
         -OBJ-y += $A/unix-startup.o \
         +OBJ-y += \
                 $A/main-loop.o \
                 $A/unix-io.o \
                 $A/unix-conf.o \
      
      Local changes in this commit:
            - adding CONFIG_HOST_PROCESS and the auto-generated opposites:
            CONFIG_LM32 and CONFIG_EMBEDDED_NODE (LM32 && NODE)
      
            - make some config option depend on !HOST_PROCESS
      
            - Makefile: some dependencies on HOST_PROCESS and the opposite
      
            - */*.mk: some dev and shell objects depend on
            CONFIG_EMBEDDED_NODE instead of CONFIG_WR_NODE (i.e.: both a
            node and an lm32)
      
            - new host/ subdir where some placeholders are placed
      
            - no sdb support on the host
      Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
      cf33ae1d
    • Alessandro Rubini's avatar
      Makefile: add CONFIG_LM32, fix accordingly · 212b4f57
      Alessandro Rubini authored
      This, again, is preliminary to host builds, and has no effect.
      Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
      212b4f57
    • Alessandro Rubini's avatar
      Preliminary changes to introduce host build (no effect) · de40542e
      Alessandro Rubini authored
      These changes have no effect at this point, but are the initial steps
      introducing host builds. Some changes are minor cleanups, some depend
      on CONFIG_HOST_PROCESS which is not defined at this point.
      Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
      de40542e
    • Alessandro Rubini's avatar
      Merge branch 'temperature-framework' · 529b4a4a
      Alessandro Rubini authored
      529b4a4a
    • Alessandro Rubini's avatar
      temperature: add a fake temperature-set to show how to use it · c58702a0
      Alessandro Rubini authored
      We have three temperatures, called "roof", "core", "case"
      (yess rubi like word same lengt, s/he most love four).
      
      There is a "faketemp" command that can set one two or all of them.
      This allows to test negative temperatures in printouts (White Rabbit
      in Siberia does it, but we southish can't test easily).
      
      All temperatures are initialized to invalid. Example:
      
         wrc# faketemp -10 -2.5
         wrc# faketemp
         fff60000 fffd8003 80000000
         wrc# temp
         pcb:84.7500 roof:-10.0000 core:-2.4999 case:INVALID
      Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
      c58702a0
    • Alessandro Rubini's avatar
      temperature: make the framework modular · a661eeed
      Alessandro Rubini authored
      This costs anoter 220 bytes in the binary, becuase we now loop among
      all temperature providers in order to return data to the caller.
      
      The providers are clustered using an ELF section.
      Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
      a661eeed
    • Alessandro Rubini's avatar
      temperature: add a temperature framework · e2e7d59a
      Alessandro Rubini authored
      This commit adds data structures, methods and a process to manage
      temperature.  Currently the only temperature being read is the onewire
      thermometer, so there is no difference with what we had before.
      The cost is 1.1 kB in binary size.
      
      Well, there is a difference: only the stat engine was reading
      temperature, while now the thermometer is read continuously (every 15
      seconds, or another Kconfig-urable interval).  This takes quite some
      CPU time (18.5ms per polling loop, but allows any user to read
      temperature (using the API we now provide) without re-reading the
      onewire bus.
      
      The real aim of this is monitoring a board-specific set of sensors,
      as implemented and show in the next commit.
      Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
      e2e7d59a
    • Alessandro Rubini's avatar
      Merge branch 'vlan-support' · 3e630d08
      Alessandro Rubini authored
      3e630d08
    • Alessandro Rubini's avatar
      add pfilter_verbose, selected by Kconfig (developer mode) · dd612fb9
      Alessandro Rubini authored
      Also, this changes how to mac address is retrieved in patching pfilter
      rules. I'd better use format_mac(get_mac) for the verbose message,
      so get_mac is also the source for patching the rules.
      
      register and get_mac/set_mac are guaranteed to be in-sync.
      Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
      dd612fb9
    • Alessandro Rubini's avatar
      vlan: route 2 vlan numbers to Etherbone and 1 to streamer/nic · 29b77fb9
      Alessandro Rubini authored
      These numbers are only available at build time; there is no run-time
      command to change them as yet.
      Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
      29b77fb9
    • Alessandro Rubini's avatar
      syslog: report track-phase losses · 22f24ec4
      Alessandro Rubini authored
      Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
      22f24ec4
    • Alessandro Rubini's avatar
      vlan: add "vlan off" command, switch pfilter rule-set at runtime · d4c72f47
      Alessandro Rubini authored
      This allows a node built with CONFIG_VLAN to choose at run-time
      whether vlans are allowed or not.  We build both pfilter rule-sets,
      and according to the active vlan number we write one or the other.
      
      The case "CONFIG_VLAN is not set" is handled by providing default
      NULL pointers for beginning and end of the vlan rule-set.
      
      As a side effect, I renamed the files and the functions in
      the pfilter-builder.
      
      This is how it works for me, with CONFIG_PFILTER_VERBOSE set,
      so you see different rule-set  are used (29 rules vs. 16 rules):
      
          wrc# vlan set 0
          0 ("0") out of range
          Command "vlan": error -22
          wrc# vlan off
          fixing MAC adress in rule: use 22:33:44:55:66:77
          pfilter rule 00: 4.00000000
          pfilter rule 01: 1.e4466013
          [...]
          pfilter rule 28: 8.00000000
          current vlan: 0 (0x0)
          wrc# ip set 10.0.0.2
          IP-address: 10.0.0.2 (static assignment)
      
        (and I am now reachable by untagged frames)
      
          wrc# vlan set 10
          fixing MAC adress in rule: use 22:33:44:55:66:77
          fixing VLAN number in rule: use 10
          pfilter rule 00: 4.00000000
          pfilter rule 01: 1.e4466013
          [...]
          pfilter rule 15: 8.00000000
          current vlan: 10 (0xa)
      
        (and I am now reachable on vlan 10)
      Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
      
      Conflicts:
      	Makefile
      d4c72f47
    • Alessandro Rubini's avatar
    • Alessandro Rubini's avatar
      shell: implement vlan command · ab7cb867
      Alessandro Rubini authored
      This allows a run-time change of the active vlan, if CONFIG_VLAN is
      active at build time.  The pfilter rules are being rewritten every
      time the vlan is changed (and we have one VLAN only for the CPU).
      
         wrc# vlan set 0
         0 ("0") out of range
         Command "vlan": error -22
         wrc# vlan set pippo
         0 ("pippo") out of range
         Command "vlan": error -22
      
         wrc# vlan
         current vlan: 10 (0xa)
      
         wrc# vlan set 20
         current vlan: 20 (0x14)
         wrc# ip set 192.168.20.2
         IP-address: 192.168.20.2 (static assignment)
      
            (and the node now replies to ping on vlan 20)
      
         wrc# vlan set 10
         current vlan: 10 (0xa)
         wrc# ip set 192.168.10.2
         IP-address: 192.168.10.2 (static assignment)
      
            (and the node now replies to ping on vlan 10)
      Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
      ab7cb867
    • Alessandro Rubini's avatar
      ppsi: new master · 6ca25c56
      Alessandro Rubini authored
      This includes a wrs fix by Maciej and a change that prevents warning
      when bulding with CONFIG_HOST_PROCESS (which is not there yet).  I
      prefer to merge this now, so the next commit picks only its own little
      change into the ppsi submodule.
      Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
      6ca25c56
    • Alessandro Rubini's avatar
    • Alessandro Rubini's avatar
      shell: optionally define a build-time init command · ce0af021
      Alessandro Rubini authored
      This commit adds the possibility to build an init command in the
      binary.  It can be useful to install a number of nodes with a special
      configuration, without the need to reach the shell and/or eeprom of
      each one.
      
      This is useful, for example, to pass syslog configuration
      or the (yet to be implemented) definition of multiple vlans for
      etherbone and the wr fabric (frame classes 7 and 6 f the packet
      filter). Moreover, I personally love to load a master or slave node
      for testing without interacting with the node (or changing the flash
      over and over).
      
      This commit also makes reading of commands from storage an optional
      feature, but only in the advanced/developer options. Thus, you can
      build a wrpc that uses the build-time init commands, or the
      flash-stored init commands, both or none of them.
      
      Size effects:
           * no effect if you keep the defaults (no build-time init, flash init)
           * +248 bytes (+ the command itself) if you enable build-time init
           * -1696 bytes if you remove flash-based init (discouraged)
      Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
      ce0af021
    • Alessandro Rubini's avatar
      vlan: add one VLAN in Kconfig as an option · a444be3e
      Alessandro Rubini authored
      WARNING: wr_switch_defconfig doesn't build, this is fixed in next commit
      
      Unfortunately this commit makes the internal communication between
      minic and lan asymmetric: on receive the tag is discarded (and the
      longer header falls into the payload) while on transmit it must be
      provided by lan.c.
      
      The reason is that on receive we can trim 4 bytes from the payload,
      but on send we can't add 4 bytes without a memmove.  The functions
      receive pointers to two different header structures, so hopefully
      user errors will be signalled by the compiler.
      
      Still, users interact with net.c, which hides vlan completely from
      them.
      Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
      a444be3e
    • Alessandro Rubini's avatar
      net: typo in comment · 4cfc5987
      Alessandro Rubini authored
      Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
      4cfc5987
    • Alessandro Rubini's avatar
      net: define wr_ethhdr and use it (no change) · 52ec2a38
      Alessandro Rubini authored
      We used to have "struct ethhdr" local in net.c, passing "void *hdr" to
      minic.  We exports the structure to an header so to use it in
      communicating with the minic.  Unfortunaltey, ethhdr is defined elsewhere
      too, so we'd better rename to wr_ethhdr.
      
      This is a step towards the introduction of vlans, but has no technical
      effect by itself.
      Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
      52ec2a38
    • Alessandro Rubini's avatar
      udp: bugfix for checksum generation · 765443c7
      Alessandro Rubini authored
      the UDP checlsum was miscalculated for odd-sized payload. The last
      byte was not used in calculation.
      Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
      765443c7
    • Alessandro Rubini's avatar
      trivial: remove unused man_phase · 0887cbbe
      Alessandro Rubini authored
      Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
      0887cbbe
    • Davide Ciminaghi's avatar
  2. 16 Feb, 2016 16 commits
  3. 15 Feb, 2016 1 commit