46fb436836
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> |
||
---|---|---|
.. | ||
librte_acl | ||
librte_cfgfile | ||
librte_cmdline | ||
librte_distributor | ||
librte_eal | ||
librte_ether | ||
librte_hash | ||
librte_ip_frag | ||
librte_ivshmem | ||
librte_kni | ||
librte_kvargs | ||
librte_lpm | ||
librte_malloc | ||
librte_mbuf | ||
librte_mempool | ||
librte_meter | ||
librte_net | ||
librte_pipeline | ||
librte_pmd_af_packet | ||
librte_pmd_bond | ||
librte_pmd_e1000 | ||
librte_pmd_enic | ||
librte_pmd_i40e | ||
librte_pmd_ixgbe | ||
librte_pmd_pcap | ||
librte_pmd_ring | ||
librte_pmd_virtio | ||
librte_pmd_vmxnet3 | ||
librte_pmd_xenvirt | ||
librte_port | ||
librte_power | ||
librte_ring | ||
librte_sched | ||
librte_table | ||
librte_timer | ||
librte_vhost | ||
Makefile |