DPDK patches and discussions
 help / color / mirror / Atom feed
From: santosh <santosh.iitg@gmail.com>
To: Ivan Boule <ivan.boule@6wind.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] ixgbe : query regarding your code changes for VF mac add
Date: Wed, 20 Apr 2016 05:05:24 -0400	[thread overview]
Message-ID: <CADUNaniA3LxZedVNe0o9NzokJmBrUfXtZTYD-rJSFansKWdJfw@mail.gmail.com> (raw)
In-Reply-To: <CAOm6c7ppjBaCnTG7EZfGOdKnEe4MHAdvwFOPxCVbz-rh7enP5w@mail.gmail.com>

Hi Ivan,

Thanks for your response.

Let me explain you the issue that we are facing on our virtual router
in VMware environment.

1. We are using ixgbe driver , SRIOV enabled .
    root@localhost:~# lspci
      .... "Intel Corporation 82599 Ethernet Controller Virtual Function"

2.  "mx86-bgl-1-r1"  is our router under testing and  R2 is a standard router.

      mx86-bgl-1-r1 is connected to R2
      mx86-bgl-1-r1 (10.1.1.103)------------------>R2(10.1.1.101)

2. This time ping test passes

root@mx86-bgl-1-r1# show interfaces
ge-0/0/0 {
    unit 0 {
        family inet {
            address 10.1.1.103/24;
        }
    }
}

[edit]
root@mx86-bgl-1-r1#
root@mx86-bgl-1-r1# run ping 10.1.1.101
PING 10.1.1.101 (10.1.1.101): 56 data bytes
64 bytes from 10.1.1.101: icmp_seq=0 ttl=64 time=0.980 ms
64 bytes from 10.1.1.101: icmp_seq=1 ttl=64 time=1.433 ms


3.  Default MAC address of interface ge-0/0/0  is as shown below:

root@mx86-bgl-1-r1# run show interfaces ge-0/0/0 extensive | grep current
  Current address: 02:06:0a:0e:ff:f0, Hardware address: 02:06:0a:0e:ff:f0

[edit]
root@mx86-bgl-1-r1#


4.  Now I am changing MAC. Ping works this time also

root@mx86-bgl-1-r1# set interfaces ge-0/0/0 mac 02:06:0a:0a:ff:f0

[edit]
root@mx86-bgl-1-r1# commit
commit complete

[edit]
root@mx86-bgl-1-r1# run show interfaces ge-0/0/0 extensive | grep current
  Current address: 02:06:0a:0a:ff:f0, Hardware address: 02:06:0a:0e:ff:f0

[edit]
root@mx86-bgl-1-r1# show interfaces
ge-0/0/0 {
    mac 02:06:0a:0a:ff:f0;
    unit 0 {
        family inet {
            address 10.1.1.103/24;
        }
    }
}

[edit]
root@mx86-bgl-1-r1#
root@mx86-bgl-1-r1# run ping 10.1.1.101
PING 10.1.1.101 (10.1.1.101): 56 data bytes
64 bytes from 10.1.1.101: icmp_seq=0 ttl=64 time=1.338 ms
64 bytes from 10.1.1.101: icmp_seq=1 ttl=64 time=8.832 ms
64 bytes from 10.1.1.101: icmp_seq=2 ttl=64 time=1.292 ms


5.  I am deleting the above configured MAC.
     In this case newly configured MAC as shown above will be deleted
and Default MAC (02:06:0a:0e:ff:f0)
      will be applied.  Ping fails at this step.  "return statement
added by you is not allowing to configure default MAC.


[edit]
root@mx86-bgl-1-r1# delete interfaces ge-0/0/0 mac

[edit]
root@mx86-bgl-1-r1# commit
commit complete

[edit]
root@mx86-bgl-1-r1# show interfaces
ge-0/0/0 {
    unit 0 {
        family inet {
            address 10.1.1.103/24;
        }
    }
}

[edit]

root@mx86-bgl-1-r1# run show interfaces ge-0/0/0 extensive | grep
current     // Displays value from router's local database not from
NIC.
  Current address: 02:06:0a:0e:ff:f0, Hardware address: 02:06:0a:0e:ff:f0

[edit]
root@mx86-bgl-1-r1# run ping 10.1.1.101
PING 10.1.1.101 (10.1.1.101): 56 data bytes
^C
2 packets transmitted, 0 packets received, 100% packet loss

[edit]
root@mx86-bgl-1-r1#


7. LOGs:    (I have added a debug log just before the return statement
that you place)

Log o/p in failure case
....
Santosh ixgbevf_add_mac_addr returning
....

