<div dir="ltr"><div>Yes, even I was confused if it had been the tap_intr_handle_set function. <br></div><div><br></div><div>In general the tap_dev_start should not be invoked by the secondary and only primary should do it. I referred it to a couple of PMDs and that was the case. Please let me know if I am missing something in my understanding.</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jan 18, 2022 at 2:40 PM Ferruh Yigit <<a href="mailto:ferruh.yigit@intel.com">ferruh.yigit@intel.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 1/18/2022 4:39 AM, Kumara Parameshwaran wrote:<br>
>> static int<br>
>> tap_dev_start(struct rte_eth_dev *dev)<br>
>> {<br>
>> int err, i;<br>
>> <br>
>> + tap_mp_req_on_rxtx(dev);<br>
>> +<br>
> <br>
> As for as I understand your logic is primary sends the message to the secondar(y|ies),<br>
> so what happens first secondary is started?<br>
> In case of TAP PMD looks like there is an assumption where primary should be started first. There is an existing check below during the probe function call.<br>
> if (!rte_eal_primary_proc_alive(NULL)) {<br>
> TAP_LOG(ERR, "Primary process is missing");<br>
> return -1;<br>
> }<br>
> <br>
> What about secondary sends the message when they are started?<br>
> IMHO, since primary process setups the queue it should be sufficient for the primary processes to the send the message and secondary need not send anything.<br>
> <br>
> Also above functions is called by both primary and secondary, what happens when it is<br>
> called by secondary? And the logic is not clear, it can be good to add a process type<br>
> check to clarify.<br>
> Sure, these are for tap_intr_handle_set and tap_dev_start functions?<br>
<br>
I was thinking within the 'tap_dev_start()' function, for 'tap_mp_req_on_rxtx()' call.<br>
<br>
Not sure how 'tap_intr_handle_set()' is involved, am I missing something.<br>
</blockquote></div>