Openwrt/target/linux/generic/patches-3.8
Felix Fietkau 8eb57d0cd7 kernel: align the skb padding to power of two
The skb is usually started by a padding which allows the protocols in the
network stack to add their headers in front of the payload. The skb can be
reallocated in case the preallocated padding is not large enough. This can for
example happen in the function __skb_cow which will check the requested extra
headroom and allocate more buffer when the requested headroom is bigger than
the available one. The extra buffer is aligned again to the multiple of the
NET_SKB_PAD of the target architecture.

The macro used to create the multiple of the NET_SKB_PAD is written in a way
which allows only values power two as alignment parameter. The currently used
value of 48 bytes can not be written as n ** 2 but as 2 ** 4 + 2 ** 5. The
extra buffer is therefore not always the multiple of 48 but can be 16, 64, 80,
128, 144 and so on. The generated values are also not monotonic (48 requested
bytes are mapped to 80 allocated bytes and 49 requested bytes are mapped to 64
allocated bytes).

These unexpected small values result in more reallocations of the buffer. This
was noticed prominently during tests between two QCA9558 720 MHz devices which
were connected via ethernet to PCs and had a HT40 802.11n 3x3 link between each
other. The throughput PC-to-PC during iperf TCP runs increased reliable from
186 Mibit/s to 214 Mibit/s in one direction and from 195 Mibit/s to 220 Mibit/s
in the other direction. This is a performance increase of ~14% just by reducing
the amount of reallocations.

Signed-off-by: Sven Eckelmann <sven@open-mesh.com>

