Whoops I guess hitting enter sent the email early.
The code looks roughly like such. The distance between the DD and EOP
checks and using packet contents is very short.
; rax points to the ring descriptor, thus rax+8 points to the status
.poll:
bt qword [rax + 8], 32 ; DD
jnc short .poll
bt qword [rax + 8], 33 ; EOP
jnc short .poll
mov rdi, qword [rax + 0] ; Get the pointer to the packet from the
descriptor
movzx rbp, word [rax + 8] ; Get the length of the packet
; Zero out the status
mov qword [rax + 8], 0
; Here is where I insert the mfence/sfence/sleep which fixes the problem
; From here I do UDP length validation on the packet, and the packet is not
; present yet, thus the UDP length is not updated.
------------------------------------------------------------------------------
BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT
Develop your own process in accordance with the BPMN 2 standard
Learn Process modeling best practices with Bonita BPM through live exercises
http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_
source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel® Ethernet, visit
http://communities.intel.com/community/wired