I solve my problem.
The issue is the KNI function
* It is called in the same lcore of receiving packets, and polls the request
* mbufs sent from kernel space. Then analyzes it and calls the specific
* actions for the specific requests. Finally constructs the response mbuf and
* puts it back to the resp_q.
static int kni_request_handler(struct rte_kni *kni)
This function is only called by
unsigned rte_kni_tx_burst(struct rte_kni *kni, struct rte_mbuf **mbufs, unsigned num)
So if there is no incoming PDU from the NIC to be sent to the Linux kernel, the function rte_kni_tx_burst is not called.
The KNI layer does not read the request PDU so does not get the if_up message so does not answer to the kernel module so the KNI kernel module replies to IP with a time out.
Call regularly rte_kni_tx_burst(kni, NULL, 0).