<div id="editor_version_1.41.6_WVOVYc24" style="word-break:break-word;"><div data-zone-id="0" data-line-index="0" data-line="true" style="margin-top: 4px; margin-bottom: 4px; line-height: 1.6;"><div style="font-size: 14px;">dpdk:dpdk-20.08</div></div><div data-zone-id="0" data-line-index="1" data-line="true" style="margin-top: 4px; margin-bottom: 4px; line-height: 1.6;"><div style="font-size: 14px;">Host: Dell  ubuntu-PowerEdge-R740 22.04</div></div><div data-zone-id="0" data-line-index="2" data-line="true" style="margin-top: 4px; margin-bottom: 4px; line-height: 1.6;"><div style="font-size: 14px;">virtual machine:arch linux kernel3.16.44</div></div><div data-zone-id="0" data-line-index="3" data-line="true" style="margin-top: 4px; margin-bottom: 4px; line-height: 1.6;"><div style="font-size: 14px;">Virtual machine driver: virtio-transitional(0.95)</div></div><div data-zone-id="0" data-line-index="4" data-line="true" style="margin-top: 4px; margin-bottom: 4px; line-height: 1.6;"><div style="font-size: 14px;">-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</div></div><div data-zone-id="0" data-line-index="5" data-line="true" style="margin-top: 4px; margin-bottom: 4px; line-height: 1.6;"><div style="font-size: 14px;">Problem Description:</div></div><div data-zone-id="0" data-line-index="6" data-line="true" style="margin-top: 4px; margin-bottom: 4px; line-height: 1.6;"><div style="font-size: 14px;">In virtio kernel driver,everything goes right.</div></div><div data-zone-id="0" data-line-index="7" data-line="true" style="margin-top: 4px; margin-bottom: 4px; line-height: 1.6;"><div style="font-size: 14px;">In dpdk,I get mac wrong on fist dpdk boot.when,dpdk reboot,mac is right.</div></div><div data-zone-id="0" data-line-index="8" data-line="true" style="margin-top: 4px; margin-bottom: 4px; line-height: 1.6;"><div style="font-size: 14px;">By debugging, in <span style="color: rgb(122, 53, 240);">legacy_read_dev_config</span> dpdk-virio read mac by wrong offset</div></div><div data-zone-id="0" data-line-index="9" data-line="true" style="margin-top: 4px; margin-bottom: 4px; line-height: 1.6;"><div style="font-size: 14px;"><br></div></div><div data-zone-id="0" data-line-index="10" data-line="true" style="margin-top: 4px; margin-bottom: 4px; line-height: 1.6;"><div style="font-size: 14px;">   <     rte_pci_ioport_read(VTPCI_IO(hw), dst, length,</div></div><div data-zone-id="0" data-line-index="11" data-line="true" style="margin-top: 4px; margin-bottom: 4px; line-height: 1.6;"><div style="font-size: 14px;">   <           VIRTIO_PCI_CONFIG(hw) + offset);</div></div><div data-zone-id="0" data-line-index="12" data-line="true" style="margin-top: 4px; margin-bottom: 4px; line-height: 1.6;"><div style="font-size: 14px;"><br></div></div><div data-zone-id="0" data-line-index="13" data-line="true" style="margin-top: 4px; margin-bottom: 4px; line-height: 1.6;"><div style="font-size: 14px;">  <   #define VIRTIO_PCI_CONFIG(hw) \</div></div><div data-zone-id="0" data-line-index="14" data-line="true" style="margin-top: 4px; margin-bottom: 4px; line-height: 1.6;"><div style="font-size: 14px;">  <            (((hw)->use_msix == VIRTIO_MSIX_ENABLED) ? 24 : 20)</div></div><div data-zone-id="0" data-line-index="15" data-line="true" style="margin-top: 4px; margin-bottom: 4px; line-height: 1.6;"><div style="font-size: 14px;"><br></div></div><div data-zone-id="0" data-line-index="16" data-line="true" style="margin-top: 4px; margin-bottom: 4px; line-height: 1.6;"><div style="font-size: 14px;">I found dpdk reads pci config with offset by <span style="color: rgb(122, 53, 240);">hw->use_msix. </span><span style="color: rgb(0, 0, 0);">In kernel dmesg, it shows that MSIX is enable.But,value of hw->misx in dpdk-virtio is uncertain.</span></div></div><div data-zone-id="0" data-line-index="17" data-line="true" style="margin-top: 4px; margin-bottom: 4px; line-height: 1.6;"><div style="font-size: 14px;"><span style="color: rgb(0, 0, 0);"><span style="background-color: rgb(255, 117, 112);">The above description causes the starting address of reading mac to be either 4 bits ahead or 4 bits behind.</span></span></div></div><div data-zone-id="0" data-line-index="18" data-line="true" style="margin-top: 4px; margin-bottom: 4px; line-height: 1.6;"><div style="font-size: 14px;"><span style="color: rgb(0, 0, 0);">However, after restarting dpdk once,dpdk no longer uses the legacy interface, but the modern interface.The mac got through the modern interface is always correct.</span></div></div><div data-zone-id="0" data-line-index="19" data-line="true" style="margin-top: 4px; margin-bottom: 4px; line-height: 1.6;"><div style="font-size: 14px;"><span style="color: rgb(0, 0, 0);">I don't know if this is a bug in dpdk,or </span><span style="color: rgb(0, 0, 0);">there is</span><span style="color: rgb(0, 0, 0);"> something wrong with my environment?</span></div></div><div data-zone-id="0" data-line-index="20" data-line="true" style="margin-top: 4px; margin-bottom: 4px; line-height: 1.6;"><div style="font-size: 14px;"><span style="color: rgb(0, 0, 0);"><br></span></div></div><div data-zone-id="0" data-line-index="21" data-line="true" style="margin-top: 4px; margin-bottom: 4px; line-height: 1.6;"><div style="font-size: 14px;"><span style="color: rgb(0, 0, 0);"><span style="background-color: rgb(255, 117, 112);"><br></span></span></div></div><div data-zone-id="0" data-line-index="22" data-line="true" style="margin-top: 4px; margin-bottom: 4px; line-height: 1.6;"><div style="font-size: 14px;"><br></div></div><div data-zone-id="0" data-line-index="23" data-line="true" style="margin-top: 4px; margin-bottom: 4px; line-height: 1.6;"><div style="font-size: 14px;"><br></div></div><div data-zone-id="0" data-line-index="24" data-line="true" style="margin-top: 4px; margin-bottom: 4px; line-height: 1.6;"><div style="font-size: 14px;"><br></div></div></div>