1. 10 Jun, 2016 1 commit
  2. 18 May, 2016 1 commit
  3. 04 Apr, 2016 5 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
      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:
            - 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>
    • 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>
    • 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>
    • 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
          IP-address: (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>
    • 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
      Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
  4. 20 Jan, 2016 7 commits
    • Alessandro Rubini's avatar
      pfilter: simplify the rule-set and make it stronger. Use one set only. · e35610a6
      Alessandro Rubini authored
      This changes the pfilter rule-set, to make it ready for vlan addition.
      Moreover, it removes the choice between three rule-sets and uses one
      that works for everyone (we'll add the vlan option later on).
      Moreover, we prepare for the option of peer-delay PTP and UDP-based PTP.
      As a side effect, one Kconfig option is removed.
      We know for sure that what goes to the "streamer" protocol
      is re-checked, so the streamer can get some "everything else", exactly
      like the 7S wr-nic (that sends to the host everything unused).
      This is the current rule set:
           - everything tagged is dropped
           - CPU: arp broadcast, not unicast (i.e. requests only).
           - CPU: PTP ethtype. Any mac address.
           - CPU: ICMP unicast, not broadcast.
           - CPU: UDP (uni/multicast), ports  bootpc, ptp-event, ptp-general.
           - Etherbone (class 7): UDP (uni/multicast) and port 0xebd0
           - Other fabric (class 6): anything not Etherbone (inverted class 7 bit)
      This counts up to 28 rules. We have 4 more rules available and we may
      add options, either at build time or run time to add udp ports or
      other ethertypes.  Or not...
      2 caveats:
        - frames for the CPU will have class bits 0x41 instead of 0x01, because
        everything not etherbone will receive bit 6. This is not a problem, as
        the CPU is not checking the class bits.
        - the wr-nic gateware, when using this new sw code base, must be
        changed to use classes 6 and 7 like everybody else, not classes 7
        and 5.
      Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
    • Alessandro Rubini's avatar
      include changes, no difference in binaries · 560f32f3
      Alessandro Rubini authored
      The makefile included trace.h for everyone, which in turns included
      wrc.h.  It's better to include wrc.h straight on (we can't rely on all
      files including it, for example pp_printf does not).
      Meanwhile, some redundant includes are removed, and some are added
      (I prefer wrc.h to be explicitly listed in the files that use it,
      even if the command line set in Makefile already prepends it).
      Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
    • Alessandro Rubini's avatar
      Makefile: tools depend on .config · 87ed5e5b
      Alessandro Rubini authored
      Otherwise, the first "make" builds tools before spitting the
      error about an unconfigured system. I prefer to have the error alone.
      Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
    • Alessandro Rubini's avatar
      Makefile: be quiet in calling Kbuild makefiles · bcdbd2ab
      Alessandro Rubini authored
      This quiet=quiet_ has the effect of printing
        HOSTCC  scripts/kconfig/conf.o
        HOSTCC  scripts/kconfig/kxgettext.o
        SHIPPED scripts/kconfig/zconf.tab.c
        SHIPPED scripts/kconfig/lex.zconf.c
        SHIPPED scripts/kconfig/zconf.hash.c
        HOSTCC  scripts/kconfig/zconf.tab.o
        HOSTLD  scripts/kconfig/conf
      instead of the full command lines. We could even use quite=silent_ to
      have no output at all, but this would introduce a noticeable delay in
      the build.
      The aim of this change is making more visible the error "your wrpc is
      not configured" at the first build. The full compilation of config
      stuff makes the error less clear, and the initial error confuses
      people (me included).
      Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
    • Alessandro Rubini's avatar
      Revert "Makefile: add a depend rule, long missing" · 41f432a6
      Alessandro Rubini authored
      This reverts commit 3a3c3806.
      The previous line: every object depending on .config, was better.
      We had the problem that a fresh clone was not building because of a
      missing autoconf.h.
      The depend rule was not working anyways, because it created an empty
      .depend the first time over, due to the missing autoconf.h.  I admit I
      don't know how to create a depend file after configuration: make
      pretends to remake all its inclusions as the first step, so a rule
      like ".depend: silentoldconfig" loops forever.
    • Alessandro Rubini's avatar
      config: rename CONFIG_ETHERBONE to CONFIG_IP · 53ac0936
      Alessandro Rubini authored
      Actually, Etherbone is in gateware, and this option only enables Internet
      Protocol in the software.  This fixes a long-standing misunderstanding.
      Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
    • Alessandro Rubini's avatar
      tool/wrpc-dump: change the access mode, to avoid "gcc -m32" · 1a18111c
      Alessandro Rubini authored
      Accessing data structures in the host to get target fields is broken:
      we may have different data size or alignment, or whatever. The hack
      of using "-m32" to be able to access lm32 fields from x86-64 is not
      clean (we imply the i386 and target have the same size/alignment).
      Even worse, not everybody has an x86-64 cross-compiler for i386.
      Thus, we use OFFSET_OF in the target, with the lm32 cross compiler,
      to build a binary table that is then accessed by the host.
      In order to link the data structure in the host we use the assembler
      instead of objcopy. With objcopy we'd need to spell out the bfd name
      of the host, and we'd get horrible names like
         struct dump_info _binary_dump_info_host_bin_start[];
      Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
  5. 15 Oct, 2015 1 commit
    • Alessandro Rubini's avatar
      Revert "ppsi: pick new master and act accordingly" · a7f92ab1
      Alessandro Rubini authored
      This reverts commit 03062ea3.
      The patch is wrong, because it duplicates
          9491e61b ppsi: pick new master and fix building accordingly
      which does the "fixing" in a more elegant way. With both in history,
      we now have
         ./ppsi/include/generated/autoconf.h:13:0: warning:
                 "CONFIG_VLAN_ARRAY_SIZE" redefined
         generated/autoconf.h:14:0: note: this is the previous definition
      Besides, the reverted commit was not even using new ppsi master (we
      did it before this commit).
      Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
  6. 13 Oct, 2015 3 commits
  7. 01 Sep, 2015 1 commit
  8. 26 Jul, 2015 3 commits
  9. 30 Jun, 2015 2 commits
    • Adam Wujek's avatar
      wrs_main: check for stack overflow and detect reset · da3da2d9
      Adam Wujek authored
      Add checking stack overflow and detecting reset to wrs. Code common for wrpc
      and wrs is placed in system_checks.c and .h. Work is based on following
      commits in wrc_main.c:
      1704a668 main: check for stack overflow
      7836c39e Optionally detect reset and print a stack trace
      --update Kconfig to have a possibility to select CHECK_RESET also for switch,
        not only for node as before
      --and _endram to ram-wrs.ld
      When "stack overflow" occurs then message is printed once every second.
      When reset occours then LM32 will print stack trace and reset once more.
      NOTE: I couldn't get spll to work after reset, for sure problem is in
            ad9516 init function, but not only there.
      Signed-off-by: Adam Wujek's avatarAdam Wujek <adam.wujek@cern.ch>
    • Adam Wujek's avatar
      revision: report build information via spll_stats structure · ee1c7482
      Adam Wujek authored
      --increase spll_stats structure version to 2
      --add to spll_stats structure:
        - commit_id
        - build_date
        - build_time
        - start_cnt (to be used later for start counter)
      --move declaration of spll_stats structure from wrs_main.c to revision.c
      --pass git version and author at compile time to revision.c
      --create revision.h with build_* externs
      --update version reporting at cpu start
      --update version command
      --include section .stats in section .data for node
      Signed-off-by: Adam Wujek's avatarAdam Wujek <adam.wujek@cern.ch>
  10. 06 Jan, 2015 1 commit
    • Theodor-Adrian Stana's avatar
      Add flash-write · 6ef8ac88
      Theodor-Adrian Stana authored
      The flash-write tool is operational. The call to read status register
      from flash-host is not working yet, and that is to be solved. In the
      meantime, there are sleep functions inserted where we're supposed
      to poll the status register.
      Signed-off-by: Theodor-Adrian Stana's avatarTheodor Stana <t.stana@cern.ch>
  11. 08 Oct, 2014 1 commit
  12. 07 Oct, 2014 2 commits
  13. 18 Aug, 2014 1 commit
    • Alessandro Rubini's avatar
      ppsi: get new release, and fix Makefile accordingly · d447f096
      Alessandro Rubini authored
      This includes ppsi-v2014.07.
      The new ppsi master is Kconfig-based, so our makefile must
      make "wrpc_defconfig" in ppsi before building it.
      Additionally, the link steps changed to the better in there, so we
      don't link the "strange" $(PPSI)/proto-standard/libstd.a any more.
      We may consider whether a local .config for ppsi should be
      provided by this package instead of relying on its own choices;
      not a big deal, though, as we maintain them at the same time.
      Please note that any existent ppsi/.config is preserved, to allow
      local tests. This should not have any impact on normal users.
      Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
  14. 05 Aug, 2014 1 commit
  15. 11 Feb, 2014 3 commits
  16. 13 Nov, 2013 1 commit
    • Alessandro Rubini's avatar
      build: avoid internal "ptpdump" support in ppsi, when RAM won't fit · c54cfe24
      Alessandro Rubini authored
      Etherbone won't fit with a full ppsi in the default RAM size for SPEC
      cards. So this commit uses a ppsi hack to avoid internal ptpdump,
      activating it when CONFIG_RAMSIZE is not 128kB and CONFIG_ETHERBONE is
      We should rather compare RAMSIZE with "< 131072", but neither gnu make
      nor this version of Kconfig support numeric comparison.
      This hack will soon disappera, as ppsi is gaining Kconfig support, so
      wrpc-sw will be able to pass proper configuration. Also, 128kB will soon
      be the default for SPEC images.
      Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
  17. 25 Oct, 2013 1 commit
    • Wesley W. Terpstra's avatar
      move stdint.h and inttypes.h to another folder · 4fd8e991
      Wesley W. Terpstra authored
      These headers shadow system headers.
      While they are necessary for building on the LM32, it breaks any
      code that wants the other WR headers on a different architecture.
      By moving these headers, we can pick whether to use them or not.
  18. 17 Oct, 2013 1 commit
  19. 11 Oct, 2013 1 commit
  20. 10 Oct, 2013 1 commit
  21. 24 Sep, 2013 2 commits