[dpdk-dev] How to debug packet sends to virtual functions

Mats Liljegren liljegren.mats2 at gmail.com
Tue Feb 4 11:08:49 CET 2014


This is my fourth mail in my desperate attempt to get DPDK running in
KVM and no comments so far, not even any "it works for me". Am I the
only one crazy enough to believe that this can be done?

Anyway, out of desperation I tried to get it running without having
ixgbe or ixgbevf kernel modules loaded in host nor guest. I followed
the instructions in the Programmer's Guide, chapter "Setting Up a KVM
Virtual Machine Monitor", using the PMD version of the instructions.

I get as far as being able to see my four virtual functions in the
guest using "lspci". But starting the DPDK application gives me the
following error:

PMD:    The MAC address is not valid.
        The most likely cause of this error is that the VM host
        has not assigned a valid MAC address to this VF device.
        Please consult the DPDK Release Notes (FAQ section) for
        a possible solution to this problem.

This may be true, but without any kernel modules loaded, how am I
supposed to change any MAC addresses? Can this be done from within
DPDK?

As a side-note, I did try to load ixgbevf in the guest, but it
produced no interfaces. There was no error messages in the syslog
though.

Is it possible to get X540 working in a guest or should I switch hardware?

Since the instructions assumes I know the command line to KVM to start
my guest (which I do not), I cannot followed them precisely. I use
virsh and XML file, and maybe I've misunderstood how to translate the
pci-assign parameter to XML code. I currently use a <hostdev> entry,
but I've also tried <interface type='hostdev'>. Neither has been
working for me so far, though the <interface> version got me as far as
being able to receive packets at least, but not transmitting.

Regards
Mats


On Mon, Feb 3, 2014 at 12:13 PM, Mats Liljegren
<liljegren.mats2 at gmail.com> wrote:
> Never mind, I was hit by the infamous MAC spoofing... I got it working
> on both the host and the guest using ixgbevf driver, so apparently the
> cables are correctly attached.
>
> Using DPDK is still no-go. It can receive packets, but when sending
> the packets the function returns success, but the driver reports
> nothing (i.e. no errors, no sent packets, no nothing, except for
> received packets of course).
>
> What could cause this behavior?
>
> Regards
> Mats
>
> On Fri, Jan 31, 2014 at 7:30 PM, Mats Liljegren
> <liljegren.mats2 at gmail.com> wrote:
>> I have a follow-up on this:
>>
>> ixgbe version 3.13.10-k
>> ixgbevf version 2.7.12-k
>>
>> (These are what was provided by Ubuntu 13.10)
>>
>> I tried the following sequence on the host, before starting the guest:
>> 1) sudo rmmod ixgbe
>> 2) sudo modprobe ixgbe max_vfs=2
>> 3) sudo ifconfig em1 up  # This is the physical function
>> 4) sudo ifconfig em1_0 192.168.2.2  # This is the virtual function
>> 5) ping 192.168.2.1
>>
>> I can see that the ping request reaches its target, and a reply is
>> sent back. But this reply is not received by the ping shell command.
>>
>> Why?
>>
>> Regards,
>> Mats
>>
>> On Wed, Jan 29, 2014 at 6:56 PM, Mats Liljegren
>> <liljegren.mats2 at gmail.com> wrote:
>>> I'm trying to get a modified version of the l2fwd example running, and
>>> have problems with packets being silently thrown away. I can receive
>>> packets, and my printf's indicates that the packets are being sent to
>>> the correct port, using correct MAC address as source address. And
>>> still, the packets are lost.
>>>
>>> Since the port is a virtual function, it seems like I cannot use
>>> tcpdump on it to see the network traffic. There is nothing coming out
>>> of the cable (activity light not flashing, the receiving end running
>>> tcpdump does not see any traffic).
>>>
>>> I'm using two X540 with two virtual functions each. The application
>>> runs in a KVM/Qemu environmen.
>>>
>>> Any suggestions how to debug this?
>>>
>>> Regards,
>>> Mats


More information about the dev mailing list