First, memory barrier protection of device queue reads to ensure RX and TX buffer completions are not missed. The subsequent three patches utilize a hypervisor call allowing multiple TX and RX buffer replenishment descriptors to be sent in one operation, which significantly reduces hypervisor call overhead. The xmit_more and Byte Queue Limits API's are leveraged to provide this support for TX descriptors.
The next four patches fix TX completion error handling, remove superfluous code and members in TX completion handling function and TX buffer structure respectively, update ndo_start_xmit error handling and improve accuracy of statistics tracking, and remove unused routines. Finally, patches to ensure that device queue memory is cache-line aligned, resolving slowdowns observed in PCI traces, as well as optimizatons to the driver's NAPI polling function and to RX buffer replenishment are provided by Dwip Banerjee. This series provides significant performance improvements, allowing the driver to fully utilize 100Gb NIC's. Dwip N. Banerjee (4): ibmvnic: Ensure that device queue memory is cache-line aligned ibmvnic: Correctly re-enable interrupts in NAPI polling routine ibmvnic: Use netdev_alloc_skb instead of alloc_skb to replenish RX buffers ibmvnic: Do not replenish RX buffers after every polling loop Thomas Falcon (8): ibmvnic: Ensure that subCRQ entry reads are ordered ibmvnic: Introduce indirect subordinate Command Response Queue buffer ibmvnic: Introduce batched RX buffer descriptor transmission ibmvnic: Introduce xmit_more support using batched subCRQ hcalls ibmvnic: Fix TX completion error handling ibmvnic: Clean up TX code and TX buffer data structure ibmvnic: Clean up TX error handling and statistics tracking ibmvnic: Remove send_subcrq function drivers/net/ethernet/ibm/ibmvnic.c | 390 ++++++++++++++++------------- drivers/net/ethernet/ibm/ibmvnic.h | 30 +-- 2 files changed, 228 insertions(+), 192 deletions(-) -- 2.26.2