[dpdk-dev] [PATCH 1/4] lib: introduce IF Proxy library
Varghese, Vipin
vipin.varghese at intel.com
Wed Apr 8 05:04:38 CEST 2020
Hi Andrzej,
Thanks for the reply. Please find explanations for some of the queries
snipped
> >> +uint64_t rte_ifpx_events_available(void) {
> >> + /* All events are supported on Linux. */
> >> + return (1ULL << RTE_IFPX_NUM_EVENTS) - 1;
> > Should we give the available from the used count?
>
> I'm not sure I follow what you wanted to ask. I want to return bitmask with
> each bit being lit for every event type. I could go with or'ing of all (1ULL <<
> RTE_IFPX_MAC_CHANGE) | (1ULL << RTE_IFPX_MTU_CHANGE) ...
> but deemed that this would be simpler.
I assume the function `rte_ifpx_events_available` returns current available events. That is at time t0, if we have used 3 events the return of function will give back ` return ((1ULL << RTE_IFPX_NUM_EVENTS) - 1 - ifpx_consumed_events);`.
Snipped
> >
> >> +
> >> +void rte_ifpx_callbacks_unregister(void)
> >> +{
> >> + rte_spinlock_lock(&ifpx_lock);
> >> + memset(&ifpx_callbacks.cbs, 0, sizeof(ifpx_callbacks.cbs));
> > What would happen to pending events, are agreeing to drop all?
>
> ifpx_events_notify() is called under the same lock. So either someone calls this
> unregister and then notify will not find any callback or the other way. Note
> that notify drops the lock for the time of callback call (to allow modifications
> from the callback) but the pointer is first copied - so the behaviour would be as
> if the unregister was called later.
>
> I'm not sure I answered your question though - if not then please ask again
> with some more details.
Let us assume we have 3 callbacks to service for event_a namely cb-1, cb-2, and cb-3. So tail-list cb-1->cb-2->cb3, the user invoked unregister. What will happen to the 3 events? Should we finish the 3 callback handler and then remove.
snipped
> > Assuming all the events are executed `if and only if` the current process if
> Primary? If it is secondary for physical interface certain `rte_eth_api` will fail.
> Can we have check the events are processed for primary only?
>
> Yes that was my assumption however at the moment I'm using:
> - rte_eth_iterator_init/next/cleanup()
> - rte_eth_dev_info_get()
> - rte_eth_dev_get_mtu()
> - rte_eth_macaddr_get()
> - rte_eth_dev_mac_addr_add()
> - rte_dev_probe/remove()
>
> Is there a problem with these? If it is, then I'll think about adding check for
> secondary.
Based on my limited testing with PF and VF, certain functions works and other do not. In case of TUN PMD set/get mac_addr is not present.
More information about the dev
mailing list