> -----Original Message----- > From: Stefan Puiu [mailto:stefan.p...@gmail.com] > Sent: Friday, December 16, 2016 7:37 AM > To: dev@dpdk.org > Cc: Yong Wang <yongw...@vmware.com>; mac_le...@yahoo.com.hk; > Stefan Puiu <stefan.p...@gmail.com> > Subject: [PATCH v3] vmxnet3: fix Rx deadlock > > Our use case is that we have an app that needs to keep mbufs around > for a while. We've seen cases when calling vmxnet3_post_rx_bufs() from > vmxet3_recv_pkts(), it might not succeed to add any mbufs to any RX > descriptors (where it returns -err). Since there are no mbufs that the > virtual hardware can use, no packets will be received after this; the > driver won't refill the mbuf after this so it gets stuck in this > state. I call this a deadlock for lack of a better term - the virtual > HW waits for free mbufs, while the app waits for the hardware to > notify it for data (by flipping the generation bit on the used Rx > descriptors). Note that after this, the app can't recover. > > This fix is a rework of this patch by Marco Lee: > https://urldefense.proofpoint.com/v2/url?u=http- > 3A__dpdk.org_dev_patchwork_patch_6575_&d=DgIBAg&c=uilaK90D4TOVo > H58JNXRgQ&r=v4BBYIqiDq552fkYnKKFBFyqvMXOR3UXSdFO2plFD1s&m=zvM > IQvFmKNiehiMa4e9UerIU- > XZTcnlOqJZ0FXx0lsM&s=nZk5Zsz_6yrZOCrteBQ4RJbgLMhsPxW8DQkZmzGSo > yU&e= . I had to forward port > it, address review comments and also reverted the allocation > failure handling to the first version of the patch > (https://urldefense.proofpoint.com/v2/url?u=http- > 3A__dpdk.org_ml_archives_dev_2015- > 2DJuly_022079.html&d=DgIBAg&c=uilaK90D4TOVoH58JNXRgQ&r=v4BBYIqiD > q552fkYnKKFBFyqvMXOR3UXSdFO2plFD1s&m=zvMIQvFmKNiehiMa4e9UerI > U-XZTcnlOqJZ0FXx0lsM&s=dU2FsdH7OPHIUXeXIrv0yubdCb- > 4_koMclojVj_5ULo&e= ), since > that's the only approach that seems to work, and seems to be what > other drivers are doing (I checked ixgbe and em). Reusing the mbuf > that's getting passed to the application doesn't seem to make > sense, and it was causing weird issues in our app. Also, reusing > rxm without checking if it's NULL could cause the code to crash. > ---
Signoff info is missing from the commit description. Otherwise, looks good. Acked-by: Yong Wang <yongw...@vmware.com>