diff options
author | Alexander Duyck <alexander.h.duyck@intel.com> | 2011-01-06 09:29:57 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-01-10 02:44:11 -0500 |
commit | 905e4a4163c4e807daf1f1f6b8f958e762a834a8 (patch) | |
tree | 4f2a71c7dc5255a1dfb9f4063b94a920a3ada135 /drivers/net/ixgbe/ixgbe.h | |
parent | 2d39d576fad0fd4bb79a0de26fca50a4be1ffdc1 (diff) |
ixgbe: cleanup flow director hash computation to improve performance
This change cleans up the layout of the flow director data, and the
algorithm used to calculate the hash resulting in a 35x / 3500% performance
increase versus the old flow director hash computation. The overall effect
is only a 1% increase in transactions per second though due to the fact
that only 1 packet in 20 are actually hashed upon.
TCP_RR before:
Socket Size Request Resp. Elapsed Trans.
Send Recv Size Size Time Rate
bytes Bytes bytes bytes secs. per sec
16384 87380 1 1 60.00 23059.27
16384 87380
TCP_RR after:
Socket Size Request Resp. Elapsed Trans.
Send Recv Size Size Time Rate
bytes Bytes bytes bytes secs. per sec
16384 87380 1 1 60.00 23239.98
16384 87380
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Stephen Ko <stephen.s.ko@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ixgbe/ixgbe.h')
-rw-r--r-- | drivers/net/ixgbe/ixgbe.h | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/drivers/net/ixgbe/ixgbe.h b/drivers/net/ixgbe/ixgbe.h index bdeaa9e06c0..2666e69d328 100644 --- a/drivers/net/ixgbe/ixgbe.h +++ b/drivers/net/ixgbe/ixgbe.h | |||
@@ -526,25 +526,25 @@ extern s32 ixgbe_reinit_fdir_tables_82599(struct ixgbe_hw *hw); | |||
526 | extern s32 ixgbe_init_fdir_signature_82599(struct ixgbe_hw *hw, u32 pballoc); | 526 | extern s32 ixgbe_init_fdir_signature_82599(struct ixgbe_hw *hw, u32 pballoc); |
527 | extern s32 ixgbe_init_fdir_perfect_82599(struct ixgbe_hw *hw, u32 pballoc); | 527 | extern s32 ixgbe_init_fdir_perfect_82599(struct ixgbe_hw *hw, u32 pballoc); |
528 | extern s32 ixgbe_fdir_add_signature_filter_82599(struct ixgbe_hw *hw, | 528 | extern s32 ixgbe_fdir_add_signature_filter_82599(struct ixgbe_hw *hw, |
529 | struct ixgbe_atr_input *input, | 529 | union ixgbe_atr_input *input, |
530 | u8 queue); | 530 | u8 queue); |
531 | extern s32 ixgbe_fdir_add_perfect_filter_82599(struct ixgbe_hw *hw, | 531 | extern s32 ixgbe_fdir_add_perfect_filter_82599(struct ixgbe_hw *hw, |
532 | struct ixgbe_atr_input *input, | 532 | union ixgbe_atr_input *input, |
533 | struct ixgbe_atr_input_masks *input_masks, | 533 | struct ixgbe_atr_input_masks *input_masks, |
534 | u16 soft_id, u8 queue); | 534 | u16 soft_id, u8 queue); |
535 | extern s32 ixgbe_atr_set_vlan_id_82599(struct ixgbe_atr_input *input, | 535 | extern s32 ixgbe_atr_set_vlan_id_82599(union ixgbe_atr_input *input, |
536 | u16 vlan_id); | 536 | u16 vlan_id); |
537 | extern s32 ixgbe_atr_set_src_ipv4_82599(struct ixgbe_atr_input *input, | 537 | extern s32 ixgbe_atr_set_src_ipv4_82599(union ixgbe_atr_input *input, |
538 | u32 src_addr); | 538 | u32 src_addr); |
539 | extern s32 ixgbe_atr_set_dst_ipv4_82599(struct ixgbe_atr_input *input, | 539 | extern s32 ixgbe_atr_set_dst_ipv4_82599(union ixgbe_atr_input *input, |
540 | u32 dst_addr); | 540 | u32 dst_addr); |
541 | extern s32 ixgbe_atr_set_src_port_82599(struct ixgbe_atr_input *input, | 541 | extern s32 ixgbe_atr_set_src_port_82599(union ixgbe_atr_input *input, |
542 | u16 src_port); | 542 | u16 src_port); |
543 | extern s32 ixgbe_atr_set_dst_port_82599(struct ixgbe_atr_input *input, | 543 | extern s32 ixgbe_atr_set_dst_port_82599(union ixgbe_atr_input *input, |
544 | u16 dst_port); | 544 | u16 dst_port); |
545 | extern s32 ixgbe_atr_set_flex_byte_82599(struct ixgbe_atr_input *input, | 545 | extern s32 ixgbe_atr_set_flex_byte_82599(union ixgbe_atr_input *input, |
546 | u16 flex_byte); | 546 | u16 flex_byte); |
547 | extern s32 ixgbe_atr_set_l4type_82599(struct ixgbe_atr_input *input, | 547 | extern s32 ixgbe_atr_set_l4type_82599(union ixgbe_atr_input *input, |
548 | u8 l4type); | 548 | u8 l4type); |
549 | extern void ixgbe_configure_rscctl(struct ixgbe_adapter *adapter, | 549 | extern void ixgbe_configure_rscctl(struct ixgbe_adapter *adapter, |
550 | struct ixgbe_ring *ring); | 550 | struct ixgbe_ring *ring); |