[ovs-dev] Obtenga la Certificacion Internacional PECB

2019-05-23 Thread RiskOff
( https://lnkd.in/fAueyue )
.
Si desea Certificar Internacionalmente en BCMS, únase al Seminario Taller 
de 5 días, incluido el examen PECB ISO 22301 Business Continuity Lead 
Implementer. El examen y la certificación internacional es ofrecido por la 
PECB y facilitado por RiskOff – PECB - Certified Trainers .

 

Durante el Seminario - Taller obtendrá un conocimiento profundo de las 
mejores prácticas utilizadas en el mundo para implementar, administrar y 
gestionar un BCMS basado en la ISO 22301 y ser capaz de proporcionar un 
marco que le permita a la organización continuar operando eficientemente 
durante eventos disruptivos y certificar en ISO.

 

El último día puede presentarse para el examen y solicitar una credencial 
internacional “PECB Certified ISO 22301 Lead Implementer". Con la obtención 
de la Certificación usted demostrará que tiene el conocimiento teórico - 
práctico y las capacidades profesionales necesarias para implementar y 
mantener y certificar un BCMS en una Organización.


.¿Por qué elegir RiskOff como entrenador?
.
¿Por qué la Certificación PECB?
¿Por qué elegir RiskOff como entrenador?

.
- Estar acreditado por el organismo de acreditación de mayor reputación y 
reconocimiento a nivel mundial.
- Obtener la mejor capacitación cualitativa en estándares internacionales.

- PECB certifica a los profesionales de Deloitte, KPMG, Ernst & Young, BDO, 
Grant Thornton, Price Waterhouse & Coopers, entre otros, en todo el mundo.

- Los profesionales con certificación PECB obtienen el prestigio y 
reconocimiento de los mercados nacionales y extranjeros.

.
- Muy práctico y de acuerdo con la ISO 22301.
- Dictado por Lic. Jacinto S. Gonzalez:

___- Cuenta con las certificaciones internacionales más altas de PECB en 
Risk Manager y Business Continuity.

___- Asistió a más de 70 empresas como asesor y consultor.

___- Entrenó a más de 1.000 profesionales en Argentina y Latinoamérica.

___ - Transmite sus experiencias y los casos reales de implementación en 
Argentina y Latinoamérica, junto a las mejores prácticas en el mundo.

.
 
10, 11, 12, 13, y 14 de Junio de 2019
de 10:00hs a 18:00hs  Sede: 25 de Mayo 267 Piso 4 Oficina 27, Ciudad 
Autónoma de Buenos Aires, República Argentina
     
- Los costos de examen, gestión y certificación están incluidos en el 
precio del Seminario - Taller.

- El manual del participante contiene más de 500 páginas de información y 
ejemplos prácticos.

- Se emitirá un certificado de asistencia a los participantes.

- Los participantes pueden volver a tomar un segundo examen dentro de los 
12 meses sin costo.
.
Mas información del Seminario Taller ( https://lnkd.in/fAueyue )
Formas de pago:
.


..
Contacto

i...@riskoff.com
Te: +54-11-4461-6644
www.riskoff.com ( http://www.riskoff.com/ ) - www.pecb.com 
( https://pecb.com/ )

 
Este es un e-mail legal y contiene informacion de servicios y productos que 
consideramos pueden ser de su interes.
De acuerdo con la nueva Ley argentina Nro. 26.032, la libre distribucion de 
este e-mail esta
autorizada por tratarse de propositos de informacion, sin embargo, si le 
hemos causado alguna molestia por el mismo, le rogamos acepte nuestras 
disculpas.

Si lo desea puede ser quitado de nuestra lista de correos solicitandolo a 
baj...@yopmail.com


 
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] Reparacion de autoelevadores

2019-05-23 Thread OCE ELEVADORES
Reparacion y comercializacion de respuestos para autoelevadores.

( https://bit.ly/2FpzRJ2 )

  OCE ELEVADORES es una empresa dedicada a la reparación y comercialización 
de REPUESTOS PARA AUTOELEVADORES NAFTA / GAS / DIESEL

  Con más de 20 años en el mercado cuenta con conocimientos mecánicos 
especializados y un taller ubicado a menos de 15 km de la Ciudad Autónoma 
de Buenos Aires.

( https://bit.ly/2FpzRJ2 )

  TODO LO QUE TE HAGA FALTA PARA TU AUTOELEVADOR
  - Reparacion de engranajes de todo tipo para cajas y diferenciales
  - Proveemos burros y alternadores nuevos para todas las marcas
  - Bujias de calentamiento para motores diesel
  - Vendemos los equipos de gas a garrafa
  - Reparacion de cilindros hidraulicos
  - Reparación de Bombas Hidráulicas y sistemas de banco de válvulas.
  - Convertidores, reparación. Cambio de Ruedas Libre y Turbinas.
  - Reparación de Cajas Automaticas de autoelevadores.
  - Reparación de Burros y Alternadores. Sistemas Electricos a Domicilio.
  - Sistemas de Frenos, reparación completa.
  - Reparación y repuestos de Puentes Traseros.

  CONSULTANOS POR REPARACIONES Y MANTENIMIENTOS DE LOS AUTOELEVADORES

PROMOCION!!

- cubiertas para autoelevador 700x12/ 650x10/ 600x9/ 500x8 inflables con 
camara y protector
- cubiertas macizas en todas las medidas.

  Provisión de Repuestos
  - Repuestos de Motores Nissan, Mitsubishi, Clark, Wauquesha, Mazda, 
Toyota, Hyundai, Heli y toda la línea de Importados.
  - Cubiertas de Autoelevador: inflables, macizas. Aros engomados
  - Alargues de Uñas de todas las medidas. Fundas normales y anti chispa
  - Rolos para Torres y Carros.
  - Llantas a medida por pedido para todas las máquinas.

( https://bit.ly/2FpzRJ2 )

(011)-44701629 

Belelli 366 | Lomas de Zamora - (1826) | Buenos Aires - Argentina

Correo electrónico
i...@oceautoelevadores.com.ar 
( mailto:i...@oceautoelevadores.com.ar?subject=Consulta )

VISITE NUESTRO SITIO WEB AQUI ( https://bit.ly/2FpzRJ2 )

.
 

 

Este es un e-mail legal y contiene informacion de servicios y productos que 
consideramos pueden ser de su interes.
De acuerdo con la nueva Ley argentina Nro. 26.032, la libre distribucion de 
este e-mail esta
autorizada por tratarse de propositos de informacion, sin embargo, si le 
hemos causado alguna molestia por el mismo, le rogamos acepte nuestras 
disculpas.

Si lo desea puede ser quitado de nuestra lista de correos solicitandolo a 
baj...@yopmail.com
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] Como pagar mucho menos en fijos y en celulares con la Net2phone

2019-05-23 Thread NET2phone
 

 
Como se gana en productividad,
en control de tareas por registro de llamadas online y
se ahorra 3, 4 ó 5 veces en facturas de fijos y celulares…

Fácil de usar. La Central Telefónica NET2PHONE UNLIMITED se usa igual que 
un teléfono.

Lo único que se necesita es una toma de electricidad a 220 y un cable de 
Internet para conectar cada interno que se provee en comodato desde tan 
solo $ 140 mensuales por mes (promedio por interno). Lo contrata 
directamente con IDT, líder mundial en comunicaciones, con presencia en 160 
países del mundo.  Se puede iniciar con la cantidad de internos que desee 
ya sea 4, 10, 50 o más internos. Listo para usar por cualquier persona en 
cualquier lugar del país.

Servicios a full: Llamadas en espera, Conexiones Programadas, Buzón de Voz, 
Transferencia de Llamadas, Identificación de Llamadas.  Recepcionista 
Virtual, Cola de llamadas, Música en Espera, Notificaciones para cada 
llamada. Y hasta graba todas las llamadas para mejorar LA CALIDAD TOTAL DE 
ATENCIÓN de la organización o la comunicación de tu familia.

Para comunicarse desde cualquier lugar, en cualquier momento. Se obtiene 
flexibilidad en el sistema telefónico y calidad de voz en las llamadas. 
Permite permanecer conectado en cada celular mientras no se está en la 
oficina.

- Permite dar mejor servicio a clientes. Si el titular de un interno se va 
de vacaciones y suena en su celular, no hace falta transferir nada.
- Usa el mismo sistema de telefonía para diferentes sucursales. Net2phone 
se lo organiza según su preferencia.
- Recibe todos los internos en comodato (4, 10 ó 50).
- Se paga abono mensual. Se enchufa y ...a llamar.
- El interno se usa en el celular sin costo de llamada.

Se tiene un número de telefonía fijo y allí se reciben llamadas en tu 
celular. Se gana en practicidad y control: graba llamadas, emite resumen de 
todas las llamadas realizadas, registra que número llamó y a cuál se 
llamó). 

Se resalta que se pueden realizar:

Llamadas ilimitadas y sin costo a fijos de los principales países: Estados 
Unidos, México, Canadá, España, Italia, Francia, Gran Bretaña, Alemania, 
Israel y a las ciudades de Buenos Aires, Río de Janeiro, San Pablo (Brasil) 
y Lima (Perú). Y absolutamente gratis llamadas ilimitadas a todos los 
celulares de Estados Unidos, Canada y México.  Y por tan solo ocho centavos 
el minuto a las principales ciudades de Argentina como Córdoba, Rosario, 
Mendoza, Mar del Plata, Paraná, Santa Fe, La Plata, Salta y muchas otras.

MAS INFORMACION CLICK ACA 
( 
mailto:centraltelefon...@derespuestadirecta.com.ar?subject=Quiero%20recibir%20PowerPoint-Demo
 )
Silvia Ibarra
WhatsApp : +54911-3628-8399.
En Central Telefónica Net2phone para todo el país: 011-4812-5791 
Mail: centraltelefon...@derespuestadirecta.com.ar 
( 
mailto:centraltelefon...@derespuestadirecta.com.ar?subject=Quiero%20recibir%20PowerPoint-Demo
 )

 
Este es un e-mail legal,  y contiene informacion de servicios y productos 
que consideramos pueden ser de su interes.
De acuerdo con la nueva Ley argentina Nro. 26.032, la libre distribucion de 
este e-mail esta
autorizada por tratarse de propositos de informacion, sin embargo, si le 
hemos causado alguna molestia por el mismo, le rogamos acepte nuestras 
disculpas.

Si lo desea puede ser quitado de nuestra lista de correos
solicitandolo a baj...@yopmail.com

 
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] PINTURA DE INTERIOR Y EXTERIOR Y TRABAJOS DE HERRERIA EN GRAL

2019-05-23 Thread Cristalino
( http://www.cristalinolimpieza.com.ar )
SERVICIO DE LIMPIEZA INTEGRAL
( http://www.cristalinolimpieza.com.ar )
.
Cristalino S.R.L., es una empresa con 4 años de trayectoria trabajando en 
todo lo que se relaciona con la limpieza integral.
Siempre nos enfocamos en entregar a las personas que nos contratan, un 
servicio completo y bien terminado, ya que es fundamental conservar nuestro 
prestigio en todo momento.

.

SERVICIOS A EMPRESAS

LIMPIEZA DE ALFOMBRAS & TAPIZADOS

LIMPIEZA DE CLINICAS, ESCUELAS E INSTITUCIONES

LIMPIEZA DE COCINAS INDUSTRIALES

 DECAPADO DE PISOS

LIMPIEZA Y MANTENIMIENTO DE EDIFICIOS

CORTE DE PASTO DE GRANDES EXTENSIONES EN B. PRIVADOS

PINTURA DE INTERIOR Y EXTERIOR Y TRABAJOS DE HERRERIA EN GRAL.

LIMPIEZA DE INTERIORES DE TRANSPORTES Y VEHICULOS PARTICULARES
 
CONSULTAS - CLICK AQUI ( mailto:i...@cristalinolimpieza.com.ar )
 
Mar del Plata, Buenos Aires 
Dirección: Pje 209 Bis 9255  C.P. 7600 
(0223) 155.709810 
i...@cristalinolimpieza.com.ar 
 
www.cristalinolimpieza.com.ar ( http://www.cristalinolimpieza.com.ar )
Este es un e-mail legal,  y contiene informacion de servicios y productos 
que consideramos pueden ser de su interes.
De acuerdo con la nueva Ley argentina Nro. 26.032, la libre distribucion de 
este e-mail esta
autorizada por tratarse de propositos de informacion, sin embargo, si le 
hemos causado alguna molestia por el mismo, le rogamos acepte nuestras 
disculpas.

Si lo desea puede ser quitado de nuestra lista de correos
solicitandolo a baj...@yopmail.com
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] Consultoria en Coaching y Cambio Organizacional

2019-05-23 Thread MV COACHING
.
¿Querés mejorar tus conversaciones?
Entonces no te podés perder este desayuno.

MVCoaching Solutions te invita a desayunar para que trabajemos juntos como 
mejorar nuestras conversaciones
Objetivo: Mejorar nuestras conversaciones, a través del uso de diferentes 
herramientas que brinda el Coaching Ontológico.

CONSULTAS - CLICK ACA ( mailto:mvi...@mvcoaching.net )
Fecha: Sábado 8 de de Junio 2019
Horario: 9: 30 a 11: 30 hs
Valor por participante: $400.-
Medios de pago: efectivo, transferencia, mercado pago
Lugar de realización: Alte Brown 686 4 Piso CABA

.
Tel: (011) 15 5122 2176
Email: mvi...@mvcoaching.net
.

.
www.mvcoaching.solutions ( http://www.mvcoaching.solutions )
Este es un e-mail legal,  y contiene informacion de servicios y productos 
que consideramos pueden ser de su interes.
De acuerdo con la nueva Ley argentina Nro. 26.032, la libre distribucion de 
este e-mail esta
autorizada por tratarse de propositos de informacion, sin embargo, si le 
hemos causado alguna molestia por el mismo, le rogamos acepte nuestras 
disculpas.

Si lo desea puede ser quitado de nuestra lista de correos
solicitandolo a baj...@yopmail.com
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] Alojamiento temporario en barrio Flores

2019-05-23 Thread Departamentos en Alquiler
Alojamiento temporario 
en barrio Flores, Capital Federal
.
.
Contamos con 6 departamentos de 1 hasta 4 personas
con servicios de:

- Sabanas y toallas
- Gimnasio
- Parrilla
- Solarium
- Cama d masajes
- Oxigeno.
- Camaras de Seguridad
- Servicio de traslado al aeropuerto
- Botiquin de primeros auxilios
- Se permiten animales

10% de descuento mencionando este boletin

Atendido por sus dueños.

MAS INFORMACION CLICK ACA ( mailto:saraquivi...@hotmail.com )
Horacio vidal
Whastapp 54 11 28988337 
( https://web.whatsapp.com/send?phone=5491128988337=Hola... )
saraquivi...@hotmail.com

 
( https://www.facebook.com/horacio.vidal.37 )
/horacio.vidal.37 ( https://www.facebook.com/horacio.vidal.37 )
 
 
 
Este es un e-mail legal,  y contiene informacion de servicios y productos 
que consideramos pueden ser de su interes.
De acuerdo con la nueva Ley argentina Nro. 26.032, la libre distribucion de 
este e-mail esta
autorizada por tratarse de propositos de informacion, sin embargo, si le 
hemos causado alguna molestia por el mismo, le rogamos acepte nuestras 
disculpas.

Si lo desea puede ser quitado de nuestra lista de correos
solicitandolo a baj...@yopmail.com
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] Te guio hacia la plenitud

2019-05-23 Thread Decodificar y Sanar
( http://www.decodificarysanar.com/ )
 
Hay que lograr entender y sentir la enfermedad. Todas las enfermedades 
tienen un sentido biológico cíclico y emocional. Debemos encontrar el 
estímulo exterior que provoca el síntoma para realizar el tratamiento 
adecuado.
Un evento no tiene un significado biológico por sí mismo, tiene que haber 
un observador y darle un significado, un sentido

 
TE GUIO HACIA LA PLENITUD
 
( http://www.decodificarysanar.com/ )  ¿QUIEN SOY?
Marcela E.
marce...@decodificarysanar.com

- Especialista en Decodificación Biológica
- Practitioner en el arte de la PNL
- Conferenciante en EL ARTE DE VIVIR
- Especialista en Técnicas de Relajación

( http://www.decodificarysanar.com/ )
 
MAS INFORMACION - CLICK AQUI ( http://www.decodificarysanar.com/ )
 
www.decodificarysanar.com ( http://www.decodificarysanar.com/ )
Este es un e-mail legal,  y contiene informacion de servicios y productos 
que consideramos pueden ser de su interes.
De acuerdo con la nueva Ley argentina Nro. 26.032, la libre distribucion de 
este e-mail esta
autorizada por tratarse de propositos de informacion, sin embargo, si le 
hemos causado alguna molestia por el mismo, le rogamos acepte nuestras 
disculpas.

Si lo desea puede ser quitado de nuestra lista de correos
solicitandolo a baj...@yopmail.com
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] Termotanques de Alta Recuperacion

2019-05-23 Thread Termotanque LOS ANDES
( https://losandesregistrada.com.ar/ )
( https://losandesregistrada.com.ar/ )
( https://losandesregistrada.com.ar/ )

CONSULTAS ( mailto:i...@termolosandes.com.ar )
(011) 4911-5210/4235

Enviar Mensaje de Whatsapp 
( https://web.whatsapp.com/send?phone=5491164796219=Hola )
( https://losandesregistrada.com.ar/ )
 
 
www.termolosandes.com.ar ( https://losandesregistrada.com.ar/ )
Este es un e-mail legal y contiene informacion de servicios y productos que 
consideramos pueden ser de su interes.
De acuerdo con la nueva Ley argentina Nro. 26.032, la libre distribucion de 
este e-mail esta
autorizada por tratarse de propositos de informacion, sin embargo, si le 
hemos causado alguna molestia por el mismo, le rogamos acepte nuestras 
disculpas.

Si lo desea puede ser quitado de nuestra lista de correos solicitandolo a 
baj...@yopmail.com
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] 回复: [ovs-discuss] An issue that the deleted flow tables in kernel based datapath couldn't be established again

2019-05-23 Thread pei Jikui
Ben,

Much thanks for your reply.
1) I know this command will be rarely used by customer.  For me, the reason why 
I used this command is trying to understand the full-cycle of packet traveling 
in OVS system.
   And I do not know if there are some cases for the customer in the real world 
to use this command.

3) a) Not for every packets to the userspace. Just for the packets generated 
the packet_miss upcall.
 b) The initial thinking
 i) for the case to delete all the flow tables, then cleanup all the 
ufid keys in userspace.
 ii) No much think for the case how to delete the according ufid for 
the deleting specific flow entries.

Thanks

Jikui


发送自 Outlook


发件人: Ben Pfaff 
发送时间: 2019年5月24日 0:57
收件人: pei Jikui
抄送: ovs-dev@openvswitch.org; ovs-disc...@openvswitch.org
主题: Re: [ovs-discuss] An issue that the deleted flow tables in kernel based 
datapath couldn't be established again

On Thu, May 23, 2019 at 11:57:05AM +, pei Jikui wrote:
> 1)I found a case in the netlink based datapth, that if we delete the 
> existing datapath flow tables via “ovs-dpctl del-flows”, the according 
> datpath flow tables could not be created again and then  all the consecutive 
> packets need to go through the user-space slow path.

OK.

One way to avoid this problem is to not run "ovs-dpctl del-flows".  Is
there a reason you want to run that command?

> 2)I also found the potential root cause.  It is because when we delete 
> the datapath flow tables, their according ufid keys stored in the userspace 
> vswitchd are not deleted accordingly.  So, when the coming packets’ 
> packet_missing upcall sent to vswitchd, they ufid key is still in the 
> UKEY_OPERATIONAL status so that the DPIF_FP_CREATE message will not be sent 
> to datapath anymore.

That does seem like a plausible root cause.

> 3)That will be causing the above case.  The possible fixinges are,
>
> a) Send the DPIF_FP_CREATE message to datapath regardless if the according 
> ufid key exists or not. (I have verified this fix).

Do you mean, send the message on every packet that comes to userspace?
This could have performance implications, but I don't know how much.

> b) More fine-graind fix is when we execute “ovs-dpctl del-flows **”, we also 
> should clean up the according ufid cach in vswitch.

How do you suggest that userspace should detect that the flows were
deleted?
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] Sistema de Calefaccion Inteligente

2019-05-23 Thread NT Ingenieria
( http://www.ntingenieria.com.ar/ )
Calefacción y Refrigeracion Central
Sistema de Calefacción Inteligente
Venta e Instalación de Equipos
Fabricacion de Conductos
Ventilación Mecánica
.
Climatización para pequeñas y grandes empresas

.
( http://www.ntingenieria.com.ar/ )
.
: ( http://www.ntingenieria.com.ar/ )

INSTALACIONES INDUSTRIALES. Nuestro equipo de ingenieros garantiza el éxito 
del proyecto.
SPLITS Y MULTI SPLITS. Para instalaciones de oficina y domiciliarias. Multi 
Splits con hasta ocho unidades internas por una externa.

CONDUCTOS. Fabricación - Diseño - Instalación - Conductos de chapa 
metálica, lana de vidrio Conductos flexibles.

.
SOLICITE ASESORAMIENTO ACA ( mailto:ntingenieriatermomecan...@gmail.com )
.

www.ntingenieria.com.ar ( http://www.ntingenieria.com.ar/ )
 
Este es un e-mail legal y contiene informacion de servicios y productos que 
consideramos pueden ser de su interes.
De acuerdo con la nueva Ley argentina Nro. 26.032, la libre distribucion de 
este e-mail esta
autorizada por tratarse de propositos de informacion, sin embargo, si le 
hemos causado alguna molestia por el mismo, le rogamos acepte nuestras 
disculpas.

Si lo desea puede ser quitado de nuestra lista de correos solicitandolo a 
baj...@yopmail.com
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] Aprovecha el Hot Sale en Sommier + Colchon

2019-05-23 Thread Tienda del Dormir - Suavestar Hot Sale
Aprovecha el Hot Sale en Tienda del Dormir
( https://www.tiendadeldormir.com.ar/ )













Presentando este correo dos almohadas de regalo

.
 
Para más informacion escribir a:
tiendadeldor...@gmail.com

IR AL SITIO WEB - CLICK ACA ( https://www.tiendadeldormir.com.ar/ )

.
.
TIENDA DEL DORMIR
Av. Belgrano 2900 - Balvanera
Tel 4932-3272
( https://www.tiendadeldormir.com.ar/ )
 
www.tiendadeldormir.com.ar ( https://www.tiendadeldormir.com.ar/ )

Este es un e-mail legal y contiene informacion de servicios y productos que 
consideramos pueden ser de su interes.
De acuerdo con la nueva Ley argentina Nro. 26.032, la libre distribucion de 
este e-mail esta
autorizada por tratarse de propositos de informacion, sin embargo, si le 
hemos causado alguna molestia por el mismo, le rogamos acepte nuestras 
disculpas.

Si lo desea puede ser quitado de nuestra lista de correos solicitandolo a 
baj...@yopmail.com
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] [PATCH v2] datapath: Fix build errors for 4.9.172+ kernels

2019-05-23 Thread Yifeng Sun
4.9.172+ kernel backported upstream patch 70b095c843266
("ipv6: remove dependency of nf_defrag_ipv6 on ipv6 module")
and this caused compilation errors of OVS kernel module.

This patch fixes it by checking and using new functions
introduced by the upstream patch.

Travis tests passed at
https://travis-ci.org/yifsun/ovs-travis/builds/536527230
with latest Linux kernel version.

In addition, this patch doesn't introduce failed tests for latest kernels
of Ubuntu (bionic, trusty, xenial), fedora, centos 73, rhel (74, 75, 76).

Reported-by: Ilya Maximets 
Signed-off-by: Yifeng Sun 
---
v1->v2: Fixed at bug that crashes certain kernels. Thanks YiHung!

 datapath/linux/compat/nf_conntrack_reasm.c | 23 ++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/datapath/linux/compat/nf_conntrack_reasm.c 
b/datapath/linux/compat/nf_conntrack_reasm.c
index 9d77d982712c..23904eef08d7 100644
--- a/datapath/linux/compat/nf_conntrack_reasm.c
+++ b/datapath/linux/compat/nf_conntrack_reasm.c
@@ -41,6 +41,7 @@
 #include 
 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -138,8 +139,12 @@ static void nf_ct_frag6_expire(unsigned long data)
 #ifdef HAVE_INET_FRAGS_RND
ip6_expire_frag_queue(net, fq, _frags);
 #else
+#ifdef HAVE_IPV6_FRAG_H
+   ip6frag_expire_frag_queue(net, fq);
+#else
ip6_expire_frag_queue(net, fq);
 #endif
+#endif
 }
 
 #ifdef HAVE_INET_FRAGS_RND
@@ -673,6 +678,16 @@ static struct pernet_operations nf_ct_net_ops = {
.exit = nf_ct_net_exit,
 };
 
+#ifdef HAVE_IPV6_FRAG_H
+static const struct rhashtable_params nfct_rhash_params = {
+   .head_offset= offsetof(struct inet_frag_queue, node),
+   .hashfn = ip6frag_key_hashfn,
+   .obj_hashfn = ip6frag_obj_hashfn,
+   .obj_cmpfn  = ip6frag_obj_cmpfn,
+   .automatic_shrinking= true,
+};
+#endif
+
 int rpl_nf_ct_frag6_init(void)
 {
int ret = 0;
@@ -683,10 +698,16 @@ int rpl_nf_ct_frag6_init(void)
 #ifdef HAVE_INET_FRAGS_RND
nf_frags.hashfn = nf_hashfn;
nf_frags.match = ip6_frag_match;
+   nf_frags.constructor = ip6_frag_init;
+#else
+#ifdef HAVE_IPV6_FRAG_H
+   nf_frags.rhash_params = nfct_rhash_params;
+   nf_frags.constructor = ip6frag_init;
 #else
nf_frags.rhash_params = ip6_rhash_params;
-#endif
nf_frags.constructor = ip6_frag_init;
+#endif
+#endif
nf_frags.destructor = NULL;
nf_frags.qsize = sizeof(struct frag_queue);
nf_frags.frag_expire = nf_ct_frag6_expire;
-- 
2.7.4

___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [PATCH] sflow, ovn: Typofix: trafic -> traffic

2019-05-23 Thread Ben Pfaff
On Fri, May 24, 2019 at 12:53:40AM +0200, Klemens Nanni wrote:
> Spotted http://docs.openvswitch.org/en/latest/howto/sflow/,
> grepping the tree found another instance in ovn.
> 
> Signed-off-by: Klemens Nanni 

Thanks!  Applied to master.
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [PATCH] sflow, ovn: Typofix: trafic -> traffic

2019-05-23 Thread Klemens Nanni
Spotted http://docs.openvswitch.org/en/latest/howto/sflow/,
grepping the tree found another instance in ovn.

Signed-off-by: Klemens Nanni 
---
 Documentation/howto/sflow.rst | 6 +++---
 ovn/northd/ovn-northd.8.xml   | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/Documentation/howto/sflow.rst b/Documentation/howto/sflow.rst
index ae7737faf..c6ab0764c 100644
--- a/Documentation/howto/sflow.rst
+++ b/Documentation/howto/sflow.rst
@@ -21,9 +21,9 @@
 
   Avoid deeper levels because they do not render well.
 
-
-Monitoring VM Trafic Using sFlow
-
+=
+Monitoring VM Traffic Using sFlow
+=
 
 This document describes how to use Open vSwitch is to monitor traffic sent
 between two VMs on the same host using an sFlow collector.
diff --git a/ovn/northd/ovn-northd.8.xml b/ovn/northd/ovn-northd.8.xml
index aab8f6974..e6417220f 100644
--- a/ovn/northd/ovn-northd.8.xml
+++ b/ovn/northd/ovn-northd.8.xml
@@ -341,7 +341,7 @@
   
 
   
-A priority-65535 flow that drops all trafic in the reply direction
+A priority-65535 flow that drops all traffic in the reply direction
 with ct_label.blocked set meaning that the connection
 should no longer be allowed due to a policy change.  Packets
 in the request direction are skipped here to let a newly created
-- 
2.21.0


___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] [PATCH] sflow, ovn: Typofix: trafic -> traffic

2019-05-23 Thread Klemens Nanni
Spotted http://docs.openvswitch.org/en/latest/howto/sflow/,
grepping the tree found another instance in ovn.
---
 Documentation/howto/sflow.rst | 6 +++---
 ovn/northd/ovn-northd.8.xml   | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/Documentation/howto/sflow.rst b/Documentation/howto/sflow.rst
index ae7737faf..c6ab0764c 100644
--- a/Documentation/howto/sflow.rst
+++ b/Documentation/howto/sflow.rst
@@ -21,9 +21,9 @@
 
   Avoid deeper levels because they do not render well.
 
-
-Monitoring VM Trafic Using sFlow
-
+=
+Monitoring VM Traffic Using sFlow
+=
 
 This document describes how to use Open vSwitch is to monitor traffic sent
 between two VMs on the same host using an sFlow collector.
diff --git a/ovn/northd/ovn-northd.8.xml b/ovn/northd/ovn-northd.8.xml
index aab8f6974..e6417220f 100644
--- a/ovn/northd/ovn-northd.8.xml
+++ b/ovn/northd/ovn-northd.8.xml
@@ -341,7 +341,7 @@
   
 
   
-A priority-65535 flow that drops all trafic in the reply direction
+A priority-65535 flow that drops all traffic in the reply direction
 with ct_label.blocked set meaning that the connection
 should no longer be allowed due to a policy change.  Packets
 in the request direction are skipped here to let a newly created
-- 
2.21.0


___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [PATCH] ovn-controller: Fix parsing of OVN tunnel IDs

2019-05-23 Thread Ben Pfaff
On Mon, May 13, 2019 at 01:30:59PM +0200, Dumitru Ceara wrote:
> Add tunnel-id creation and parsing functions in encaps.h.
> 
> Reported-at: https://bugzilla.redhat.com/1708131
> Reported-by: Haidong Li 
> Fixes: b520ca7 ("Support for multiple VTEP in OVN")
> Signed-off-by: Dumitru Ceara 

Please add a description of the problem that this fixes to the commit
message.  I know that the bug report probably describes it, but it's
best if the commit log makes sense by itself.

Thanks,

Ben.
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [PATCH] ovsdb-client.1: Fix typo.

2019-05-23 Thread Ben Pfaff
On Thu, May 23, 2019 at 02:10:08PM -0700, Justin Pettit wrote:
> Signed-off-by: Justin Pettit 

Acked-by: Ben Pfaff 
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] [PATCH] ovsdb-client.1: Fix typo.

2019-05-23 Thread Justin Pettit
Signed-off-by: Justin Pettit 
---
 ovsdb/ovsdb-client.1.in | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ovsdb/ovsdb-client.1.in b/ovsdb/ovsdb-client.1.in
index 284433bb36a4..ee329d2d7c2c 100644
--- a/ovsdb/ovsdb-client.1.in
+++ b/ovsdb/ovsdb-client.1.in
@@ -271,7 +271,7 @@ line.
 .IP
 \fBconditions\fR is a JSON array of  as defined in RFC 7047 5.1
 with the following change: A condition can be either a 3-element JSON array
-as deescribed in the RFC or a boolean value..
+as described in the RFC or a boolean value.
 .IP
 If \fB\-\-detach\fR is used with \fBmonitor\fR, \fBmonitor\-cond\fR or
 \fBmonitor\-cond\-since\fR, then \fBovsdb\-client\fR detaches after it has
-- 
2.17.1

___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [PATCH 3/3] ovn-macros: Break the OVN macros into their own file.

2019-05-23 Thread 0-day Robot
Bleep bloop.  Greetings Justin Pettit, I am a robot and I have tried out your 
patch.
Thanks for your contribution.

I encountered some error that I wasn't expecting.  See the details below.


git-am:
Failed to merge in the changes.
Patch failed at 0001 ovn-macros: Break the OVN macros into their own file.
The copy of the patch that failed is found in:
   
/var/lib/jenkins/jobs/upstream_build_from_pw/workspace/OVN/.git/rebase-apply/patch
When you have resolved this problem, run "git am --resolved".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".


Please check this out.  If you feel there has been an error, please email 
acon...@bytheb.org

Thanks,
0-day Robot
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [PATCH] ovn: Properly set the index for chassis lookup

2019-05-23 Thread Ben Pfaff
On Thu, May 23, 2019 at 01:11:46PM -0700, Han Zhou wrote:
> On Thu, May 9, 2019 at 1:09 AM Dumitru Ceara  wrote:
> >
> > The chassis_lookup_by_name function now calls
> > sbrec_chassis_index_set_name instead of sbrec_chassis_set_name. Due to
> > the use of the wrong API memory was leaked every time a chassis was
> > looked up by name. This was mostly visible when chassis lookups had to
> > be done continuously (e.g., when two chassis were misconfigured
> > with the same system-id).
> >
> > Reported-at: https://bugzilla.redhat.com/1698462
> > Reported-by: Alexander 
> > Signed-off-by: Dumitru Ceara 
> > ---
> >  ovn/lib/chassis-index.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/ovn/lib/chassis-index.c b/ovn/lib/chassis-index.c
> > index 34d4a31..423 100644
> > --- a/ovn/lib/chassis-index.c
> > +++ b/ovn/lib/chassis-index.c
> > @@ -30,7 +30,7 @@ chassis_lookup_by_name(struct ovsdb_idl_index
> *sbrec_chassis_by_name,
> >  {
> >  struct sbrec_chassis *target = sbrec_chassis_index_init_row(
> >  sbrec_chassis_by_name);
> > -sbrec_chassis_set_name(target, name);
> > +sbrec_chassis_index_set_name(target, name);
> >
> >  struct sbrec_chassis *retval = sbrec_chassis_index_find(
> >  sbrec_chassis_by_name, target);
> > --
> > 1.8.3.1
> >
> > ___
> > dev mailing list
> > d...@openvswitch.org
> > https://mail.openvswitch.org/mailman/listinfo/ovs-dev
> 
> Thanks Dumitru for fixing this. I see same wrong way of using index in the
> same file:
> 
> struct sbrec_ha_chassis_group *target =
> sbrec_ha_chassis_group_index_init_row(sbrec_ha_chassis_grp_by_name);
> sbrec_ha_chassis_group_set_name(target, name);
> 
> May it be fixed together?
> I did check all the other files under ovn, and it seems these are the only
> places with this problem.
> 
> Acked-by: Han Zhou 

I folded in the additional fix and applied this to master.  Thank you!

Here is the final version:

--8<--cut here-->8--

From: Dumitru Ceara 
Date: Thu, 9 May 2019 10:09:23 +0200
Subject: [PATCH] ovn: Properly set the index for chassis lookup

The chassis_lookup_by_name function now calls
sbrec_chassis_index_set_name instead of sbrec_chassis_set_name. Due to
the use of the wrong API memory was leaked every time a chassis was
looked up by name. This was mostly visible when chassis lookups had to
be done continuously (e.g., when two chassis were misconfigured
with the same system-id).

Acked-by: Han Zhou 
Reported-at: https://bugzilla.redhat.com/1698462
Reported-by: Alexander 
Signed-off-by: Dumitru Ceara 
Signed-off-by: Ben Pfaff 
---
 ovn/lib/chassis-index.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/ovn/lib/chassis-index.c b/ovn/lib/chassis-index.c
index 34d4a31eb339..10f70fb4a18f 100644
--- a/ovn/lib/chassis-index.c
+++ b/ovn/lib/chassis-index.c
@@ -30,7 +30,7 @@ chassis_lookup_by_name(struct ovsdb_idl_index 
*sbrec_chassis_by_name,
 {
 struct sbrec_chassis *target = sbrec_chassis_index_init_row(
 sbrec_chassis_by_name);
-sbrec_chassis_set_name(target, name);
+sbrec_chassis_index_set_name(target, name);
 
 struct sbrec_chassis *retval = sbrec_chassis_index_find(
 sbrec_chassis_by_name, target);
@@ -55,7 +55,7 @@ ha_chassis_group_lookup_by_name(
 {
 struct sbrec_ha_chassis_group *target =
 sbrec_ha_chassis_group_index_init_row(sbrec_ha_chassis_grp_by_name);
-sbrec_ha_chassis_group_set_name(target, name);
+sbrec_ha_chassis_group_index_set_name(target, name);
 
 struct sbrec_ha_chassis_group *retval =
 sbrec_ha_chassis_group_index_find(sbrec_ha_chassis_grp_by_name,
-- 
2.20.1

___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [PATCH] datapath: Fix build errors for 4.9.172+ kernels

2019-05-23 Thread Yifeng Sun
Thanks YiHung, I will check it out.
Yifeng

On Thu, May 23, 2019 at 1:55 PM Yi-Hung Wei  wrote:
>
> On Tue, May 21, 2019 at 11:07 AM Yifeng Sun  wrote:
> >
> > Forgot to put reported-by.
> >
> > Reported-by: Ilya Maximets 
> >
> >
> > On Mon, May 20, 2019 at 4:58 PM Yifeng Sun  wrote:
> > >
> > > 4.9.172+ kernel backported upstream patch 70b095c843266
> > > ("ipv6: remove dependency of nf_defrag_ipv6 on ipv6 module")
> > > and this caused compilation errors of OVS kernel module.
> > >
> > > This patch fixes it by checking and using new functions
> > > introduced by the upstream patch.
> > >
> > > Travis tests passed at
> > > https://travis-ci.org/yifsun/ovs-travis/builds/535047469
> > > with latest Linux kernel version.
> > >
> > > Signed-off-by: Yifeng Sun 
> > > ---
>
> Hi Yifeng,
>
> Thanks for the patch. It does resolve the kernel build issue on
> 4.9.172+ kernel. But it introduce some regression on this kmod system
> traffic test ("60: conntrack - IPv6 fragmentation"). The following is
> the stack trace of a kernel panic on my RHEL 7.4 VM with
> 3.10.0-693.11.6 kernel when running the test. I can also reproduce
> that on my RHEL 7.3, 7.5, and Ubuntu 16.04 vm with older kernel
> 4.4.0-76. Can you help to check on that?
>
> Thanks,
>
> -Yi-Hung
>
> [ 1205.692224] BUG: unable to handle kernel NULL pointer dereference
> at   (null)
> [ 1205.692475] IP: [<  (null)>]   (null)
> [ 1205.692625] PGD 80008ec2b067 PUD 8ec40067 PMD 0
> [ 1205.692848] Oops: 0010 [#1] SMP
> [ 1205.692996] Modules linked in: vport_vxlan(OE) vport_stt(OE)
> vport_lisp(OE) vport_geneve(OE) openvswitch(OE) tunnel6 nf_nat_ipv6
> nf_nat_ipv4 nf_nat_tftp nf_conntrack_tftp nf_nat_ftp nf_conntrack_ftp
> nf_nat nf_conntrack_ipv6 nf_defrag_ipv6 nf_conntrack_ipv4
> nf_defrag_ipv4 nf_conntrack_netlink nfnetlink veth nf_conntrack
> netconsole vmw_vsock_vmci_transport vsock snd_seq_midi
> snd_seq_midi_event iosf_mbi crc32_pclmul ghash_clmulni_intel ppdev
> aesni_intel lrw gf128mul glue_helper ablk_helper cryptd vmw_balloon
> snd_ens1371 pcspkr joydev snd_rawmidi snd_ac97_codec ac97_bus snd_seq
> btusb btrtl btbcm btintel snd_seq_device bluetooth snd_pcm uvcvideo
> videobuf2_vmalloc videobuf2_memops videobuf2_core snd_timer videodev
> snd sg soundcore nfit vmw_vmci rfkill libnvdimm i2c_piix4 shpchp
> parport_pc parport ip_tables xfs libcrc32c sr_mod cdrom ata_generic
> pata_acpi vmwgfx sd_mod crc_t10dif crct10dif_generic drm_kms_helper
> syscopyarea crct10dif_pclmul crct10dif_common sysfillrect crc32c_intel
> sysimgblt fb_sys_fops ttm ahci libahci drm serio_raw ata_piix mptspi
> libata scsi_transport_spi e1000 mptscsih mptbase i2c_core dm_mirror
> dm_region_hash dm_log dm_mod [last unloaded: nf_defrag_ipv4]
> [ 1205.698388] CPU: 0 PID: 24995 Comm: handler1 Tainted: G
> OE     3.10.0-693.11.6.el7.x86_64 #1
> [ 1205.698553] Hardware name: VMware, Inc. VMware Virtual
> Platform/440BX Desktop Reference Platform, BIOS 6.00 05/19/2017
> [ 1205.698754] task: 88013694eeb0 ti: 880092b9 task.ti:
> 880092b9
> [ 1205.69] RIP: 0010:[<>]  [<  (null)>]
>(null)
> [ 1205.699179] RSP: 0018:880092b93628  EFLAGS: 00010286
> [ 1205.703437] RAX: 880092885100 RBX: c06aeb40 RCX: 
> 
> [ 1205.707960] RDX:  RSI: 880092b936a8 RDI: 
> 880092885100
> [ 1205.712422] RBP: 880092b93678 R08: 0001b980 R09: 
> 
> [ 1205.716603] R10: 880092885100 R11: 26dc0df7 R12: 
> 880092a4f500
> [ 1205.720941] R13: c06b2b40 R14: c06af3a8 R15: 
> 880092885100
> [ 1205.725137] FS:  7efc826f4700() GS:88013960()
> knlGS:
> [ 1205.729200] CS:  0010 DS:  ES:  CR0: 80050033
> [ 1205.734162] CR2:  CR3: 928bc000 CR4: 
> 001607f0
> [ 1205.738677] DR0:  DR1:  DR2: 
> 
> [ 1205.744574] DR3:  DR6: 0ff0 DR7: 
> 0400
> [ 1205.749340] Call Trace:
> [ 1205.753257]  [] ? inet_frag_find+0x101/0x2f0
> [ 1205.757449]  []
> rpl_nf_ct_frag6_gather+0x2e1/0xd30 [openvswitch]
> [ 1205.761476]  [] ovs_ct_execute+0x3a2/0xa10 [openvswitch]
> [ 1205.765509]  [] ? __add_action+0x71/0x80 [openvswitch]
> [ 1205.769486]  [] ? ovs_nla_add_action+0x12/0x30
> [openvswitch]
> [ 1205.773421]  [] ? ovs_ct_copy_action+0x7fe/0xb80
> [openvswitch]
> [ 1205.777285]  [] do_execute_actions+0x862/0xcb0
> [openvswitch]
> [ 1205.781506]  [] ? reserve_sfa_size+0x34/0x130 
> [openvswitch]
> [ 1205.785716]  [] ?
> __ovs_nla_copy_actions+0x188/0xaa0 [openvswitch]
> [ 1205.789952]  [] ? __alloc_skb+0x8d/0x2d0
> [ 1205.794109]  [] ? skb_tx_error+0x31/0x50
> [ 1205.799056]  [] ? __alloc_skb+0x5d/0x2d0
> [ 1205.803200]  [] ? __kmalloc+0x55/0x230
> [ 1205.807333]  [] ?
> nla_alloc_flow_actions+0x23/0x70 [openvswitch]
> [ 1205.811574]  [] ovs_execute_actions+0x4c/0x140
> 

Re: [ovs-dev] [PATCH] datapath: Fix build errors for 4.9.172+ kernels

2019-05-23 Thread Yi-Hung Wei
On Tue, May 21, 2019 at 11:07 AM Yifeng Sun  wrote:
>
> Forgot to put reported-by.
>
> Reported-by: Ilya Maximets 
>
>
> On Mon, May 20, 2019 at 4:58 PM Yifeng Sun  wrote:
> >
> > 4.9.172+ kernel backported upstream patch 70b095c843266
> > ("ipv6: remove dependency of nf_defrag_ipv6 on ipv6 module")
> > and this caused compilation errors of OVS kernel module.
> >
> > This patch fixes it by checking and using new functions
> > introduced by the upstream patch.
> >
> > Travis tests passed at
> > https://travis-ci.org/yifsun/ovs-travis/builds/535047469
> > with latest Linux kernel version.
> >
> > Signed-off-by: Yifeng Sun 
> > ---

Hi Yifeng,

Thanks for the patch. It does resolve the kernel build issue on
4.9.172+ kernel. But it introduce some regression on this kmod system
traffic test ("60: conntrack - IPv6 fragmentation"). The following is
the stack trace of a kernel panic on my RHEL 7.4 VM with
3.10.0-693.11.6 kernel when running the test. I can also reproduce
that on my RHEL 7.3, 7.5, and Ubuntu 16.04 vm with older kernel
4.4.0-76. Can you help to check on that?

Thanks,

-Yi-Hung

[ 1205.692224] BUG: unable to handle kernel NULL pointer dereference
at   (null)
[ 1205.692475] IP: [<  (null)>]   (null)
[ 1205.692625] PGD 80008ec2b067 PUD 8ec40067 PMD 0
[ 1205.692848] Oops: 0010 [#1] SMP
[ 1205.692996] Modules linked in: vport_vxlan(OE) vport_stt(OE)
vport_lisp(OE) vport_geneve(OE) openvswitch(OE) tunnel6 nf_nat_ipv6
nf_nat_ipv4 nf_nat_tftp nf_conntrack_tftp nf_nat_ftp nf_conntrack_ftp
nf_nat nf_conntrack_ipv6 nf_defrag_ipv6 nf_conntrack_ipv4
nf_defrag_ipv4 nf_conntrack_netlink nfnetlink veth nf_conntrack
netconsole vmw_vsock_vmci_transport vsock snd_seq_midi
snd_seq_midi_event iosf_mbi crc32_pclmul ghash_clmulni_intel ppdev
aesni_intel lrw gf128mul glue_helper ablk_helper cryptd vmw_balloon
snd_ens1371 pcspkr joydev snd_rawmidi snd_ac97_codec ac97_bus snd_seq
btusb btrtl btbcm btintel snd_seq_device bluetooth snd_pcm uvcvideo
videobuf2_vmalloc videobuf2_memops videobuf2_core snd_timer videodev
snd sg soundcore nfit vmw_vmci rfkill libnvdimm i2c_piix4 shpchp
parport_pc parport ip_tables xfs libcrc32c sr_mod cdrom ata_generic
pata_acpi vmwgfx sd_mod crc_t10dif crct10dif_generic drm_kms_helper
syscopyarea crct10dif_pclmul crct10dif_common sysfillrect crc32c_intel
sysimgblt fb_sys_fops ttm ahci libahci drm serio_raw ata_piix mptspi
libata scsi_transport_spi e1000 mptscsih mptbase i2c_core dm_mirror
dm_region_hash dm_log dm_mod [last unloaded: nf_defrag_ipv4]
[ 1205.698388] CPU: 0 PID: 24995 Comm: handler1 Tainted: G
OE     3.10.0-693.11.6.el7.x86_64 #1
[ 1205.698553] Hardware name: VMware, Inc. VMware Virtual
Platform/440BX Desktop Reference Platform, BIOS 6.00 05/19/2017
[ 1205.698754] task: 88013694eeb0 ti: 880092b9 task.ti:
880092b9
[ 1205.69] RIP: 0010:[<>]  [<  (null)>]
   (null)
[ 1205.699179] RSP: 0018:880092b93628  EFLAGS: 00010286
[ 1205.703437] RAX: 880092885100 RBX: c06aeb40 RCX: 
[ 1205.707960] RDX:  RSI: 880092b936a8 RDI: 880092885100
[ 1205.712422] RBP: 880092b93678 R08: 0001b980 R09: 
[ 1205.716603] R10: 880092885100 R11: 26dc0df7 R12: 880092a4f500
[ 1205.720941] R13: c06b2b40 R14: c06af3a8 R15: 880092885100
[ 1205.725137] FS:  7efc826f4700() GS:88013960()
knlGS:
[ 1205.729200] CS:  0010 DS:  ES:  CR0: 80050033
[ 1205.734162] CR2:  CR3: 928bc000 CR4: 001607f0
[ 1205.738677] DR0:  DR1:  DR2: 
[ 1205.744574] DR3:  DR6: 0ff0 DR7: 0400
[ 1205.749340] Call Trace:
[ 1205.753257]  [] ? inet_frag_find+0x101/0x2f0
[ 1205.757449]  []
rpl_nf_ct_frag6_gather+0x2e1/0xd30 [openvswitch]
[ 1205.761476]  [] ovs_ct_execute+0x3a2/0xa10 [openvswitch]
[ 1205.765509]  [] ? __add_action+0x71/0x80 [openvswitch]
[ 1205.769486]  [] ? ovs_nla_add_action+0x12/0x30
[openvswitch]
[ 1205.773421]  [] ? ovs_ct_copy_action+0x7fe/0xb80
[openvswitch]
[ 1205.777285]  [] do_execute_actions+0x862/0xcb0
[openvswitch]
[ 1205.781506]  [] ? reserve_sfa_size+0x34/0x130 [openvswitch]
[ 1205.785716]  [] ?
__ovs_nla_copy_actions+0x188/0xaa0 [openvswitch]
[ 1205.789952]  [] ? __alloc_skb+0x8d/0x2d0
[ 1205.794109]  [] ? skb_tx_error+0x31/0x50
[ 1205.799056]  [] ? __alloc_skb+0x5d/0x2d0
[ 1205.803200]  [] ? __kmalloc+0x55/0x230
[ 1205.807333]  [] ?
nla_alloc_flow_actions+0x23/0x70 [openvswitch]
[ 1205.811574]  [] ovs_execute_actions+0x4c/0x140
[openvswitch]
[ 1205.815642]  []
ovs_packet_cmd_execute+0x2cb/0x300 [openvswitch]
[ 1205.819749]  [] genl_family_rcv_msg+0x20a/0x430
[ 1205.823684]  [] ? genl_family_rcv_msg+0x430/0x430
[ 1205.827724]  [] genl_rcv_msg+0x91/0xd0
[ 1205.831652]  [] netlink_rcv_skb+0xa9/0xc0
[ 1205.835506]  [] genl_rcv+0x28/0x40
[ 1205.839493]  

Re: [ovs-dev] [PATCH] ovn-controller: Fix parsing of OVN tunnel IDs

2019-05-23 Thread venugopal iyer via dev
 

On Wednesday, May 22, 2019, 1:05:30 AM PDT, Dumitru Ceara 
 wrote:  
 
 On Thu, May 16, 2019 at 10:59 PM venugopal iyer  wrote:
>
> Hi, Dumitru:
>
> On Thursday, May 16, 2019, 2:13:41 AM CDT, Dumitru Ceara  
> wrote:
>
>
> On Wed, May 15, 2019 at 10:30 PM venugopal iyer  wrote:
> >
> > Thanks for fixing this! a comment below:
> >
> > On Monday, May 13, 2019, 6:31:28 AM CDT, Dumitru Ceara  
> > wrote:
> >
> >
> > Add tunnel-id creation and parsing functions in encaps.h.
> >
> > Reported-at: https://bugzilla.redhat.com/1708131
> > Reported-by: Haidong Li 
> > Fixes: b520ca7 ("Support for multiple VTEP in OVN")
> > Signed-off-by: Dumitru Ceara 
> > ---
> > ovn/controller/bfd.c            | 31 ---
> > ovn/controller/encaps.c        | 87 
> > -
> > ovn/controller/encaps.h        |  6 +++
> > ovn/controller/ovn-controller.h |  7 
> > ovn/controller/physical.c      | 51 +---
> > ovn/controller/pinctrl.c        |  4 +-
> > 6 files changed, 130 insertions(+), 56 deletions(-)
> >
> > diff --git a/ovn/controller/bfd.c b/ovn/controller/bfd.c
> > index d016e27..b6aef04 100644
> > --- a/ovn/controller/bfd.c
> > +++ b/ovn/controller/bfd.c
> > @@ -15,6 +15,7 @@
> >
> > #include 
> > #include "bfd.h"
> > +#include "encaps.h"
> > #include "lport.h"
> > #include "ovn-controller.h"
> >
> > @@ -72,14 +73,16 @@ bfd_calculate_active_tunnels(const struct ovsrec_bridge 
> > *br_int,
> >                        const char *id = smap_get(_rec->external_ids,
> >                                                  "ovn-chassis-id");
> >                        if (id) {
> > -                            char *chassis_name;
> > -                            char *save_ptr = NULL;
> > -                            char *tokstr = xstrdup(id);
> > -                            chassis_name = strtok_r(tokstr, 
> > OVN_MVTEP_CHASSISID_DELIM, _ptr);
> > -                            if (chassis_name && 
> > !sset_contains(active_tunnels, chassis_name)) {
> > -                                sset_add(active_tunnels, chassis_name);
> > +                            char *chassis_name = NULL;
> > +
> > +                            if (encaps_tunnel_id_parse(id, _name,
> > +                                                      NULL)) {
> > +                                if (!sset_contains(active_tunnels,
> > +                                                  chassis_name)) {
> > +                                    sset_add(active_tunnels, chassis_name);
> > +                                }
> > +                                free(chassis_name);
> >                            }
> > -                            free(tokstr);
> >                        }
> >                    }
> >                }
> > @@ -193,17 +196,17 @@ bfd_run(const struct ovsrec_interface_table 
> > *interface_table,
> >        const char *tunnel_id = smap_get(_int->ports[k]->external_ids,
> >                                          "ovn-chassis-id");
> >        if (tunnel_id) {
> > -            char *chassis_name;
> > -            char *save_ptr = NULL;
> > -            char *tokstr = xstrdup(tunnel_id);
> > +            char *chassis_name = NULL;
> >            char *port_name = br_int->ports[k]->name;
> >
> >            sset_add(, port_name);
> > -            chassis_name = strtok_r(tokstr, OVN_MVTEP_CHASSISID_DELIM, 
> > _ptr);
> > -            if (chassis_name && sset_contains(_chassis, chassis_name)) 
> > {
> > -                sset_add(_ifaces, port_name);
> > +
> > +            if (encaps_tunnel_id_parse(tunnel_id, _name, NULL)) {
> > +                if (sset_contains(_chassis, chassis_name)) {
> > +                    sset_add(_ifaces, port_name);
> > +                }
> > +                free(chassis_name);
> >            }
> > -            free(tokstr);
> >        }
> >    }
> >
> > diff --git a/ovn/controller/encaps.c b/ovn/controller/encaps.c
> > index dcf7810..d467540 100644
> > --- a/ovn/controller/encaps.c
> > +++ b/ovn/controller/encaps.c
> > @@ -26,6 +26,13 @@
> >
> > VLOG_DEFINE_THIS_MODULE(encaps);
> >
> > +/*
> > + * Given there could be multiple tunnels with different IPs to the same
> > + * chassis we annotate the ovn-chassis-id with
> > + * OVN_MVTEP_CHASSISID_DELIM.
> > + */
> > +#define    OVN_MVTEP_CHASSISID_DELIM '@'
> > +
> > void
> > encaps_register_ovs_idl(struct ovsdb_idl *ovs_idl)
> > {
> > @@ -78,6 +85,83 @@ tunnel_create_name(struct tunnel_ctx *tc, const char 
> > *chassis_id)
> >    return NULL;
> > }
> >
> > +/*
> > + * Returns a tunnel-id of the form 'chassis_id'-delimiter-'encap_ip'.
> > + */
> > +char *
> > +encaps_tunnel_id_create(const char *chassis_id, const char *encap_ip)
> > +{
> > +    return xasprintf("%s%c%s", chassis_id, OVN_MVTEP_CHASSISID_DELIM,
> > +                    encap_ip);
> > +}
> > +
> > +/*
> > + * Parses a 'tunnel_id' of the form .
> > + * If the 'chassis_id' argument is not NULL the function will allocate 
> > memory
> > + * and 

Re: [ovs-dev] [PATCH 1/3] ovn.at: Clean up northd-backup in "ovn -- ipam" test.

2019-05-23 Thread Justin Pettit


> On May 23, 2019, at 1:31 PM, Ben Pfaff  wrote:
> 
> On Thu, May 23, 2019 at 01:07:35PM -0700, Justin Pettit wrote:
>> Signed-off-by: Justin Pettit 
> 
> I built this series and ran the tests.  They passed.
> 
> For all of these:
> Acked-by: Ben Pfaff 

Thanks.  I pushed these to master.

--Justin


___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [PATCH 1/3] ovn.at: Clean up northd-backup in "ovn -- ipam" test.

2019-05-23 Thread Ben Pfaff
On Thu, May 23, 2019 at 01:07:35PM -0700, Justin Pettit wrote:
> Signed-off-by: Justin Pettit 

I built this series and ran the tests.  They passed.

For all of these:
Acked-by: Ben Pfaff 
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [PATCH] ovn: Properly set the index for chassis lookup

2019-05-23 Thread Han Zhou
On Thu, May 9, 2019 at 1:09 AM Dumitru Ceara  wrote:
>
> The chassis_lookup_by_name function now calls
> sbrec_chassis_index_set_name instead of sbrec_chassis_set_name. Due to
> the use of the wrong API memory was leaked every time a chassis was
> looked up by name. This was mostly visible when chassis lookups had to
> be done continuously (e.g., when two chassis were misconfigured
> with the same system-id).
>
> Reported-at: https://bugzilla.redhat.com/1698462
> Reported-by: Alexander 
> Signed-off-by: Dumitru Ceara 
> ---
>  ovn/lib/chassis-index.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/ovn/lib/chassis-index.c b/ovn/lib/chassis-index.c
> index 34d4a31..423 100644
> --- a/ovn/lib/chassis-index.c
> +++ b/ovn/lib/chassis-index.c
> @@ -30,7 +30,7 @@ chassis_lookup_by_name(struct ovsdb_idl_index
*sbrec_chassis_by_name,
>  {
>  struct sbrec_chassis *target = sbrec_chassis_index_init_row(
>  sbrec_chassis_by_name);
> -sbrec_chassis_set_name(target, name);
> +sbrec_chassis_index_set_name(target, name);
>
>  struct sbrec_chassis *retval = sbrec_chassis_index_find(
>  sbrec_chassis_by_name, target);
> --
> 1.8.3.1
>
> ___
> dev mailing list
> d...@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Thanks Dumitru for fixing this. I see same wrong way of using index in the
same file:

struct sbrec_ha_chassis_group *target =
sbrec_ha_chassis_group_index_init_row(sbrec_ha_chassis_grp_by_name);
sbrec_ha_chassis_group_set_name(target, name);

May it be fixed together?
I did check all the other files under ovn, and it seems these are the only
places with this problem.

Acked-by: Han Zhou 
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] [PATCH 3/3] ovn-macros: Break the OVN macros into their own file.

2019-05-23 Thread Justin Pettit
Signed-off-by: Justin Pettit 
---
 tests/automake.mk   |   3 +-
 tests/ofproto-macros.at | 177 ---
 tests/ovn-macros.at | 180 
 tests/testsuite.at  |   1 +
 4 files changed, 183 insertions(+), 178 deletions(-)
 create mode 100644 tests/ovn-macros.at

diff --git a/tests/automake.mk b/tests/automake.mk
index ea16532dd2a0..bc906fb79b46 100644
--- a/tests/automake.mk
+++ b/tests/automake.mk
@@ -21,7 +21,8 @@ EXTRA_DIST += \
 COMMON_MACROS_AT = \
tests/ovsdb-macros.at \
tests/ovs-macros.at \
-   tests/ofproto-macros.at
+   tests/ofproto-macros.at \
+   tests/ovn-macros.at
 
 TESTSUITE_AT = \
tests/testsuite.at \
diff --git a/tests/ofproto-macros.at b/tests/ofproto-macros.at
index 2f33feabc954..3763fed329e9 100644
--- a/tests/ofproto-macros.at
+++ b/tests/ofproto-macros.at
@@ -113,183 +113,6 @@ as() {
 fi
 }
 
-# OVN_CLEANUP_VSWITCH(sim)
-#
-# Gracefully terminate vswitch daemons in the
-# specified sandbox.
-m4_define([OVN_CLEANUP_VSWITCH],[
-as $1
-OVS_APP_EXIT_AND_WAIT([ovs-vswitchd])
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-])
-
-# OVN_CLEANUP_SBOX(sbox)
-#
-# Gracefully terminate OVN daemons in the specified
-# sandbox instance. The sandbox name "vtep" is treated
-# as a special case, and is assumed to have ovn-controller-vtep
-# and ovs-vtep daemons running instead of ovn-controller.
-m4_define([OVN_CLEANUP_SBOX],[
-as $1
-if test "$1" = "vtep"; then
-OVS_APP_EXIT_AND_WAIT([ovn-controller-vtep])
-OVS_APP_EXIT_AND_WAIT([ovs-vtep])
-else
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
-fi
-OVN_CLEANUP_VSWITCH([$1])
-])
-
-# OVN_CLEANUP(sim [, sim ...])
-#
-# Gracefully terminate all OVN daemons, including those in the
-# specified sandbox instances.
-m4_define([OVN_CLEANUP],[
-m4_foreach([sbox], [$@], [
-OVN_CLEANUP_SBOX([sbox])
-])
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
-
-as northd-backup
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
-
-OVN_CLEANUP_VSWITCH([main])
-])
-
-# ovn_init_db DATABASE
-#
-# Creates and initializes the given DATABASE (one of "ovn-sb" or "ovn-nb"),
-# starts its ovsdb-server instance, and sets the appropriate environment
-# variable (OVN_SB_DB or OVN_NB_DB) so that ovn-sbctl or ovn-nbctl uses the
-# database by default.
-#
-# Usually invoked from ovn_start.
-ovn_init_db () {
-echo "creating $1 database"
-local d=$ovs_base/$1
-mkdir "$d" || return 1
-: > "$d"/.$1.db.~lock~
-as $1 ovsdb-tool create "$d"/$1.db "$abs_top_srcdir"/ovn/$1.ovsschema
-as $1 start_daemon ovsdb-server --remote=punix:"$d"/$1.sock "$d"/$1.db
-local var=`echo $1_db | tr a-z- A-Z_`
-AS_VAR_SET([$var], [unix:$ovs_base/$1/$1.sock]); export $var
-}
-
-# ovn_start
-#
-# Creates and initializes ovn-sb and ovn-nb databases and starts their
-# ovsdb-server instance, sets appropriate environment variables so that
-# ovn-sbctl and ovn-nbctl use them by default, and starts ovn-northd running
-# against them.
-ovn_start () {
-ovn_init_db ovn-sb; ovn-sbctl init
-ovn_init_db ovn-nb; ovn-nbctl init
-
-echo "starting ovn-northd"
-mkdir "$ovs_base"/northd
-as northd start_daemon ovn-northd \
-   --ovnnb-db=unix:"$ovs_base"/ovn-nb/ovn-nb.sock \
-   --ovnsb-db=unix:"$ovs_base"/ovn-sb/ovn-sb.sock
-
-echo "starting backup ovn-northd"
-mkdir "$ovs_base"/northd-backup
-as northd-backup start_daemon ovn-northd \
-   --ovnnb-db=unix:"$ovs_base"/ovn-nb/ovn-nb.sock \
-   --ovnsb-db=unix:"$ovs_base"/ovn-sb/ovn-sb.sock
-}
-
-# Interconnection networks.
-#
-# When multiple sandboxed Open vSwitch instances exist, one will inevitably
-# want to connect them together.  These commands allow for that.  Conceptually,
-# an interconnection network is a switch for which these functions make it easy
-# to plug into other switches in other sandboxed Open vSwitch instances.
-# Interconnection networks are implemented as bridges in a switch named "main",
-# so to use interconnection networks please avoid working with that switch
-# directly.
-
-# net_add NETWORK
-#
-# Creates a new interconnection network named NETWORK.
-net_add () {
-test -d "$ovs_base"/main || sim_add main || return 1
-as main ovs-vsctl add-br "$1"
-}
-
-# net_attach NETWORK BRIDGE
-#
-# Adds a new port to BRIDGE in the default sandbox (as set with as()) and plugs
-# it into the NETWORK interconnection network.  NETWORK must already have been
-# created by a previous invocation of net_add.  The default sandbox must not be
-# "main".
-net_attach () {
-local net=$1 bridge=$2
-
-local port=${sandbox}_$bridge
-as main ovs-vsctl \
--- add-port $net $port \
--- set Interface $port 

[ovs-dev] [PATCH 1/3] ovn.at: Clean up northd-backup in "ovn -- ipam" test.

2019-05-23 Thread Justin Pettit
Signed-off-by: Justin Pettit 
---
 tests/ovn.at | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/tests/ovn.at b/tests/ovn.at
index 6499df3d3e2a..298f647d37bf 100644
--- a/tests/ovn.at
+++ b/tests/ovn.at
@@ -6408,6 +6408,9 @@ OVS_APP_EXIT_AND_WAIT([ovsdb-server])
 as northd
 OVS_APP_EXIT_AND_WAIT([ovn-northd])
 
+as northd-backup
+OVS_APP_EXIT_AND_WAIT([ovn-northd])
+
 AT_CLEANUP
 
 AT_SETUP([ovn -- ipam connectivity])
-- 
2.17.1

___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] [PATCH 2/3] ovn.at: Use ovn cleanup macros.

2019-05-23 Thread Justin Pettit
Signed-off-by: Justin Pettit 
---
 tests/ovn.at | 92 +++-
 1 file changed, 5 insertions(+), 87 deletions(-)

diff --git a/tests/ovn.at b/tests/ovn.at
index 298f647d37bf..9c71dc9ffdcf 100644
--- a/tests/ovn.at
+++ b/tests/ovn.at
@@ -3857,24 +3857,7 @@ echo 
"${expect_dst_mac}${expect_src_mac}0800451c3f110100${src_ip}${d
 
 OVN_CHECK_PACKETS([hv1/vif2-tx.pcap], [expected])
 
-
-as hv1
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
-OVS_APP_EXIT_AND_WAIT([ovs-vswitchd])
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
-
-as main
-OVS_APP_EXIT_AND_WAIT([ovs-vswitchd])
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
+OVN_CLEANUP([hv1])
 
 AT_CLEANUP
 
@@ -4808,23 +4791,7 @@ OVS_WAIT_UNTIL([test 8 = `cat ofctl_monitor*.log | grep 
-c NXT_RESUME`])
 # vif1-tx.pcap should have received the DHCPv4 request packet
 OVN_CHECK_PACKETS([hv1/vif1-tx.pcap], [1.expected])
 
-as hv1
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
-OVS_APP_EXIT_AND_WAIT([ovs-vswitchd])
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
-
-as main
-OVS_APP_EXIT_AND_WAIT([ovs-vswitchd])
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
+OVN_CLEANUP([hv1])
 
 AT_CLEANUP
 
@@ -5096,23 +5063,7 @@ trim_zeros > 5.packets
 cat 5.expected | cut -c 1-120,125- > expout
 AT_CHECK([cat 5.packets | cut -c 1-120,125- ], [0], [expout])
 
-as hv1
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
-OVS_APP_EXIT_AND_WAIT([ovs-vswitchd])
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
-
-as main
-OVS_APP_EXIT_AND_WAIT([ovs-vswitchd])
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
+OVN_CLEANUP([hv1])
 
 AT_CLEANUP
 
@@ -8039,25 +7990,7 @@ 
expected=${dst_mac}${src_mac}0800451c3e110200${src_ip}${dst_ip}00351
 echo $expected > expected
 OVN_CHECK_PACKETS([hv3/vif1-tx.pcap], [expected])
 
-for sim in hv1 hv2 hv3; do
-as $sim
-OVS_APP_EXIT_AND_WAIT([ovn-controller])
-OVS_APP_EXIT_AND_WAIT([ovs-vswitchd])
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-done
-
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
-
-as main
-OVS_APP_EXIT_AND_WAIT([ovs-vswitchd])
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
+OVN_CLEANUP([hv1],[hv2],[hv3])
 
 AT_CLEANUP
 
@@ -8471,23 +8404,8 @@ reset_pcap_file hv1-vif2 hv1/vif2
 rm -f 1.expected
 rm -f 2.expected
 
-as hv1
- OVS_APP_EXIT_AND_WAIT([ovn-controller])
-OVS_APP_EXIT_AND_WAIT([ovs-vswitchd])
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-sb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as ovn-nb
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
-
-as northd
-OVS_APP_EXIT_AND_WAIT([ovn-northd])
+OVN_CLEANUP([hv1])
 
-as main
-OVS_APP_EXIT_AND_WAIT([ovs-vswitchd])
-OVS_APP_EXIT_AND_WAIT([ovsdb-server])
 AT_CLEANUP
 
 AT_SETUP([ovn -- 4 HV, 1 LS, 1 LR, packet test with HA distributed router 
gateway port])
-- 
2.17.1

___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [ovs-discuss] An issue that the deleted flow tables in kernel based datapath couldn't be established again

2019-05-23 Thread Ben Pfaff
On Thu, May 23, 2019 at 11:57:05AM +, pei Jikui wrote:
> 1)I found a case in the netlink based datapth, that if we delete the 
> existing datapath flow tables via “ovs-dpctl del-flows”, the according 
> datpath flow tables could not be created again and then  all the consecutive 
> packets need to go through the user-space slow path.

OK.

One way to avoid this problem is to not run "ovs-dpctl del-flows".  Is
there a reason you want to run that command?

> 2)I also found the potential root cause.  It is because when we delete 
> the datapath flow tables, their according ufid keys stored in the userspace 
> vswitchd are not deleted accordingly.  So, when the coming packets’ 
> packet_missing upcall sent to vswitchd, they ufid key is still in the 
> UKEY_OPERATIONAL status so that the DPIF_FP_CREATE message will not be sent 
> to datapath anymore.

That does seem like a plausible root cause.

> 3)That will be causing the above case.  The possible fixinges are,
> 
> a) Send the DPIF_FP_CREATE message to datapath regardless if the according 
> ufid key exists or not. (I have verified this fix).

Do you mean, send the message on every packet that comes to userspace?
This could have performance implications, but I don't know how much.

> b) More fine-graind fix is when we execute “ovs-dpctl del-flows **”, we also 
> should clean up the according ufid cach in vswitch.

How do you suggest that userspace should detect that the flows were
deleted?
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] [PATCH 3/5] dpif-netdev: Do not sleep when swapping queues.

2019-05-23 Thread David Marchand
When swapping queues from a pmd thread to another (q0 polled by pmd0/q1
polled by pmd1 -> q1 polled by pmd0/q0 polled by pmd1), the current
"Step 5" puts both pmds to sleep waiting for the control thread to wake
them up later.

Prefer to make them spin in such a case to avoid sleeping an
undeterministic amount of time.

Signed-off-by: David Marchand 
Acked-by: Eelco Chaudron 
---
 lib/dpif-netdev.c | 47 ++-
 1 file changed, 42 insertions(+), 5 deletions(-)

diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
index 23cf6a6..243c1ce 100644
--- a/lib/dpif-netdev.c
+++ b/lib/dpif-netdev.c
@@ -683,6 +683,7 @@ struct dp_netdev_pmd_thread {
 struct seq *reload_seq;
 uint64_t last_reload_seq;
 atomic_bool reload; /* Do we need to reload ports? */
+atomic_bool wait_for_reload;/* Can we busy wait for the next reload? */
 atomic_bool exit;   /* For terminating the pmd thread. */
 pthread_t thread;
 unsigned core_id;   /* CPU core id of this pmd thread. */
@@ -4896,6 +4897,33 @@ reconfigure_datapath(struct dp_netdev *dp)
 HMAP_FOR_EACH_SAFE (poll, poll_next, node, >poll_list) {
 if (poll->rxq->pmd != pmd) {
 dp_netdev_del_rxq_from_pmd(pmd, poll);
+
+/* This pmd might sleep after this step reload if it has no
+ * rxq remaining. Can we tell it to busy wait for new rxq at
+ * Step 6 ? */
+if (hmap_count(>poll_list) == 0) {
+HMAP_FOR_EACH (port, node, >ports) {
+int qid;
+
+if (!netdev_is_pmd(port->netdev)) {
+continue;
+}
+
+for (qid = 0; qid < port->n_rxq; qid++) {
+struct dp_netdev_rxq *q = >rxqs[qid];
+
+if (q->pmd == pmd) {
+atomic_store_relaxed(>pmd->wait_for_reload,
+ true);
+break;
+}
+}
+
+if (qid != port->n_rxq) {
+break;
+}
+}
+}
 }
 }
 ovs_mutex_unlock(>port_mutex);
@@ -5413,7 +5441,9 @@ pmd_thread_main(void *f_)
 struct pmd_perf_stats *s = >perf_stats;
 unsigned int lc = 0;
 struct polled_queue *poll_list;
+bool wait_for_reload = false;
 bool exiting;
+bool reload;
 int poll_cnt;
 int i;
 int process_packets = 0;
@@ -5441,9 +5471,16 @@ reload:
 }
 
 if (!poll_cnt) {
-while (seq_read(pmd->reload_seq) == pmd->last_reload_seq) {
-seq_wait(pmd->reload_seq, pmd->last_reload_seq);
-poll_block();
+/* Don't sleep, control thread will ask for a reload shortly. */
+if (wait_for_reload) {
+do {
+atomic_read_relaxed(>reload, );
+} while (!reload);
+} else {
+while (seq_read(pmd->reload_seq) == pmd->last_reload_seq) {
+seq_wait(pmd->reload_seq, pmd->last_reload_seq);
+poll_block();
+}
 }
 lc = UINT_MAX;
 }
@@ -5482,8 +5519,6 @@ reload:
 }
 
 if (lc++ > 1024) {
-bool reload;
-
 lc = 0;
 
 coverage_try_clear();
@@ -5503,6 +5538,7 @@ reload:
 ovs_mutex_unlock(>perf_stats.stats_mutex);
 
 poll_cnt = pmd_load_queues_and_ports(pmd, _list);
+atomic_read_relaxed(>wait_for_reload, _for_reload);
 atomic_read_relaxed(>exit, );
 /* Signal here to make sure the pmd finishes
  * reloading the updated configuration. */
@@ -5839,6 +5875,7 @@ dp_netdev_pmd_reload_done(struct dp_netdev_pmd_thread 
*pmd)
 {
 uint32_t old;
 
+atomic_store_relaxed(>wait_for_reload, false);
 atomic_store_relaxed(>reload, false);
 pmd->last_reload_seq = seq_read(pmd->reload_seq);
 atomic_sub_explicit(>dp->reloading_pmds, 1, ,
-- 
1.8.3.1

___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] [PATCH 4/5] dpif-netdev: Only reload static tx qid when needed.

2019-05-23 Thread David Marchand
pmd->static_tx_qid is allocated under a mutex by the different pmd
threads.
Unconditionally reallocating it will make those pmd threads sleep
when contention occurs.
During "normal" reloads like for rebalancing queues between pmd threads,
this can make pmd threads waste time on this.
Reallocating the tx qid is only needed when removing other pmd threads
as it is the only situation when the qid pool can become uncontiguous.

Add a flag to instruct the pmd to reload tx qid for this case which is
Step 1 in current code.

Signed-off-by: David Marchand 
Acked-by: Eelco Chaudron 
---
 lib/dpif-netdev.c | 13 +++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
index 243c1ce..b763ceb 100644
--- a/lib/dpif-netdev.c
+++ b/lib/dpif-netdev.c
@@ -684,6 +684,7 @@ struct dp_netdev_pmd_thread {
 uint64_t last_reload_seq;
 atomic_bool reload; /* Do we need to reload ports? */
 atomic_bool wait_for_reload;/* Can we busy wait for the next reload? */
+atomic_bool reload_tx_qid;  /* Do we need to reload static_tx_qid? */
 atomic_bool exit;   /* For terminating the pmd thread. */
 pthread_t thread;
 unsigned core_id;   /* CPU core id of this pmd thread. */
@@ -4720,6 +4721,7 @@ reconfigure_pmd_threads(struct dp_netdev *dp)
 pmd->core_id)) {
 hmapx_add(_delete, pmd);
 } else if (need_to_adjust_static_tx_qids) {
+atomic_store_relaxed(>reload_tx_qid, true);
 pmd->need_reload = true;
 }
 }
@@ -5442,6 +5444,7 @@ pmd_thread_main(void *f_)
 unsigned int lc = 0;
 struct polled_queue *poll_list;
 bool wait_for_reload = false;
+bool reload_tx_qid;
 bool exiting;
 bool reload;
 int poll_cnt;
@@ -5456,9 +5459,9 @@ pmd_thread_main(void *f_)
 dpdk_set_lcore_id(pmd->core_id);
 poll_cnt = pmd_load_queues_and_ports(pmd, _list);
 dfc_cache_init(>flow_cache);
-reload:
 pmd_alloc_static_tx_qid(pmd);
 
+reload:
 atomic_count_init(>pmd_overloaded, 0);
 
 /* List port/core affinity */
@@ -5539,17 +5542,22 @@ reload:
 
 poll_cnt = pmd_load_queues_and_ports(pmd, _list);
 atomic_read_relaxed(>wait_for_reload, _for_reload);
+atomic_read_relaxed(>reload_tx_qid, _tx_qid);
 atomic_read_relaxed(>exit, );
 /* Signal here to make sure the pmd finishes
  * reloading the updated configuration. */
 dp_netdev_pmd_reload_done(pmd);
 
-pmd_free_static_tx_qid(pmd);
+if (reload_tx_qid) {
+pmd_free_static_tx_qid(pmd);
+pmd_alloc_static_tx_qid(pmd);
+}
 
 if (!exiting) {
 goto reload;
 }
 
+pmd_free_static_tx_qid(pmd);
 dfc_cache_uninit(>flow_cache);
 free(poll_list);
 pmd_free_cached_ports(pmd);
@@ -5876,6 +5884,7 @@ dp_netdev_pmd_reload_done(struct dp_netdev_pmd_thread 
*pmd)
 uint32_t old;
 
 atomic_store_relaxed(>wait_for_reload, false);
+atomic_store_relaxed(>reload_tx_qid, false);
 atomic_store_relaxed(>reload, false);
 pmd->last_reload_seq = seq_read(pmd->reload_seq);
 atomic_sub_explicit(>dp->reloading_pmds, 1, ,
-- 
1.8.3.1

___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] [PATCH 5/5] dpif-netdev: Catch reloads faster.

2019-05-23 Thread David Marchand
Looking at the reload flag only every 1024 loops can be a long time
under load, since we might be handling 32 packets per polled rxq, per
iteration, which means up to poll_cnt * 32 * 1024 packets.
Look at the flag every loop, no major performance impact seen.

Signed-off-by: David Marchand 
Acked-by: Eelco Chaudron 
---
 lib/dpif-netdev.c | 10 +-
 1 file changed, 5 insertions(+), 5 deletions(-)

---
Changelog since v2:
- fixed commitlog on the number of packets

diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
index b763ceb..9d79044 100644
--- a/lib/dpif-netdev.c
+++ b/lib/dpif-netdev.c
@@ -5485,7 +5485,6 @@ reload:
 poll_block();
 }
 }
-lc = UINT_MAX;
 }
 
 pmd->intrvl_tsc_prev = 0;
@@ -5529,12 +5528,13 @@ reload:
 if (!ovsrcu_try_quiesce()) {
 emc_cache_slow_sweep(&((pmd->flow_cache).emc_cache));
 }
+}
 
-atomic_read_explicit(>reload, , memory_order_acquire);
-if (reload) {
-break;
-}
+atomic_read_explicit(>reload, , memory_order_acquire);
+if (OVS_UNLIKELY(reload)) {
+break;
 }
+
 pmd_perf_end_iteration(s, rx_packets, tx_packets,
pmd_perf_metrics_enabled(pmd));
 }
-- 
1.8.3.1

___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] [PATCH 2/5] dpif-netdev: Trigger parallel pmd reloads.

2019-05-23 Thread David Marchand
pmd reloads are currently serialised in each steps calling
reload_affected_pmds.
Any pmd processing packets, waiting on a mutex etc... will make other
pmd threads wait for a delay that can be undeterministic when syscalls
adds up.

Switch to a little busy loop on the control thread using an atomic
count.

The memory order on this atomic is rel-acq to have an explicit
synchronisation between the pmd threads and the control thread.

Signed-off-by: David Marchand 
Acked-by: Eelco Chaudron 
---
 lib/dpif-netdev.c | 50 +-
 1 file changed, 37 insertions(+), 13 deletions(-)

---
Changelog since RFC v1:
- added memory ordering on 'reloading_pmds' atomic to serve as a
  synchronisation point between pmd threads and control thread

diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
index 19d7f7d..23cf6a6 100644
--- a/lib/dpif-netdev.c
+++ b/lib/dpif-netdev.c
@@ -334,6 +334,9 @@ struct dp_netdev {
 /* The time that a packet can wait in output batch for sending. */
 atomic_uint32_t tx_flush_interval;
 
+/* Count of pmds currently reloading */
+atomic_uint32_t reloading_pmds;
+
 /* Meters. */
 struct ovs_mutex meter_locks[N_METER_LOCKS];
 struct dp_meter *meters[MAX_METERS]; /* Meter bands. */
@@ -646,9 +649,6 @@ struct dp_netdev_pmd_thread {
 struct ovs_refcount ref_cnt;/* Every reference must be refcount'ed. */
 struct cmap_node node;  /* In 'dp->poll_threads'. */
 
-pthread_cond_t cond;/* For synchronizing pmd thread reload. */
-struct ovs_mutex cond_mutex;/* Mutex for condition variable. */
-
 /* Per thread exact-match cache.  Note, the instance for cpu core
  * NON_PMD_CORE_ID can be accessed by multiple threads, and thusly
  * need to be protected by 'non_pmd_mutex'.  Every other instance
@@ -1524,6 +1524,8 @@ create_dp_netdev(const char *name, const struct 
dpif_class *class,
 atomic_init(>emc_insert_min, DEFAULT_EM_FLOW_INSERT_MIN);
 atomic_init(>tx_flush_interval, DEFAULT_TX_FLUSH_INTERVAL);
 
+atomic_init(>reloading_pmds, 0);
+
 cmap_init(>poll_threads);
 dp->pmd_rxq_assign_cyc = true;
 
@@ -1753,11 +1755,8 @@ dp_netdev_reload_pmd__(struct dp_netdev_pmd_thread *pmd)
 return;
 }
 
-ovs_mutex_lock(>cond_mutex);
 seq_change(pmd->reload_seq);
 atomic_store_explicit(>reload, true, memory_order_release);
-ovs_mutex_cond_wait(>cond, >cond_mutex);
-ovs_mutex_unlock(>cond_mutex);
 }
 
 static uint32_t
@@ -4640,9 +4639,31 @@ rxq_scheduling(struct dp_netdev *dp, bool pinned) 
OVS_REQUIRES(dp->port_mutex)
 }
 
 static void
+wait_reloading_pmds(struct dp_netdev *dp)
+{
+uint32_t reloading;
+
+do {
+atomic_read_explicit(>reloading_pmds, ,
+ memory_order_acquire);
+} while (reloading != 0);
+}
+
+static void
 reload_affected_pmds(struct dp_netdev *dp)
 {
 struct dp_netdev_pmd_thread *pmd;
+unsigned int pmd_count = 0;
+
+CMAP_FOR_EACH (pmd, node, >poll_threads) {
+if (pmd->core_id == NON_PMD_CORE_ID) {
+continue;
+}
+if (pmd->need_reload) {
+pmd_count++;
+}
+}
+atomic_store_relaxed(>reloading_pmds, pmd_count);
 
 CMAP_FOR_EACH (pmd, node, >poll_threads) {
 if (pmd->need_reload) {
@@ -4651,6 +4672,10 @@ reload_affected_pmds(struct dp_netdev *dp)
 pmd->need_reload = false;
 }
 }
+
+if (pmd_count != 0) {
+wait_reloading_pmds(dp);
+}
 }
 
 static void
@@ -5812,11 +5837,12 @@ dpif_netdev_enable_upcall(struct dpif *dpif)
 static void
 dp_netdev_pmd_reload_done(struct dp_netdev_pmd_thread *pmd)
 {
-ovs_mutex_lock(>cond_mutex);
+uint32_t old;
+
 atomic_store_relaxed(>reload, false);
 pmd->last_reload_seq = seq_read(pmd->reload_seq);
-xpthread_cond_signal(>cond);
-ovs_mutex_unlock(>cond_mutex);
+atomic_sub_explicit(>dp->reloading_pmds, 1, ,
+memory_order_release);
 }
 
 /* Finds and refs the dp_netdev_pmd_thread on core 'core_id'.  Returns
@@ -5901,8 +5927,6 @@ dp_netdev_configure_pmd(struct dp_netdev_pmd_thread *pmd, 
struct dp_netdev *dp,
 pmd->reload_seq = seq_create();
 pmd->last_reload_seq = seq_read(pmd->reload_seq);
 atomic_init(>reload, false);
-xpthread_cond_init(>cond, NULL);
-ovs_mutex_init(>cond_mutex);
 ovs_mutex_init(>flow_mutex);
 ovs_mutex_init(>port_mutex);
 cmap_init(>flow_table);
@@ -5945,8 +5969,6 @@ dp_netdev_destroy_pmd(struct dp_netdev_pmd_thread *pmd)
 cmap_destroy(>flow_table);
 ovs_mutex_destroy(>flow_mutex);
 seq_destroy(pmd->reload_seq);
-xpthread_cond_destroy(>cond);
-ovs_mutex_destroy(>cond_mutex);
 ovs_mutex_destroy(>port_mutex);
 free(pmd);
 }
@@ -5966,7 +5988,9 @@ dp_netdev_del_pmd(struct dp_netdev *dp, struct 
dp_netdev_pmd_thread *pmd)
 ovs_mutex_unlock(>non_pmd_mutex);
 } else {
 atomic_store_relaxed(>exit, true);

[ovs-dev] [PATCH 0/5] Quicker pmd threads reloads

2019-05-23 Thread David Marchand
We have been testing the rebalance code in different situations while
having traffic going through OVS.
Those tests have shown that part of the observed packets losses is due to
some time wasted in signaling/waiting for the pmd threads to reload their
polling configurations.

This series is an attempt at getting pmd threads reloads quicker and
more deterministic.

Example of number of cycles spent by a pmd between two polling
configurations (in cycles minimum/average/maximum of 1000 changes):
- d58b59c17c70: 126822/312103/756580
- patch1:   113658/296157/741688
- patch2:49198/167206/466108
- patch3:13032/120730/341163
- patch4:12803/112964/323455
- patch5:13633/ 20373/ 47410

Changelog since RFC v2:
- added ack from Eelco
- 

Changelog since RFC v1:
- added numbers per patch in cover letter
- added memory ordering for explicit synchronisations between threads
  in patch 1 and patch 2

-- 
David Marchand

David Marchand (5):
  dpif-netdev: Convert exit latch to flag.
  dpif-netdev: Trigger parallel pmd reloads.
  dpif-netdev: Do not sleep when swapping queues.
  dpif-netdev: Only reload static tx qid when needed.
  dpif-netdev: Catch reloads faster.

 lib/dpif-netdev.c | 132 +-
 1 file changed, 100 insertions(+), 32 deletions(-)

-- 
1.8.3.1

___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] [PATCH 1/5] dpif-netdev: Convert exit latch to flag.

2019-05-23 Thread David Marchand
No need for a latch here since we don't have to wait.
A simple boolean flag is enough.

The memory order on the reload flag is changed to rel-acq ordering to
serve as a synchronisation point between the pmd threads and the control
thread that asks for termination.

Fixes: e4cfed38b159 ("dpif-netdev: Add poll-mode-device thread.")
Signed-off-by: David Marchand 
Acked-by: Eelco Chaudron 
---
 lib/dpif-netdev.c | 14 ++
 1 file changed, 6 insertions(+), 8 deletions(-)

---
Changelog since RFC v2:
- removed now unused latch.h inclusion

Changelog since RFC v1:
- added memory ordering on 'reload' atomic to serve as a synchronisation
  point between control thread and pmd threads

diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
index 5a6f2ab..19d7f7d 100644
--- a/lib/dpif-netdev.c
+++ b/lib/dpif-netdev.c
@@ -48,7 +48,6 @@
 #include "hmapx.h"
 #include "id-pool.h"
 #include "ipf.h"
-#include "latch.h"
 #include "netdev.h"
 #include "netdev-provider.h"
 #include "netdev-vport.h"
@@ -681,10 +680,10 @@ struct dp_netdev_pmd_thread {
 /* Current context of the PMD thread. */
 struct dp_netdev_pmd_thread_ctx ctx;
 
-struct latch exit_latch;/* For terminating the pmd thread. */
 struct seq *reload_seq;
 uint64_t last_reload_seq;
 atomic_bool reload; /* Do we need to reload ports? */
+atomic_bool exit;   /* For terminating the pmd thread. */
 pthread_t thread;
 unsigned core_id;   /* CPU core id of this pmd thread. */
 int numa_id;/* numa node id of this pmd thread. */
@@ -1756,7 +1755,7 @@ dp_netdev_reload_pmd__(struct dp_netdev_pmd_thread *pmd)
 
 ovs_mutex_lock(>cond_mutex);
 seq_change(pmd->reload_seq);
-atomic_store_relaxed(>reload, true);
+atomic_store_explicit(>reload, true, memory_order_release);
 ovs_mutex_cond_wait(>cond, >cond_mutex);
 ovs_mutex_unlock(>cond_mutex);
 }
@@ -5468,7 +5467,7 @@ reload:
 emc_cache_slow_sweep(&((pmd->flow_cache).emc_cache));
 }
 
-atomic_read_relaxed(>reload, );
+atomic_read_explicit(>reload, , memory_order_acquire);
 if (reload) {
 break;
 }
@@ -5479,7 +5478,7 @@ reload:
 ovs_mutex_unlock(>perf_stats.stats_mutex);
 
 poll_cnt = pmd_load_queues_and_ports(pmd, _list);
-exiting = latch_is_set(>exit_latch);
+atomic_read_relaxed(>exit, );
 /* Signal here to make sure the pmd finishes
  * reloading the updated configuration. */
 dp_netdev_pmd_reload_done(pmd);
@@ -5898,7 +5897,7 @@ dp_netdev_configure_pmd(struct dp_netdev_pmd_thread *pmd, 
struct dp_netdev *dp,
 pmd->n_output_batches = 0;
 
 ovs_refcount_init(>ref_cnt);
-latch_init(>exit_latch);
+atomic_init(>exit, false);
 pmd->reload_seq = seq_create();
 pmd->last_reload_seq = seq_read(pmd->reload_seq);
 atomic_init(>reload, false);
@@ -5945,7 +5944,6 @@ dp_netdev_destroy_pmd(struct dp_netdev_pmd_thread *pmd)
 cmap_destroy(>classifiers);
 cmap_destroy(>flow_table);
 ovs_mutex_destroy(>flow_mutex);
-latch_destroy(>exit_latch);
 seq_destroy(pmd->reload_seq);
 xpthread_cond_destroy(>cond);
 ovs_mutex_destroy(>cond_mutex);
@@ -5967,7 +5965,7 @@ dp_netdev_del_pmd(struct dp_netdev *dp, struct 
dp_netdev_pmd_thread *pmd)
 pmd_free_static_tx_qid(pmd);
 ovs_mutex_unlock(>non_pmd_mutex);
 } else {
-latch_set(>exit_latch);
+atomic_store_relaxed(>exit, true);
 dp_netdev_reload_pmd__(pmd);
 xpthread_join(pmd->thread, NULL);
 }
-- 
1.8.3.1

___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [PATCH v4 1/4] netdev: Dynamic per-port Flow API.

2019-05-23 Thread Ilya Maximets



On 23.05.2019 16:53, Ilya Maximets wrote:
> On 23.05.2019 16:18, Ophir Munk wrote:
>>
>>
>>> -Original Message-
>>> From: Ilya Maximets 
>>> Sent: Wednesday, May 22, 2019 2:50 PM
>>> To: Ophir Munk ; Roi Dayan
>>> ; ovs-dev@openvswitch.org
>>> Cc: Ian Stokes ; Flavio Leitner ;
>>> Kevin Traynor ; Roni Bar Yanai
>>> ; Finn Christensen ; Ben Pfaff
>>> ; Simon Horman ; Olga
>>> Shern ; Asaf Penso ; Majd
>>> Dibbiny 
>>> Subject: Re: [PATCH v4 1/4] netdev: Dynamic per-port Flow API.
>>>
>>>
>>>
>>> On 22.05.2019 13:15, Ilya Maximets wrote:
 On 22.05.2019 1:12, Ophir Munk wrote:
>
>> -Original Message-
>> From: Roi Dayan
>> Sent: Tuesday, May 21, 2019 7:48 PM
>> To: Ilya Maximets ; ovs-
>>> d...@openvswitch.org
>> Cc: Ian Stokes ; Flavio Leitner
>> ; Ophir Munk ; Kevin
>>> Traynor
>> ; Roni Bar Yanai ; Finn
>> Christensen ; Ben Pfaff ; Simon
>>> Horman
>> 
>> Subject: Re: [PATCH v4 1/4] netdev: Dynamic per-port Flow API.
>>
>>
>> Acked-by: Roi Dayan 
>
> Hi Ilya,
> Can you please send a patch for the detection of netdev vport on top of
>>> this series (as you have already started suggesting in ML discussions)?
> I will then test it and will make sure it's applicable with this series. 
> I think it
>>> is better to do that before series acceptance.
> What do you think?

 Hi.
 Actually patches are already on a list. You only need to add few lines
 to make them allow vxlan for netdev-offload-dpdk.

 Apply following patch sets on top of this one:

  https://patchwork.ozlabs.org/project/openvswitch/list/?series=107534
>>
>> FYI - applying this patch succeeded, however applying the next patch failed 
>> unless I applied 
>> patches 2/4, 3/4/ 4/4 first and only then I applied the next patch.
> 
> Yes. That is expected.
> 
>>
  https://patchwork.ozlabs.org/project/openvswitch/list/?series=107545


 Change below should than allow you to use dpdk offloading for vxlan ports:
>>
>> Why do you want to use dpdk offloading for vxlan ports?
> 
> Sorry for misunderstanding, but I thought that you're implementing
> vxlan offloading as part of dpdk offloading. If it'll be a separate
> module, it's even better.
> 
>> We need to use vport-netdev offloading for vxlan-netdev ports.
>> We need to use dpdk offloading for dpdk ports.
>> Vxlan-netdev offloading and dpdk offloading have a different implementation
>> (unlike the system case where vxlan-system offloading and system offloading 
>> are identical).
>>
>> I see four required offloading APIs:
>> 1. system
>> 2. dpdk
>> 3. vport under system (currently it is identical to system API)
>> 4. New vport under netdev.
>>
>> The first three APIs exist. The last (vxlan-netdev) will be sent soon. 
>>
>> I see two options for adding vxlan-netdev API.
>> 1. Create a new dedicated vport-netdev offload class. 
>>
>> 2. Having vport-netdev API to be identical to dpdk API but since the 
>> implementations are different we will have to know the type ("dpdk" versus 
>> "vxlan"). 
>> In pseudo code:
>> If (type=="dpdk")
>> {
>>// handle dpdk offloading
>> }
>> If (type=="vxlan")
>> {
>>// handle vxlan offloading
>> }
>>
>> I prefer the first option.
> 
> Yes. Sure. I alse prefer the separate class if it has separate implementation
> anyway.
> 
> 
> So, with all above patches applied you just need to make a new file:
> netdev-offload-vport-dpdk.c:
> 
> <...>
> static int netdev_offload_vport_dpdk_flow_put(...)
> {
> ...
> }
> 
> static int netdev_offload_vport_dpdk_flow_del(...)
> {
> ...
> }
> 
> static int
> netdev_offload_vport_dpdk_init_flow_api(struct netdev *netdev)
> {
> if (netdev_vport_is_vport_class(netdev->netdev_class)
> && netdev_vport_has_system_port(netdev)) {
> VLOG_DBG("%s: vport has backing system interface. Skipping.",
>  netdev_get_name(netdev));
> return EOPNOTSUPP;
> }
> return strcmp(netdev_get_type(netdev), "vxlan");
> }
> 
> const struct netdev_flow_api netdev_offload_vport_dpdk = {
> .type = "dpdk_flow_api",

s/type = "dpdk_flow_api"/type = "vport_dpdk_flow_api"/

> .flow_put = netdev_offload_vport_dpdk_flow_put,
> .flow_del = netdev_offload_vport_dpdk_flow_del,
> .init_flow_api = netdev_offload_vport_dpdk_init_flow_api,
> };
> 
> 
> And add following line to lib/dpdk.c:
> 
> netdev_register_flow_api_provider(_offload_vport_dpdk);
> 
> 
> And following to lib/netdev-offload-provider.h:
> 
> extern const struct netdev_flow_api netdev_offload_vport_dpdk;
> 
>>
 diff --git a/lib/netdev-offload-dpdk.c b/lib/netdev-offload-dpdk.c
 index b7b0616ec..32f23c401 100644
 --- a/lib/netdev-offload-dpdk.c
 +++ b/lib/netdev-offload-dpdk.c
 @@ -760,6 +760,10 @@ netdev_offload_dpdk_init_flow_api(struct netdev
>>> *netdev)
  return EOPNOTSUPP;
  }

 +if (!strcmp(netdev_get_name(netdev), "vxlan")) {
>>>
>>> 

Re: [ovs-dev] [PATCH v4 1/4] netdev: Dynamic per-port Flow API.

2019-05-23 Thread Ilya Maximets
On 23.05.2019 16:18, Ophir Munk wrote:
> 
> 
>> -Original Message-
>> From: Ilya Maximets 
>> Sent: Wednesday, May 22, 2019 2:50 PM
>> To: Ophir Munk ; Roi Dayan
>> ; ovs-dev@openvswitch.org
>> Cc: Ian Stokes ; Flavio Leitner ;
>> Kevin Traynor ; Roni Bar Yanai
>> ; Finn Christensen ; Ben Pfaff
>> ; Simon Horman ; Olga
>> Shern ; Asaf Penso ; Majd
>> Dibbiny 
>> Subject: Re: [PATCH v4 1/4] netdev: Dynamic per-port Flow API.
>>
>>
>>
>> On 22.05.2019 13:15, Ilya Maximets wrote:
>>> On 22.05.2019 1:12, Ophir Munk wrote:

> -Original Message-
> From: Roi Dayan
> Sent: Tuesday, May 21, 2019 7:48 PM
> To: Ilya Maximets ; ovs-
>> d...@openvswitch.org
> Cc: Ian Stokes ; Flavio Leitner
> ; Ophir Munk ; Kevin
>> Traynor
> ; Roni Bar Yanai ; Finn
> Christensen ; Ben Pfaff ; Simon
>> Horman
> 
> Subject: Re: [PATCH v4 1/4] netdev: Dynamic per-port Flow API.
>
>
> Acked-by: Roi Dayan 

 Hi Ilya,
 Can you please send a patch for the detection of netdev vport on top of
>> this series (as you have already started suggesting in ML discussions)?
 I will then test it and will make sure it's applicable with this series. I 
 think it
>> is better to do that before series acceptance.
 What do you think?
>>>
>>> Hi.
>>> Actually patches are already on a list. You only need to add few lines
>>> to make them allow vxlan for netdev-offload-dpdk.
>>>
>>> Apply following patch sets on top of this one:
>>>
>>>  https://patchwork.ozlabs.org/project/openvswitch/list/?series=107534
> 
> FYI - applying this patch succeeded, however applying the next patch failed 
> unless I applied 
> patches 2/4, 3/4/ 4/4 first and only then I applied the next patch.

Yes. That is expected.

> 
>>>  https://patchwork.ozlabs.org/project/openvswitch/list/?series=107545
>>>
>>>
>>> Change below should than allow you to use dpdk offloading for vxlan ports:
> 
> Why do you want to use dpdk offloading for vxlan ports?

Sorry for misunderstanding, but I thought that you're implementing
vxlan offloading as part of dpdk offloading. If it'll be a separate
module, it's even better.

> We need to use vport-netdev offloading for vxlan-netdev ports.
> We need to use dpdk offloading for dpdk ports.
> Vxlan-netdev offloading and dpdk offloading have a different implementation
> (unlike the system case where vxlan-system offloading and system offloading 
> are identical).
> 
> I see four required offloading APIs:
> 1. system
> 2. dpdk
> 3. vport under system (currently it is identical to system API)
> 4. New vport under netdev.
> 
> The first three APIs exist. The last (vxlan-netdev) will be sent soon. 
> 
> I see two options for adding vxlan-netdev API.
> 1. Create a new dedicated vport-netdev offload class. 
> 
> 2. Having vport-netdev API to be identical to dpdk API but since the 
> implementations are different we will have to know the type ("dpdk" versus 
> "vxlan"). 
> In pseudo code:
> If (type=="dpdk")
> {
>// handle dpdk offloading
> }
> If (type=="vxlan")
> {
>// handle vxlan offloading
> }
> 
> I prefer the first option.

Yes. Sure. I alse prefer the separate class if it has separate implementation
anyway.


So, with all above patches applied you just need to make a new file:
netdev-offload-vport-dpdk.c:

<...>
static int netdev_offload_vport_dpdk_flow_put(...)
{
...
}

static int netdev_offload_vport_dpdk_flow_del(...)
{
...
}

static int
netdev_offload_vport_dpdk_init_flow_api(struct netdev *netdev)
{
if (netdev_vport_is_vport_class(netdev->netdev_class)
&& netdev_vport_has_system_port(netdev)) {
VLOG_DBG("%s: vport has backing system interface. Skipping.",
 netdev_get_name(netdev));
return EOPNOTSUPP;
}
return strcmp(netdev_get_type(netdev), "vxlan");
}

const struct netdev_flow_api netdev_offload_vport_dpdk = {
.type = "dpdk_flow_api",
.flow_put = netdev_offload_vport_dpdk_flow_put,
.flow_del = netdev_offload_vport_dpdk_flow_del,
.init_flow_api = netdev_offload_vport_dpdk_init_flow_api,
};


And add following line to lib/dpdk.c:

netdev_register_flow_api_provider(_offload_vport_dpdk);


And following to lib/netdev-offload-provider.h:

extern const struct netdev_flow_api netdev_offload_vport_dpdk;

> 
>>> diff --git a/lib/netdev-offload-dpdk.c b/lib/netdev-offload-dpdk.c
>>> index b7b0616ec..32f23c401 100644
>>> --- a/lib/netdev-offload-dpdk.c
>>> +++ b/lib/netdev-offload-dpdk.c
>>> @@ -760,6 +760,10 @@ netdev_offload_dpdk_init_flow_api(struct netdev
>> *netdev)
>>>  return EOPNOTSUPP;
>>>  }
>>>
>>> +if (!strcmp(netdev_get_name(netdev), "vxlan")) {
>>
>> Sorry,
>> s/netdev_get_name/netdev_get_type/
>>
>>> +return 0;
> 
> Having said all the above - we still need a way to correctly select between 
> vport-netdev API versus vport-system API.
> Reading your suggestion I am still not sure we have a solution here. Say we 
> have a system bridge and a netdev 

Re: [ovs-dev] [PATCH v4 1/4] netdev: Dynamic per-port Flow API.

2019-05-23 Thread Ophir Munk



> -Original Message-
> From: Ilya Maximets 
> Sent: Wednesday, May 22, 2019 2:50 PM
> To: Ophir Munk ; Roi Dayan
> ; ovs-dev@openvswitch.org
> Cc: Ian Stokes ; Flavio Leitner ;
> Kevin Traynor ; Roni Bar Yanai
> ; Finn Christensen ; Ben Pfaff
> ; Simon Horman ; Olga
> Shern ; Asaf Penso ; Majd
> Dibbiny 
> Subject: Re: [PATCH v4 1/4] netdev: Dynamic per-port Flow API.
> 
> 
> 
> On 22.05.2019 13:15, Ilya Maximets wrote:
> > On 22.05.2019 1:12, Ophir Munk wrote:
> >>
> >>> -Original Message-
> >>> From: Roi Dayan
> >>> Sent: Tuesday, May 21, 2019 7:48 PM
> >>> To: Ilya Maximets ; ovs-
> d...@openvswitch.org
> >>> Cc: Ian Stokes ; Flavio Leitner
> >>> ; Ophir Munk ; Kevin
> Traynor
> >>> ; Roni Bar Yanai ; Finn
> >>> Christensen ; Ben Pfaff ; Simon
> Horman
> >>> 
> >>> Subject: Re: [PATCH v4 1/4] netdev: Dynamic per-port Flow API.
> >>>
> >>>
> >>> Acked-by: Roi Dayan 
> >>
> >> Hi Ilya,
> >> Can you please send a patch for the detection of netdev vport on top of
> this series (as you have already started suggesting in ML discussions)?
> >> I will then test it and will make sure it's applicable with this series. I 
> >> think it
> is better to do that before series acceptance.
> >> What do you think?
> >
> > Hi.
> > Actually patches are already on a list. You only need to add few lines
> > to make them allow vxlan for netdev-offload-dpdk.
> >
> > Apply following patch sets on top of this one:
> >
> >  https://patchwork.ozlabs.org/project/openvswitch/list/?series=107534

FYI - applying this patch succeeded, however applying the next patch failed 
unless I applied 
patches 2/4, 3/4/ 4/4 first and only then I applied the next patch.

> >  https://patchwork.ozlabs.org/project/openvswitch/list/?series=107545
> >
> >
> > Change below should than allow you to use dpdk offloading for vxlan ports:

Why do you want to use dpdk offloading for vxlan ports?
We need to use vport-netdev offloading for vxlan-netdev ports.
We need to use dpdk offloading for dpdk ports.
Vxlan-netdev offloading and dpdk offloading have a different implementation
(unlike the system case where vxlan-system offloading and system offloading are 
identical).

I see four required offloading APIs:
1. system
2. dpdk
3. vport under system (currently it is identical to system API)
4. New vport under netdev.

The first three APIs exist. The last (vxlan-netdev) will be sent soon. 

I see two options for adding vxlan-netdev API.
1. Create a new dedicated vport-netdev offload class. 

2. Having vport-netdev API to be identical to dpdk API but since the 
implementations are different we will have to know the type ("dpdk" versus 
"vxlan"). 
In pseudo code:
If (type=="dpdk")
{
   // handle dpdk offloading
}
If (type=="vxlan")
{
   // handle vxlan offloading
}

I prefer the first option.

> > diff --git a/lib/netdev-offload-dpdk.c b/lib/netdev-offload-dpdk.c
> > index b7b0616ec..32f23c401 100644
> > --- a/lib/netdev-offload-dpdk.c
> > +++ b/lib/netdev-offload-dpdk.c
> > @@ -760,6 +760,10 @@ netdev_offload_dpdk_init_flow_api(struct netdev
> *netdev)
> >  return EOPNOTSUPP;
> >  }
> >
> > +if (!strcmp(netdev_get_name(netdev), "vxlan")) {
> 
> Sorry,
> s/netdev_get_name/netdev_get_type/
> 
> > +return 0;

Having said all the above - we still need a way to correctly select between 
vport-netdev API versus vport-system API.
Reading your suggestion I am still not sure we have a solution here. Say we 
have a system bridge and a netdev bridge both with a vxlan port.
When the vxlan-netdev is checked first by the system-init API it will pass the 
checking and it will be added as a vxlan-system. Right?
Can you please advise?

> > +}
> > +
> >  return netdev_dpdk_flow_api_supported(netdev) ? 0 : EOPNOTSUPP;
> > }
> >
> > ---
> >
> > Best regards, Ilya Maximets.
> >

Regards,
Ophir Munk

___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [RFC v2 5/5] dpif-netdev: Catch reloads faster.

2019-05-23 Thread David Marchand
On Wed, May 22, 2019 at 3:26 PM Kevin Traynor  wrote:

> On 14/05/2019 17:33, David Marchand wrote:
> > Looking at the reload flag only every 1024 loops can be a long time
> > under load, since we might be handling 32 packets per iteration, which
> > means 32k packets.
>
> 32 packets is the burst size for each poll to each rxq, but there may be
> multiple rxqs to be polled in that loop, so it could be 32 * num of rxqs
> polled by this pmd * 1024
>

Yes, I will fix this for the non rfc patchset.

-- 
David Marchand
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [RFC v2 1/5] dpif-netdev: Convert exit latch to flag.

2019-05-23 Thread David Marchand
On Wed, May 22, 2019 at 3:10 PM Kevin Traynor  wrote:

> On 14/05/2019 17:33, David Marchand wrote:
> > No need for a latch here since we don't have to wait.
> > A simple boolean flag is enough.
> >
> > The memory order on the reload flag is changed to rel-acq ordering to
> > serve as a synchronisation point between the pmd threads and the control
> > thread that asks for termination.
> >
> > Fixes: e4cfed38b159 ("dpif-netdev: Add poll-mode-device thread.")
> > Signed-off-by: David Marchand 
> > ---
> >  lib/dpif-netdev.c | 13 ++---
> >  1 file changed, 6 insertions(+), 7 deletions(-)
> >
> > ---
> > Changelog since v1:
> > - added memory ordering on 'reload' atomic to serve as a synchronisation
> >   point between control thread and pmd threads
> >
> > diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
> > index 5a6f2ab..37366e2 100644
> > --- a/lib/dpif-netdev.c
> > +++ b/lib/dpif-netdev.c
> > @@ -681,10 +681,10 @@ struct dp_netdev_pmd_thread {
> >  /* Current context of the PMD thread. */
> >  struct dp_netdev_pmd_thread_ctx ctx;
> >
> > -struct latch exit_latch;/* For terminating the pmd thread.
> */
>
> I don't think "latch.h" is needed anymore in the file so it's include
> could be removed too
>

Indeed, thanks.

-- 
David Marchand
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev