summaryrefslogtreecommitdiffstats
path: root/drivers/s390/net/qeth_core_main.c
diff options
context:
space:
mode:
authorDavid S. Miller2013-01-21 19:50:10 +0100
committerDavid S. Miller2013-01-21 19:50:10 +0100
commit9acefd17cba1a018163d00b5b5e463db8e3761ab (patch)
treea9b0846968a4df192ec7cb890b5a929c67b61a9d /drivers/s390/net/qeth_core_main.c
parentnet: ethernet: davinci: Fix build breakage (diff)
parentndisc: Use compound literals to build redirect message. (diff)
downloadkernel-qcow2-linux-9acefd17cba1a018163d00b5b5e463db8e3761ab.tar.gz
kernel-qcow2-linux-9acefd17cba1a018163d00b5b5e463db8e3761ab.tar.xz
kernel-qcow2-linux-9acefd17cba1a018163d00b5b5e463db8e3761ab.zip
Merge branch 'ipv6_ndisc'
YOSHIFUJI Hideaki says: ==================== This series of changes basically clean up NDISC logic, especially on sender side. We originally do For NS/NA/RS: 1) build temporary ICMPv6 header 2) ndisc_build_skb() with temporary ICMPv6 header and rather criptic arguments. - Calculate total length and allocate sk_buff - Build IPv6 header. - copy ICMPv6 header, additional data and ND options. - Fill-in ICMPv6 checksum. Here, structures defined for message format was not used at all, it is difficult to understand what is being sent, and it was not generic. 3) __ndisc_send() - Allocate temporary dst. - Send it. Several issues: - We could not defer decision if we should/can send some ND option. - It is hard to see the packet format at a glance. - ICMPv6 header was built as temporary variable, and then copied to the buffer. - Some code path for Redirect was not shared. With these patches, we do: 1) Calculate (or estimate) message length and option length. 2) Allocate skb (via new ndisc_skb_alloc()). 3) Fill-in ICMPv6 message directly using compound literals. 4) Fill-in ICMPv6 checksum 5) Build IPv6 header (including length) 6) Send the packet (via ndisc_send_skb()). - allocate temporary dst and send it. - We can defer calculating real length of the packet. For example, we can give up filling some option at when filling in. - Message is built directly without temporary buffer. - Structures defined for message format is easier to understand what is being built. - NS/NA/RS/Redirect share same logic. - Reduced code/data size: text data bss dec hex filename 265407 14133 3488 283028 45194 old/net/ipv6/ipv6.o 264955 14109 3488 282552 44fb8 new/net/ipv6/ipv6.o ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/s390/net/qeth_core_main.c')
0 files changed, 0 insertions, 0 deletions