On 6/4/2018 1:09 PM, Michal Krawczyk wrote: > The ENA driver was updated with the new features and few fixes and minor > changes are introduced. > First of all, the communication layer which is delivered by vendor was > updated - the version in the HEAD is a bit outdated now. ENA is able to > communicate with the driver through Admin queue by using admin interrupts > instead of polling. > Admin interrupts are also used for handling AENQ events, which are used for > the following new features: > - LSC handlers > - watchdog and device rest > - monitoring the admin queue > - handling ENA notifications (getting hints from device) > For the watchdog and admin queue monitoring, the timers had to be used, so > the makefile was modified to do not cut out the librte_timer. > > From other fixes and changes: > - legacy LLQ was removed which is now deprecated API > - Rx out of order completion was added to enable cleaning up packets out > of order > - Tx mbufs are now linearized if they exceed supported number of segments > - pass information about maximum number of Tx and Rx descriptors > - the IO queue number is now taking into consideration maximum number of > sq and cq > - Tx id requested for sending is now being validated and the reset is > being triggered if it is invalid > - branch predictioning was added for better performance > - error checking and returned values were fixed > - macros for allocating memory in communication layer were fixed > - information about numa mode is now being passed to the NIC > > --- > v2: > * Rebased on top of dpdk-next-net > * Added link speed patch > * Added fix when allocating coherent memory in the PMD
Hi Michał, I am getting build error for ICC [1] and shared library [2], can you please check? [1] .../drivers/net/ena/base/ena_com.c(323): error #592: variable "flags" is used before its value is set ENA_SPINLOCK_LOCK(admin_queue->q_lock, flags); ^ .../drivers/net/ena/base/ena_com.c(534): error #3656: variable "flags" may be used before its value is set ENA_SPINLOCK_LOCK(admin_queue->q_lock, flags); ^ .../drivers/net/ena/base/ena_com.c(589): error #592: variable "flags" is used before its value is set ENA_SPINLOCK_LOCK(admin_queue->q_lock, flags); ^ .../drivers/net/ena/base/ena_com.c(634): error #592: variable "flags" is used before its value is set ENA_SPINLOCK_LOCK(mmio_read->lock, flags); ^ .../drivers/net/ena/base/ena_com.c(1297): error #592: variable "flags" is used before its value is set ENA_SPINLOCK_LOCK(admin_queue->q_lock, flags); ^ .../drivers/net/ena/base/ena_com.c(1341): error #592: variable "flags" is used before its value is set ENA_SPINLOCK_LOCK(admin_queue->q_lock, flags); ^ [2] ena_ethdev.o: In function `eth_ena_pci_probe': .../drivers/net/ena/ena_ethdev.c:(.text+0x6de): undefined reference to `rte_timer_subsystem_init' .../drivers/net/ena/ena_ethdev.c:(.text+0x6ea): undefined reference to `rte_timer_init' ena_ethdev.o: In function `eth_ena_pci_remove': .../drivers/net/ena/ena_ethdev.c:(.text+0x854): undefined reference to `rte_timer_stop_sync' ena_ethdev.o: In function `ena_start': .../drivers/net/ena/ena_ethdev.c:(.text+0x1ff6): undefined reference to `rte_timer_reset' ena_ethdev.o: In function `ena_stop': .../drivers/net/ena/ena_ethdev.c:(.text+0x21a1): undefined reference to `rte_timer_stop_sync' ena_ethdev.o: In function `ena_close': .../drivers/net/ena/ena_ethdev.c:(.text+0x21d8): undefined reference to `rte_timer_stop_sync'