<div dir="ltr"><div dir="ltr">Mr. Hemminger,<br><br>Thank you once again for your help.<br><br>Now, I did see the one-liner DPDK puts in code which you reference:<br><br>struct rte_eth_thresh {<br> uint8_t pthresh; /**< Ring prefetch threshold. */<br> uint8_t hthresh; /**< Ring host threshold. */<br> uint8_t wthresh; /**< Ring writeback threshold. */<br>};<br><br>The problem for me is I don't know what "ring host threshold" or "ring writeback" means. <br><br>"Ring prefetch threshold" I think I understand. This refers to how mbufs are pending in the ring before it starts writing them onto the wire. This seems to have some connection to <span style="color:rgb(80,0,80)">tx_rs_thresh.</span> </div><div dir="ltr"><div><br></div></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Mar 17, 2022 at 12:48 PM Stephen Hemminger <<a href="mailto:stephen@networkplumber.org">stephen@networkplumber.org</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 Thu, 17 Mar 2022 12:05:33 -0400<br>
fwefew 4t4tg <<a href="mailto:7532yahoo@gmail.com" target="_blank">7532yahoo@gmail.com</a>> wrote:<br>
<br>
> DPDK provides but does not define (that I can see at least) these TXQ<br>
> config fields. What are these fields what do they do?<br>
> <br>
> <a href="https://doc.dpdk.org/api/structrte__eth__thresh.html" rel="noreferrer" target="_blank">https://doc.dpdk.org/api/structrte__eth__thresh.html</a><br>
> uint8_t pthresh<br>
> uint8_t hthresh<br>
> uint8_t wthresh<br>
<br>
These are low level details inherited from original Intel NIC's (ie ixgbe)<br>
they only apply to some NICs. They are used to control the ring threshold<br>
values relating to PCI.<br>
<br>
In rte_ethdev.h<br>
/**<br>
* A structure used to configure the ring threshold registers of an Rx/Tx<br>
* queue for an Ethernet port.<br>
*/<br>
struct rte_eth_thresh {<br>
uint8_t pthresh; /**< Ring prefetch threshold. */<br>
uint8_t hthresh; /**< Ring host threshold. */<br>
uint8_t wthresh; /**< Ring writeback threshold. */<br>
};<br>
<br>
<br>
> And here: What is the RS bit?<br>
> <a href="https://doc.dpdk.org/api/structrte__eth__txconf.html" rel="noreferrer" target="_blank">https://doc.dpdk.org/api/structrte__eth__txconf.html</a><br>
> uint16_t tx_rs_thresh.<br>
<br>
Ready to Send?<br>
<br>
> <br>
> And some what unrelated: What is a ``doorbell"? this is something I<br>
> continue to run into esp. in Mellanox NIC papers? Doorbell counts are<br>
> reported for AWS NICs at least with xstats api:<br>
> <br>
> tx_q0_doorbells: 18812<br>
> tx_q1_doorbells: 18861<br>
<br>
These are how many times driver needed to poke hardware to tell it<br>
that new packets are ready to send.<br>
</blockquote></div></div>