SVN-Revision: 37948
2013-09-11 14:30:15 +00:00
..
007-hso-Earlier-catch-of-error-condition.patch kernel: fix arch-dependent bug in hso module 2013-09-10 13:47:44 +00:00
008-hso-Fix-stack-corruption-on-some-architectures.patch kernel: fix arch-dependent bug in hso module 2013-09-10 13:47:44 +00:00
010-mtd_mp25p80_add_gd25q32_gd25q64.patch
020-ssb_update.patch kernel: update bcma and ssb to version from wireless-testing/master tag master-2013-07-18 2013-07-19 12:02:34 +00:00
025-bcma_backport.patch kernel: update bcma and ssb to version from wireless-testing/master tag master-2013-07-18 2013-07-19 12:02:34 +00:00
026-bcma_pcie_up_down.patch kernel: fix DMA error when BCM4331 is connected to BCM4706 2013-08-05 16:17:05 +00:00
030-backport-lib-devres-Introduce-devm_ioremap_resource.patch
031-PCI-Remove-__weak-annotation-from-pcibios_get_phb_of.patch
032-MIPS-PCI-Implement-pcibios_get_phb_of_node.patch
033-backport-spi-of-Use-DT-aliases-for-assigning-bus-number.patch
040-backport_led_gpio_request_fix.patch kernel: refresh patches for kernel 3.8.13 2013-07-13 22:45:56 +00:00
060-hso_devices.patch
061-arm_xz_decompressor_build_fix.patch
062-mips_decompressor_build_fix.patch
084-x86_fix_perf_uclibc_build.patch
100-overlayfs.patch
101-overlayfs_path_ref.patch kernel: fix a reference counting bug in overlayfs 2013-06-22 14:00:12 +00:00
102-ehci_hcd_ignore_oc.patch
110-fix_mtd_include.patch
200-fix_localversion.patch
201-extra_optimization.patch build: unify target independent optimization options 2013-07-29 09:38:29 +00:00
202-reduce_module_size.patch
203-kallsyms_uncompressed.patch
204-module_strip.patch kernel: refresh patches for kernel 3.8.13 2013-07-13 22:45:56 +00:00
210-darwin_scripts_include.patch
212-byteshift_portability.patch
220-gc_sections.patch
221-module_exports.patch
230-openwrt_lzma_options.patch
250-netfilter_depends.patch
251-sound_kconfig.patch
252-mv_cesa_depends.patch
253-ssb_b43_default_on.patch
254-textsearch_kconfig_hacks.patch
255-lib80211_kconfig_hacks.patch
256-crypto_add_kconfig_prompts.patch
257-wireless_ext_kconfig_hack.patch
258-netfilter_netlink_kconfig_hack.patch
259-regmap_dynamic.patch
260-crypto_test_dependencies.patch
261-move_bcm963xx_tag.patch
262-compressor_kconfig_hack.patch
300-mips_expose_boot_raw.patch
301-mips_image_cmdline_hack.patch
302-mips_no_branch_likely.patch
304-mips_disable_fpu.patch
305-mips_module_reloc.patch
306-mips_mem_functions_performance.patch
308-mips-show-correct-cpu-name-for-24KEc.patch
309-mips_fuse_workaround.patch
310-arm_module_unresolved_weak_sym.patch
320-ppc4xx_optimization.patch
321-powerpc_crtsavres_prereq.patch
322-ppc4xx-crypto-compile-fix.patch
400-rootfs_split.patch
401-partial_eraseblock_write.patch
410-mtd_info_move_forward_decl.patch
420-redboot_space.patch
430-mtd_myloader_partition_parser.patch
440-block2mtd_init.patch
441-block2mtd_refresh.patch kernel: fixing a potential deadlock in block2mtd for kernel 3.6/3.8/3.9 2013-08-26 17:47:14 +00:00
442-block2mtd_probe.patch
450-mtd_plat_nand_chip_fixup.patch
451-mtd_fix_nand_correct_data_return_code.patch
460-cfi_cmdset_0002_no_erase_suspend.patch
470-mtd_m25p80_add_pm25lv_flash_support.patch
473-mtd_m25p80_add_w25q128.patch
474-mtd_mp25p80_add_pm25lq032.patch
475-mtd_cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch
476-mtd-m25p80-allow-to-disable-small-sector-erase.patch
478-mtd-partial_eraseblock_unlock.patch
500-yaffs-Kbuild-integration.patch
501-yaffs-Fix-directory-unlinking-in-yaffs1-mode.patch
502-yaffs-Switch-from-semaphores-to-mutexes.patch
503-yaffs-Replace-yaffs_dir_llseek-with-Linux-generic-ll.patch
504-yaffs-Mods-for-Linux-3.0-and-fix-a-typo.patch
505-yaffs-3.2-use-MTD_OPS_AUTO_OOB.patch
506-yaffs-3.2-dont-use-i_nlink-directly.patch
507-yaffs-3.3_fix.patch
508-yaffs-3.3-use-mtd_-helpers.patch
509-yaffs-3.4-add-underscore-to-mtd-internal-names.patch
510-yaffs-3.4-use-d_make_root.patch
511-yaffs-3.5-use-clear_inode.patch
512-yaffs-3.5-convert-to-use-kuid_t-kgid_t.patch
513-yaffs-3.6-fix-dir_inode-ops.patch
514-yaffs-3.6-use-delayed-work-instead-of-write_super.patch
520-squashfs_update_xz_comp_opts.patch
530-jffs2_make_lzma_available.patch
531-debloat_lzma.patch kernel: refresh patches for kernel 3.8.13 2013-07-13 22:45:56 +00:00
532-jffs2_eofdetect.patch
540-crypto-xz-decompression-support.patch
541-ubifs-xz-decompression-support.patch
550-ubifs-symlink-xattr-support.patch
551-ubifs-fix-default-compression-selection.patch
600-netfilter_layer7_2.22.patch
601-netfilter_layer7_pktmatch.patch
602-netfilter_layer7_match.patch
603-netfilter_layer7_2.6.36_fix.patch
604-netfilter_conntrack_flush.patch
610-netfilter_match_bypass_default_checks.patch
611-netfilter_match_bypass_default_table.patch
612-netfilter_match_reduce_memory_access.patch
613-netfilter_optional_tcp_window_check.patch
620-sched_esfq.patch
621-sched_act_connmark.patch
630-packet_socket_type.patch
640-bridge_no_eap_forward.patch
641-bridge_always_accept_eap.patch
642-bridge_port_isolate.patch
643-bridge_remove_ipv6_dependency.patch
644-bridge_optimize_netfilter_hooks.patch
650-pppoe_header_pad.patch
651-wireless_mesh_header.patch
652-atm_header_changes.patch
653-disable_netlink_trim.patch
655-increase_skb_pad.patch kernel: align the skb padding to power of two 2013-09-11 14:30:15 +00:00
656-skb_reduce_truesize-helper.patch
657-qdisc_reduce_truesize.patch
660-fq_codel_defaults.patch
661-fq_codel_keep_dropped_stats.patch
662-use_fq_codel_by_default.patch
663-remove_pfifo_fast.patch
670-ipv6-allow-rejecting-with-source-address-failed-policy.patch kernel: refresh patches for kernel 3.8.13 2013-07-13 22:45:56 +00:00
700-swconfig.patch
701-phy_extension.patch
702-phy_add_aneg_done_function.patch
703-phy-add-detach-callback-to-struct-phy_driver.patch
710-phy-add-mdio_register_board_info.patch
720-phy_adm6996.patch
721-phy_packets.patch
722-phy_mvswitch.patch
723-phy_ip175c.patch
724-phy_ar8216.patch
725-phy_rtl8306.patch
726-phy_rtl8366.patch
727-phy-rtl8367.patch
728-phy-micrel.patch
729-phy-rtl8367b.patch
729-phy-tantos.patch
730-phy_b53.patch
750-hostap_txpower.patch
800-usb-ohci-multiple-platform-driver-fix.patch
810-pci_disable_common_quirks.patch
811-pci_disable_usb_common_quirks.patch
820-usb_add_usb_find_device_by_name.patch
830-ledtrig_morse.patch
831-ledtrig_netdev.patch
832-ledtrig_usbdev.patch
840-rtc7301.patch
841-rtc_pt7c4338.patch
861-04_spi_gpio_implement_spi_delay.patch
862-gpio_spi_driver.patch
863-gpiommc.patch strict_strtoul is obsolete, use kstrtoul instead 2013-07-27 09:23:18 +00:00
864-gpiommc_configfs_locking.patch strict_strtoul is obsolete, use kstrtoul instead 2013-07-27 09:23:18 +00:00
870-hifn795x_byteswap.patch
880-gateworks_system_controller.patch kernel: allow hwmon GSC driver for all targets 2013-09-10 22:26:30 +00:00
890-8250_optional_sysrq.patch kernel: do not accept sysrq characters via serial port 2013-07-09 12:52:00 +00:00
900-slab_maxsize.patch
901-debloat_sock_diag.patch
902-debloat_proc.patch kernel: refresh patches for kernel 3.8.13 2013-07-13 22:45:56 +00:00
903-debloat_direct_io.patch
910-kobject_uevent.patch
911-kobject_add_broadcast_uevent.patch
921-use_preinit_as_init.patch
922-always-create-console-node-in-initramfs.patch kernel: ensure that /dev/console exists in initramfs 2013-08-27 12:02:54 +00:00
930-crashlog.patch kernel: crashlog: Avoid out-of-bounds write 2013-08-21 20:59:25 +00:00
940-ocf_kbuild_integration.patch
941-ocf_20120127.patch
950-vm_exports.patch
960-decompress_unlzo_fix.patch
970-remove-unsane-filenames-from-deps_initramfs-list.patch
980-arm_openwrt_machtypes.patch
992-mpcore_wdt_fix_watchdog_counter_loading.patch
993-mpcore_wdt_fix_wdioc_setoptions_handling.patch
994-mpcore_wdt_fix_timer_mode_setup.patch
995-mpcore_twd_calibrate_single_core.patch
996-zsmalloc_allow_module_build.patch
997-device_tree_cmdline.patch