1. 21 Dec, 2017 1 commit
  2. 29 Nov, 2017 1 commit
  3. 03 Jul, 2017 1 commit
  4. 21 Jun, 2017 1 commit
  5. 20 Jun, 2017 1 commit
  6. 20 Mar, 2017 1 commit
  7. 02 Mar, 2017 1 commit
  8. 27 Feb, 2017 3 commits
  9. 23 Feb, 2017 7 commits
  10. 16 Feb, 2017 4 commits
  11. 09 Feb, 2017 1 commit
  12. 30 Jan, 2017 3 commits
  13. 10 Jun, 2016 1 commit
  14. 18 May, 2016 1 commit
  15. 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
      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
      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
      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
  16. 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>
      e35610a6
    • 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>
      560f32f3
    • 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>
      87ed5e5b
    • 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>
      bcdbd2ab
    • 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.
      41f432a6
    • 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>
      53ac0936
    • 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>
      1a18111c
  17. 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>
      a7f92ab1