The first 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 Limit API's are leveraged to provide this support for TX descriptors.
The subsequent two patches remove superfluous code and members in TX completion handling function and TX buffer structure, respectively, and remove unused routines. Finally, four patches which ensure that device queue memory is cache-line aligned, resolving slowdowns observed in PCI traces, as well as optimize 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. v2 updates: 1) Removed three patches from the original series which were bug fixes and thus better suited for the net tree, suggested by Jakub Kicinski. 2) Fixed error handling when initializing device queues, suggested by Jakub Kicinski. 3) Fixed bug where queued entries were not flushed after a dropped frame, also suggested by Jakub. Two functions, ibmvnic_tx_scrq_flush and its helper ibmvnic_tx_scrq_clean_buffer, were introduced to ensure that queued frames are either submitted to firmware or, if that is not successful, freed as dropped and associated data structures are updated with the new device queue state. 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 (5): 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: Clean up TX code and TX buffer data structure ibmvnic: Remove send_subcrq function drivers/net/ethernet/ibm/ibmvnic.c | 398 ++++++++++++++++++----------- drivers/net/ethernet/ibm/ibmvnic.h | 27 +- 2 files changed, 256 insertions(+), 169 deletions(-) -- 2.26.2