numam-dpdk/lib
Pawel Wodkowski 46fb436836 bond: add mode 4
This patch set add support for dynamic link aggregation (mode 4) to the
librte_pmd_bond library. This mode provides auto negotiation/configuration
of peers and well as link status changes monitoring using out of band
LACP (link aggregation control protocol) messages. For further details of
LACP specification see the IEEE 802.3ad/802.1AX standards. It is also
described here
https://www.kernel.org/doc/Documentation/networking/bonding.txt.

In this implementation we have an array of mode 4 settings for each slave.
There is also assumption that for every port is one aggregator (it might
be unused if better is found).

Difference in this implementation vs Linux implementation:
- this implementation it is not directly based on state machines but current
  state is calculated from actor and partner states (and other things too).

Some implementation details:
- during rx burst every packet Is checked if this is LACP or marker packet.
  If it is LACP frame it is passed to mode 4 logic using slaves rx ring  and
  removed from rx buffer before it is returned
- in tx burst, packets from mode 4 (if any) are injected into each slave.
- there is a timer running in background to process/produce mode 4
  frames form rx/to tx functions.

Some requirements for this mode:
- for LACP mode to work rx and tx burst functions must be invoked
  at least in 100ms intervals
- provided buffer to rx burst should be at least 2x slave count size. This is
  not needed but might increase performance especially during initial
  handshake.

Signed-off-by: Pawel Wodkowski <pawelx.wodkowski@intel.com>
Acked-by: Declan Doherty <declan.doherty@intel.com>
2014-11-27 21:20:58 +01:00
..
librte_acl add prefix to cache line macros 2014-11-27 16:21:11 +01:00
librte_cfgfile eal: deprecate rte_snprintf 2014-06-27 02:31:24 +02:00
librte_cmdline cmdline: fix for bsd 2014-11-24 13:17:49 +01:00
librte_distributor add prefix to cache line macros 2014-11-27 16:21:11 +01:00
librte_eal add prefix to cache line macros 2014-11-27 16:21:11 +01:00
librte_ether bond: add mode 4 2014-11-27 21:20:58 +01:00
librte_hash add prefix to cache line macros 2014-11-27 16:21:11 +01:00
librte_ip_frag add prefix to cache line macros 2014-11-27 16:21:11 +01:00
librte_ivshmem eal: deprecate rte_snprintf 2014-06-27 02:31:24 +02:00
librte_kni kni: add build-time checks for mbuf mapping 2014-11-10 10:28:46 +01:00
librte_kvargs kvargs: fix build with gcc 4.5.1 2014-06-17 19:01:59 +02:00
librte_lpm add prefix to cache line macros 2014-11-27 16:21:11 +01:00
librte_malloc add prefix to cache line macros 2014-11-27 16:21:11 +01:00
librte_mbuf mbuf: sort TCP segmentation offload flag 2014-11-27 10:39:21 +01:00
librte_mempool mempool: avoid dump crash with null pointer 2014-11-27 17:30:20 +01:00
librte_meter remove trailing whitespaces 2014-06-11 00:29:34 +02:00
librte_net net: fix conflict with libc 2014-11-27 19:03:27 +01:00
librte_pipeline add prefix to cache line macros 2014-11-27 16:21:11 +01:00
librte_pmd_af_packet af_packet: add PMD for AF_PACKET-based virtual devices 2014-11-24 16:39:49 +01:00
librte_pmd_bond bond: add mode 4 2014-11-27 21:20:58 +01:00
librte_pmd_e1000 add prefix to cache line macros 2014-11-27 16:21:11 +01:00
librte_pmd_enic enic: fix vfio inclusion 2014-11-27 21:20:42 +01:00
librte_pmd_i40e add prefix to cache line macros 2014-11-27 16:21:11 +01:00
librte_pmd_ixgbe add prefix to cache line macros 2014-11-27 16:21:11 +01:00
librte_pmd_pcap pcap: fix double stop error 2014-10-09 20:02:35 +02:00
librte_pmd_ring ring: remove extra devices creation with --vdev option 2014-07-22 16:43:04 +02:00
librte_pmd_virtio add prefix to cache line macros 2014-11-27 16:21:11 +01:00
librte_pmd_vmxnet3 add prefix to cache line macros 2014-11-27 16:21:11 +01:00
librte_pmd_xenvirt add prefix to cache line macros 2014-11-27 16:21:11 +01:00
librte_port add prefix to cache line macros 2014-11-27 16:21:11 +01:00
librte_power power: integration of vm power management 2014-11-26 17:27:04 +01:00
librte_ring add prefix to cache line macros 2014-11-27 16:21:11 +01:00
librte_sched add prefix to cache line macros 2014-11-27 16:21:11 +01:00
librte_table add prefix to cache line macros 2014-11-27 16:21:11 +01:00
librte_timer fix unix permissions for source files 2014-08-28 17:04:01 +02:00
librte_vhost vhost: enable promiscuous and multicast 2014-11-12 00:10:23 +01:00
Makefile eal: no more bare metal environment 2014-11-27 13:09:51 +01:00