04 Jan, 2015
6 commits
-
Signed-off-by: Thomas Graf
Signed-off-by: David S. Miller -
The removal function of nft_hash currently stores a reference to the
previous element during lookup which is used to optimize removal later
on. This was possible because a lock is held throughout calling
rhashtable_lookup() and rhashtable_remove().With the introdution of deferred table resizing in parallel to lookups
and insertions, the nftables lock will no longer synchronize all
table mutations and the stored pprev may become invalid.Removing this optimization makes removal slightly more expensive on
average but allows taking the resize cost out of the insert and
remove path.Signed-off-by: Thomas Graf
Cc: netfilter-devel@vger.kernel.org
Signed-off-by: David S. Miller -
Subsequent patches will require access to the bucket tail. Access
to the tail is relatively cheap as the automatic resizing of the
table should keep the number of entries per bucket to no more
than 0.75 on average.Signed-off-by: Thomas Graf
Signed-off-by: David S. Miller -
This patch is in preparation to introduce per bucket spinlocks. It
extends all iterator macros to take the bucket table and bucket
index. It also introduces a new rht_dereference_bucket() to
handle protected accesses to buckets.It introduces a barrier() to the RCU iterators to the prevent
the compiler from caching the first element.The lockdep verifier is introduced as stub which always succeeds
and properly implement in the next patch when the locks are
introduced.Signed-off-by: Thomas Graf
Signed-off-by: David S. Miller -
Signed-off-by: Thomas Graf
Signed-off-by: David S. Miller -
Hash the key inside of rhashtable_lookup_compare() like
rhashtable_lookup() does. This allows to simplify the hashing
functions and keep them private.Signed-off-by: Thomas Graf
Cc: netfilter-devel@vger.kernel.org
Signed-off-by: David S. Miller
03 Jan, 2015
21 commits
-
Richard Cochran says:
====================
Fixing the "Time Counter fixes and improvements"For this series I had only tested the build with ARCH=x86 and arm, but
others like sparc64, microblaze, powerpc, and s390 will fail because
they somehow don't indirectly include clocksource.h for the drivers in
question.This series fixes the build issues reported by:
kbuild test robot
====================Signed-off-by: David S. Miller
-
The timecounter/cyclecounter code has moved, so users need the new include.
Signed-off-by: Richard Cochran
Signed-off-by: David S. Miller -
This driver uses the function, clocksource_khz2mult, and so it really must
include clocksource.h.Signed-off-by: Richard Cochran
Signed-off-by: David S. Miller -
Signed-off-by: Richard Cochran
Signed-off-by: David S. Miller -
Signed-off-by: Richard Cochran
Signed-off-by: David S. Miller -
Signed-off-by: Richard Cochran
Signed-off-by: David S. Miller -
Signed-off-by: Richard Cochran
Signed-off-by: David S. Miller -
There is no need for users of the timecounter/cyclecounter code to include
clocksource.h just for a single macro.Signed-off-by: Richard Cochran
Signed-off-by: David S. Miller -
OVS development is moved to netdev mailing list. Update tree and
list in MAINTAINERS file.Signed-off-by: Pravin B Shelar
Signed-off-by: David S. Miller -
…ub/scm/linux/kernel/git/kvalo/wireless-drivers-next
Changes:
* ath9k: enable Transmit Power Control (TPC) for ar9003 chips
* rtlwifi: cleanup and updates from the vendor driver
* rsi: fix memory leak related to firmware image
* ath: parameter fix for FCC DFS pattern
Signed-off-by: David S. Miller <davem@davemloft.net>
-
Removes some functions that are not used anywhere:
enic_dev_enable2_done() enic_dev_enable2() enic_dev_deinit_done()
enic_dev_init_prov2() enic_vnic_dev_deinit()This was partially found by using a static code analysis program called cppcheck.
Signed-off-by: Rickard Strandqvist
Signed-off-by: David S. Miller -
Removes some functions that are not used anywhere:
Read_hfc32() Write_hfc32() Write_hfc16()This was partially found by using a static code analysis program called cppcheck.
Signed-off-by: Rickard Strandqvist
Signed-off-by: David S. Miller -
Remove the function smt_ifconfig() that is not used anywhere.
This was partially found by using a static code analysis program called cppcheck.
Signed-off-by: Rickard Strandqvist
Signed-off-by: David S. Miller -
Removes some functions that are not used anywhere:
dbgi_rd_rsp3() dbgi_wr_addr3()This was partially found by using a static code analysis program called cppcheck.
Signed-off-by: Rickard Strandqvist
Signed-off-by: David S. Miller -
Not needed, only four cases:
- kfree_skb (or one of its aliases).
Don't need to zero, memory will be freed.
- kfree_skb_partial and head was stolen: memory will be freed.
- skb_morph: The skb header fields (including tc ones) will be
copied over from the 'to-be-morphed' skb right after
skb_release_head_state returns.
- skb_segment: Same as before, all the skb header
fields are copied over from the original skb right away.Signed-off-by: Florian Westphal
Signed-off-by: David S. Miller -
…etooth/bluetooth-next
Johan Hedberg say:
====================
pull request: bluetooth-next 2014-12-31Here's the first batch of bluetooth patches for 3.20.
- Cleanups & fixes to ieee802154 drivers
- Fix synchronization of mgmt commands with respective HCI commands
- Add self-tests for LE pairing crypto functionality
- Remove 'BlueFritz!' specific handling from core using a new quirk flag
- Public address configuration support for ath3012
- Refactor debugfs support into a dedicated file
- Initial support for LE Data Length Extension feature from Bluetooth 4.2Please let me know if there are any issues pulling. Thanks.
====================Signed-off-by: David S. Miller <davem@davemloft.net>
-
This results in an approximately 30% increase in throughput
when handling encapsulated bulk traffic.Signed-off-by: Joe Stringer
Signed-off-by: Jesse Gross
Signed-off-by: David S. Miller -
Currently the only tunnel protocol that supports GRO with encapsulated
Ethernet is VXLAN. This pulls out the Ethernet code into a proper layer
so that it can be used by other tunnel protocols such as GRE and Geneve.Signed-off-by: Jesse Gross
Signed-off-by: David S. Miller -
There is no need to set the clock speed in read/write which will be performed
unnecessarily for each mdio access. Init it during probe is enough.Also, the hardcoded clock value is not a proper way for all SoCs.
Signed-off-by: Shaohui Xie
Signed-off-by: David S. Miller -
Which is wrong and not used, so no extra space needed by
mdiobus_alloc_size(), use mdiobus_alloc() instead.Signed-off-by: Shaohui Xie
Signed-off-by: David S. Miller -
Since the reset is just clock setting, individual mdio reset is
not available.Signed-off-by: Shaohui Xie
Signed-off-by: David S. Miller
01 Jan, 2015
13 commits
-
Roger Chen says:
====================
support GMAC driver for RK3288Roger Chen (6):
patch1: add driver for Rockchip RK3288 SoCs integrated GMAC
patch2: define clock ID used for GMAC
patch3: modify CRU config for Rockchip RK3288 SoCs integrated GMAC
patch4: dts: rockchip: add gmac info for rk3288
patch5: dts: rockchip: enable gmac on RK3288 evb board
patch6: add document for Rockchip RK3288 GMACTested on rk3288 evb board:
Execute the following command to enable ethernet,
set local IP and ping a remote host.busybox ifconfig eth0 up
busybox ifconfig eth0 192.168.1.111
ping 192.168.1.1
====================Signed-off-by: David S. Miller
-
The document descripts how to add properties for GMAC in device tree.
change since v2:
1. remove power-gpio, reset-gpio, phyirq-gpio, pmu_regulator setting
2. add "snps,reset-gpio", "snps,reset-active-low;" "snps,reset-delays-us"Signed-off-by: Roger Chen
Signed-off-by: David S. Miller -
enable gmac in rk3288-evb-rk808.dts
changes since v2:
1. add fixed regulator for PHY
2. remove power-gpio, reset-gpio, phyirq-gpio, pmu_regulator setting
3. add "snps,reset-gpio", "snps,reset-active-low;" "snps,reset-delays-us"Signed-off-by: Roger Chen
Signed-off-by: David S. Miller -
add gmac info in rk3288.dtsi for GMAC driver
changes since v2:
1. add drive-strength in the pinctrl settingsSigned-off-by: Roger Chen
Signed-off-by: David S. Miller -
modify CRU config for GMAC driver
changes since v2:
1. remove SCLK_MAC_PLLSigned-off-by: Roger Chen
Signed-off-by: David S. Miller -
changes since v2:
1. remove SCLK_MAC_PLLSigned-off-by: Roger Chen
Signed-off-by: David S. Miller -
This driver is based on stmmac driver.
changes since v2:
- use tab instead of space for macros
- use HIWORD_UPDATE macro for GMAC_CLK_RX_DL_CFG and GMAC_CLK_TX_DL_CFG
- remove drive-strength setting in the driver and set it in the pinctrl settings
- use dev_err instead of pr_err
- remove clock names's macros, just use the real name of the clock
- use devm_clk_get() instead of clk_get()
- remove clk_set_parent(bsp_priv->clk_mac, bsp_priv->clk_mac_pll)
- remove gpio setting for LDO, just use regulator API
- remove phy reset using gpio in the glue layer, it has been handled in the stmmac driver
- remove handling phy interrupt (mii interrupt)changes since v1:
- use BIT() to set register
- combine two remap_write() operations into one for the same register
- use macros for register value setting
- remove grf fail check in rk_gmac_setup() and save all the check in set_rgmii_speed()
- remove .tx_coe=1 in rk_gmac_dataSigned-off-by: Roger Chen
Signed-off-by: David S. Miller -
Signed-off-by: David S. Miller
-
Signed-off-by: David S. Miller
-
Alexander Duyck says:
====================
fib_trie: Reduce time spent in fib_table_lookup by 35 to 75%These patches are meant to address several performance issues I have seen
in the fib_trie implementation, and fib_table_lookup specifically. With
these changes in place I have seen a reduction of up to 35 to 75% for the
total time spent in fib_table_lookup depending on the type of search being
performed.On a VM running in my Corei7-4930K system with a trie of maximum depth of 7
this resulted in a reduction of over 370ns per packet in the total time to
process packets received from an ixgbe interface and route them to a dummy
interface. This represents a failed lookup in the local trie followed by
a successful search in the main trie.Baseline Refactor
ixgbe->dummy routing 1.20Mpps 2.21Mpps
------------------------------------------------------------
processing time per packet 835ns 453ns
fib_table_lookup 50.1% 418ns 25.0% 113ns
check_leaf.isra.9 7.9% 66ns -- --
ixgbe_clean_rx_irq 5.3% 44ns 9.8% 44ns
ip_route_input_noref 2.9% 25ns 4.6% 21ns
pvclock_clocksource_read 2.6% 21ns 4.6% 21ns
ip_rcv 2.6% 22ns 4.0% 18nsIn the simple case of receiving a frame and dropping it before it can reach
the socket layer I saw a reduction of 40ns per packet. This represents a
trip through the local trie with the correct leaf found with no need for
any backtracing.Baseline Refactor
ixgbe->local receive 2.65Mpps 2.96Mpps
------------------------------------------------------------
processing time per packet 377ns 337ns
fib_table_lookup 25.1% 95ns 25.8% 87ns
ixgbe_clean_rx_irq 8.7% 33ns 9.0% 30ns
check_leaf.isra.9 7.2% 27ns -- --
ip_rcv 5.7% 21ns 6.5% 22nsThese changes have resulted in several functions being inlined such as
check_leaf and fib_find_node, but due to the code simplification the
overall size of the code has been reduced.text data bss dec hex filename
16932 376 16 17324 43ac net/ipv4/fib_trie.o - before
15259 376 8 15643 3d1b net/ipv4/fib_trie.o - afterChanges since RFC:
Replaced this_cpu_ptr with correct call to this_cpu_inc in patch 1
Changed test for leaf_info mismatch to (key ^ n->key) & li->mask_plen in patch 10
====================Signed-off-by: David S. Miller
-
This change adds a tracking value for the maximum suffix length of all
prefixes stored in any given tnode. With this value we can determine if we
need to backtrace or not based on if the suffix is greater than the pos
value.By doing this we can reduce the CPU overhead for lookups in the local table
as many of the prefixes there are 32b long and have a suffix length of 0
meaning we can immediately backtrace to the root node without needing to
test any of the nodes between it and where we ended up.Signed-off-by: Alexander Duyck
Signed-off-by: David S. Miller -
For some reason the compiler doesn't seem to understand that when we are in
a loop that runs from tnode_child_length - 1 to 0 we don't expect the value
of tn->bits to change. As such every call to tnode_get_child was rerunning
tnode_chile_length which ended up consuming quite a bit of space in the
resultant assembly code.I have gone though and verified that in all cases where tnode_get_child
is used we are either winding though a fixed loop from tnode_child_length -
1 to 0, or are in a fastpath case where we are verifying the value by
either checking for any remaining bits after shifting index by bits and
testing for leaf, or by using tnode_child_length.size net/ipv4/fib_trie.o
Before:
text data bss dec hex filename
15506 376 8 15890 3e12 net/ipv4/fib_trie.oAfter:
text data bss dec hex filename
14827 376 8 15211 3b6b net/ipv4/fib_trie.oSigned-off-by: Alexander Duyck
Signed-off-by: David S. Miller -
This change pulls the node_set_parent functionality out of put_child_reorg
and instead leaves that to the function to take care of as well. By doing
this we can fully construct the new cluster of tnodes and all of the
pointers out of it before we start routing pointers into it.I am suspecting this will likely fix some concurency issues though I don't
have a good test to show as such.Signed-off-by: Alexander Duyck
Signed-off-by: David S. Miller