avf: enable promiscuous mode 64/19964/4
authorSteven Luong <sluong@cisco.com>
Wed, 5 Jun 2019 05:29:39 +0000 (22:29 -0700)
committerDamjan Marion <dmarion@me.com>
Wed, 5 Jun 2019 12:48:36 +0000 (12:48 +0000)
In order to receive multicast packets from the VF interface, promiscuos
mode must be enable.

Type: fix
Fixes: b4ff07a
Change-Id: I549bc37a05895d3355f2832c200e9262c95a27b5
Signed-off-by: Steven Luong <sluong@cisco.com>
src/plugins/avf/README.md
src/plugins/avf/device.c
src/plugins/avf/virtchnl.h

index d1a8416..0c7d555 100644 (file)
@@ -75,6 +75,13 @@ setup 0000:3b:00.0 00:11:22:33:44:00
 setup 0000:3b:00.1 00:11:22:33:44:01
 ```
 
+### Promisc mode
+In cases when interface is used in the L2 mode or promisc mode is needed for some other reason,
+trust needs to be set to "on" using the linux "ip link" utility.
+```
+ip link set dev <PF inteface name> vf <VF id> trust on
+```
+
 ### Interface Creation
 Interfaces can be dynamically created by using following CLI:
 ```
index 74b6ab4..8f75b82 100644 (file)
@@ -561,7 +561,7 @@ avf_config_promisc_mode (vlib_main_t * vm, avf_device_t * ad)
   virtchnl_promisc_info_t pi = { 0 };
 
   pi.vsi_id = ad->vsi_id;
-  pi.flags = 1;
+  pi.flags = FLAG_VF_UNICAST_PROMISC | FLAG_VF_MULTICAST_PROMISC;
   return avf_send_to_pf (vm, ad, VIRTCHNL_OP_CONFIG_PROMISCUOUS_MODE, &pi,
                         sizeof (virtchnl_promisc_info_t), 0, 0);
 }
index 1bdecbc..493384c 100644 (file)
 #define VIRTCHNL_VERSION_MAJOR 1
 #define VIRTCHNL_VERSION_MINOR 1
 
+#define foreach_avf_promisc_flags \
+  _(0, UNICAST_PROMISC, "unicast") \
+  _(1, MULTICAST_PROMISC, "multicast")
+
+enum
+{
+#define _(a, b, c) FLAG_VF_ ##b = (1 << a),
+  foreach_avf_promisc_flags
+#undef _
+};
 
 #define AVFINT_DYN_CTLN(x)  (0x00003800 + (0x4 * x))
 #define AVFINT_ICR0         0x00004800