Version 6 (modified by JoelSherrill, on Mar 20, 2012 at 1:05:20 AM) (diff)

Add link to git

TCP/IP update

Table of Contents

  1. TCP/IP update

Status: Active -- Contact JoelSherrill

This effort consists of taking the FreeBSD 8.2 source and porting the TCP/IP portion to RTEMS. This version is being used as a baseline since embedded brains gmbh used this to port the USB stack to RTEMS. The source code for this work is available at We are building on that to add the TCP/IP functionality.

The overriding goals are:

  • update the TCP/IP stack
  • provide maintainable port
  • easy to update to new FreeBSD version in future
  • minimal changes to FreeBSD code
  • provide feedback to FreeBSD community so changes grow smaller on future updates

JoelSherrill is leading an effort to port the stack but the goal is only to have it working on a couple of BSPs with a few NICs. Current tasks available for SOC activities include (in no particular order):

  • address NICs not included in initial set but needed
  • address NICs in RTEMS NOT supported by FreeBSD
  • update NICs not replaced by new FreeBSD ones
    • automate this as much as possible
    • minimize impact on source as much as possible
  • provide "bus glue" files for BSPs with existing NICs
  • address internet checksum (e.g. in_cksum) code for architectures not found in FreeBSD
    • some have optimized versions in RTEMS now not in FreeBSD (e.g. m68k)
    • generic in_cksum implementation needs to work (currently appears to be missing a symbol)

Working the above list would be a highly desirable SOC project.

  • add shared baseline linkcmds (e.g. linkcmds.base) to architectures and BSPs missing it now

The FreeBSD kernel APIs needing to be addressed include:

The Rosetta OS Device Driver API? was an earlier non-RTEMS effort to provide a common driver baseline. It may be useful as a reference.