code changes:
-----------------------------
ixgbevf_add_mac_addr(....)  {
...
    if (memcmp(hw->mac.perm_addr, mac_addr, sizeof(struct ether_addr)) == 0) {
        PMD_DRV_LOG(DEBUG, "Existing MAC \n");
        printf("Santosh %s returning \n",__FUNCTION__);
        return;
    }


8.  If I remove the above "return" statement, build the driver, loaded
in router and repeat the steps-2 to steps-5 of MAC add and MAC delete
on our router then ping passes.

root@mx86-bgl-1-r1# run ping 10.1.1.101
PING 10.1.1.101 (10.1.1.101): 56 data bytes
64 bytes from 10.1.1.101: icmp_seq=0 ttl=64 time=2.356 ms
64 bytes from 10.1.1.101: icmp_seq=1 ttl=64 time=1.415 ms
64 bytes from 10.1.1.101: icmp_seq=2 ttl=64 time=1.226 ms
^C
--- 10.1.1.101 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 1.226/1.666/2.356/0.494 ms


9.  Please let me know whether is it  fine to remove that return
statement added by you in  "ixgbevf_add_mac_addr"  ?



Thanks & Regards,
Santosh

On Wed, Apr 20, 2016 at 3:31 AM, Ivan Boule <ivan.boule@6wind.com> wrote:
> Hi Santosh,
>
> I do not get exactly what you attempt to do on a VF.
> Are you first deleting the so-called permanent MAC address by a call to the
> function ixgbevf_remove_mac_addr() ? This operation is not allowed.
> Can you explain exactly the sequence of operations that are done, so that I
> can understand how the test (memcmp(hw->mac.perm_addr, mac_addr,
> sizeof(struct ether_addr)) == 0) in the function ixgbevf_add_mac_addr()
> prevents them to be successfully performed.
>
> Ivan
>
> PS : please, can you CC your emails to dev@dpdk.org
>
>
> 2016-04-19 17:01 GMT+02:00 santosh <santosh.iitg@gmail.com>:
>>
>> Hi Ivan,
>>
>> Your following code changes causing issue in Vmware environment.
>>
>> ----------------------------------- -------------------
>> ------------------------------
>> + /*
>> + * On a 82599 VF, adding again the same MAC addr is not an idempotent
>> + * operation. Trap this case to avoid exhausting the [very limited]
>> + * set of PF resources used to store VF MAC addresses.
>> + */
>> + if (memcmp(hw->mac.perm_addr, mac_addr, sizeof(struct ether_addr)) == 0)
>> + return;
>>   diag = ixgbevf_set_uc_addr_vf(hw, 2, mac_addr->addr_bytes);
>> --------------------------------------------------------------------
>> ------------- -------
>>
>>
>> Issue:
>> At CLI , we have provision to add /del MAC of an interface.
>> During MAC delete, existing MAC is deleted and default MAC is applied.
>> This default MAC is not being applied in VMware environment
>> successfully due to "return" statement
>> in your above code changes. As a result traffic is stopped completely.
>> If I remove above
>> "return" statement then traffic continues to flow after MAC delete.
>>
>> Please let me know your suggestion to handle this scenario .  If I
>> remove "return" what will be the consequences ?
>>
>> If removing "return" statement is not good idea then what are other
>> way to handle MAC delete scenario ?  we have only 1 VF per PF in our
>> setup as of now.
>>
>>
>> Thanks
>> Santosh
>
>
>
>
> --
> Ivan BOULE
> 6WIND
> Software Engineer
>
> Tel: +33 1 39 30 92 47
> Mob: + 33 6 77 25 26 38
> Fax: +33 1 39 30 92 11
> ivan.boule@6wind.com
> www.6wind.com
> Join the Multicore Packet Processing Forum:
> www.multicorepacketprocessing.com
>
> Ce courriel ainsi que toutes les pièces jointes, est uniquement destiné à
> son ou ses destinataires. Il contient des informations confidentielles qui
> sont la propriété de 6WIND. Toute révélation, distribution ou copie des
> informations qu'il contient est strictement interdite. Si vous avez reçu ce
> message par erreur, veuillez immédiatement le signaler à l'émetteur et
> détruire toutes les données reçues.
>
> This e-mail message, including any attachments, is for the sole use of the
> intended recipient(s) and contains information that is confidential and
> proprietary to 6WIND. All unauthorized review, use, disclosure or
> distribution is prohibited. If you are not the intended recipient, please
> contact the sender by reply e-mail and destroy all copies of the original
> message.
>

  reply	other threads:[~2016-04-20  9:05 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CADUNanjr64fOwx71acne4s3f8HDC5G7BjvaW2RLEAnGsLMcG-w@mail.gmail.com>
2016-04-20  7:31 ` Ivan Boule
2016-04-20  9:05   ` santosh [this message]
2016-04-21  5:55     ` santosh
2016-04-22  7:21       ` Ivan Boule
2016-04-25 13:35         ` santosh
2016-04-26  5:36           ` santosh
2016-04-26  9:12             ` Ivan Boule
2016-04-22  7:17     ` Ivan Boule

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CADUNaniA3LxZedVNe0o9NzokJmBrUfXtZTYD-rJSFansKWdJfw@mail.gmail.com \
    --to=santosh.iitg@gmail.com \
    --cc=dev@dpdk.org \
    --cc=ivan.boule@6wind.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).