[dpdk-dev] [PATCH v2 00/26] net/ena: new features and fixes

Michał Krawczyk mk at semihalf.com
Wed Jun 6 13:46:38 CEST 2018


Hi Ferruh,

2018-06-05 18:42 GMT+02:00 Ferruh Yigit <ferruh.yigit at intel.com>:
>
> 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);
>         ^
>

That should be easy to fix - I prepared the patch but I want to send
it with second fix together.

>
>
> [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'
>

Strange that this happens, it should be fixed in the patch:
  mk: link librte_timer with --whole-archive
which seems to be no longer needed, because similar commit is already
applied (eb54ef42b02f94c4093556fdd6b51e2d7fd0df47). That should
resolve the issue with linking (at least for gcc it is helping) by
linking timer library with --whole-archive.
Could you, please, send me build logs so I could look closer if it is
properly built with ICC as I don't have access to it?

Thanks,
Michał


More information about the dev mailing list