Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: src/sys



Module Name:    src
Committed By:   ozaki-r
Date:           Thu Jun  4 09:20:00 UTC 2015

Modified Files:
        src/sys/net: if_arcsubr.c if_atmsubr.c if_ecosubr.c if_ethersubr.c
            if_fddisubr.c if_hippisubr.c if_ieee1394subr.c if_mpls.c
        src/sys/netinet: in_offload.c ip_output.c ip_var.h
        src/sys/sys: mbuf.h

Log Message:
Pull out route lookups from L2 output routines

Route lookups for routes of RTF_GATEWAY were done in L2 output
routines such as ether_output, but they should be done in L3
i.e., before L2 output routines. This change places the lookups
between L3 output routines (say ip_output) and the L2 output
routines.

The change is based on dyoung's patch submitted in the thread:
https://mail-index.netbsd.org/tech-net/2013/02/01/msg003847.html
You can find out detailed investigations by dyoung about the
issue in there.

Note that the change introduces a workaround for MPLS. ether_output
knew that it needs to fill the ethertype of a frame as MPLS,
based on a tag of an original route (rtentry), but now we don't
pass it to ehter_output. So we have to tell that in another way.
We use mtag to do so for now, which introduces some overhead.
We should fix it somehow in the future.

Discussed on tech-kern and tech-net.


To generate a diff of this commit:
cvs rdiff -u -r1.66 -r1.67 src/sys/net/if_arcsubr.c
cvs rdiff -u -r1.52 -r1.53 src/sys/net/if_atmsubr.c
cvs rdiff -u -r1.42 -r1.43 src/sys/net/if_ecosubr.c \
    src/sys/net/if_hippisubr.c
cvs rdiff -u -r1.209 -r1.210 src/sys/net/if_ethersubr.c
cvs rdiff -u -r1.91 -r1.92 src/sys/net/if_fddisubr.c
cvs rdiff -u -r1.48 -r1.49 src/sys/net/if_ieee1394subr.c
cvs rdiff -u -r1.16 -r1.17 src/sys/net/if_mpls.c
cvs rdiff -u -r1.5 -r1.6 src/sys/netinet/in_offload.c
cvs rdiff -u -r1.238 -r1.239 src/sys/netinet/ip_output.c
cvs rdiff -u -r1.107 -r1.108 src/sys/netinet/ip_var.h
cvs rdiff -u -r1.157 -r1.158 src/sys/sys/mbuf.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.




Home | Main Index | Thread Index | Old Index