On Tue, 26 Oct 2021 at 17:41, Ferruh Yigit <ferruh.yi...@intel.com> wrote:
> Hi Tudor, > > I have used testpmd, 'txonly' forwarding. Tx recovers after interface up, > but by adding some debug logs I can see 'poll()' returns with POLLOUT even > there is no space in the buffer. > > According the logic in the PMD, when 'poll()' returns success, it expects > to have some space in the Tx buffer. > > So I agree to add the check. > > Only have a question on the POLLERR, should we separate the POLLERR check > to cover ifdown case, what do you think about following logic: > > if (!TP_STATUS_AVAILABLE) { > if (poll() < 0) > break; > if (pfd.revents & POLLERR) > break; > } > > if (!TP_STATUS_AVAILABLE) > break; > > Hi Ferruh, Thanks for the suggestion. I was thinking of adding this check, and intuitively, it seems correct. I tried to do some further testing. I tested with the POLLERR check, and I don't see the issue anymore. However, if I remove the second if (!TP_STATUS_AVAILABLE), I seem to get bursts of 2048 packets followed by periods of not sending anything when toggling the interface link state. Without the second if(!TP_STATUS_AVAILABLE) statement, the issue seems to reproduce, regardless if I add the check for POLLERR or not. RxB=0 RxP=0 TxB=0 TxP=0 RxB=0 RxP=0 TxB=0 TxP=0 RxB=0 RxP=0 TxB=0 TxP=0 RxB=0 RxP=0 TxB=0 TxP=0 RxB=0 RxP=0 TxB=0 TxP=0 RxB=0 RxP=0 TxB=0 TxP=0 RxB=0 RxP=0 TxB=0 TxP=0 RxB=0 RxP=0 TxB=606208 TxP=2048 RxB=0 RxP=0 TxB=0 TxP=0 RxB=0 RxP=0 TxB=0 TxP=0 I will send an updated version of the patch. Thanks, Tudor