From 3f80d110cb9ad848f4a5e449bd889dfe4e64916c Mon Sep 17 00:00:00 2001 From: Open vSwitch CI Date: Dec 12 2024 19:58:16 +0000 Subject: Import openvswitch3.3-3.3.0-69 from Fast DataPath --- diff --git a/SOURCES/openvswitch-3.3.0.patch b/SOURCES/openvswitch-3.3.0.patch index df47a5b..c4119a1 100644 --- a/SOURCES/openvswitch-3.3.0.patch +++ b/SOURCES/openvswitch-3.3.0.patch @@ -2536,7 +2536,7 @@ index 8596741aa1..6e3091b939 100644 return af_inet_ifreq_ioctl(name, &ifr, SIOCSIFFLAGS, "SIOCSIFFLAGS"); diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c -index 45f61930d4..fd54f34692 100644 +index 45f61930d4..489a85f224 100644 --- a/lib/netdev-dpdk.c +++ b/lib/netdev-dpdk.c @@ -464,9 +464,8 @@ struct netdev_dpdk { @@ -2560,19 +2560,16 @@ index 45f61930d4..fd54f34692 100644 static bool is_dpdk_class(const struct netdev_class *class) { -@@ -1351,6 +1353,21 @@ dpdk_eth_dev_init(struct netdev_dpdk *dev) +@@ -1351,6 +1353,18 @@ dpdk_eth_dev_init(struct netdev_dpdk *dev) info.tx_offload_capa &= ~RTE_ETH_TX_OFFLOAD_TCP_CKSUM; } -+ if (!strcmp(info.driver_name, "net_ice") -+ || !strcmp(info.driver_name, "net_i40e") -+ || !strcmp(info.driver_name, "net_iavf") -+ || !strcmp(info.driver_name, "net_txgbe")) { ++ if (!strcmp(info.driver_name, "net_txgbe")) { + /* FIXME: Driver advertises the capability but doesn't seem + * to actually support it correctly. Can remove this once + * the driver is fixed on DPDK side. */ + VLOG_INFO("%s: disabled Tx outer udp checksum offloads for a " -+ "net/ice, net/i40e, net/iavf or net/txgbe port.", ++ "net/txgbe port.", + netdev_get_name(&dev->up)); + info.tx_offload_capa &= ~RTE_ETH_TX_OFFLOAD_OUTER_UDP_CKSUM; + info.tx_offload_capa &= ~RTE_ETH_TX_OFFLOAD_VXLAN_TNL_TSO; @@ -2582,7 +2579,7 @@ index 45f61930d4..fd54f34692 100644 if (info.tx_offload_capa & RTE_ETH_TX_OFFLOAD_IPV4_CKSUM) { dev->hw_ol_features |= NETDEV_TX_IPV4_CKSUM_OFFLOAD; } else { -@@ -1514,7 +1531,6 @@ common_construct(struct netdev *netdev, dpdk_port_t port_no, +@@ -1514,7 +1528,6 @@ common_construct(struct netdev *netdev, dpdk_port_t port_no, dev->virtio_features_state = OVS_VIRTIO_F_CLEAN; dev->attached = false; dev->started = false; @@ -2590,7 +2587,7 @@ index 45f61930d4..fd54f34692 100644 ovsrcu_init(&dev->qos_conf, NULL); -@@ -2137,13 +2153,11 @@ netdev_dpdk_run(const struct netdev_class *netdev_class OVS_UNUSED) +@@ -2137,13 +2150,11 @@ netdev_dpdk_run(const struct netdev_class *netdev_class OVS_UNUSED) if (!pending_reset) { continue; } @@ -2604,7 +2601,7 @@ index 45f61930d4..fd54f34692 100644 netdev_request_reconfigure(&dev->up); VLOG_DBG_RL(&rl, "%s: Device reset requested.", netdev_get_name(&dev->up)); -@@ -2364,17 +2378,16 @@ netdev_dpdk_set_config(struct netdev *netdev, const struct smap *args, +@@ -2364,17 +2375,16 @@ netdev_dpdk_set_config(struct netdev *netdev, const struct smap *args, struct eth_addr mac; if (!dpdk_port_is_representor(dev)) { @@ -2630,7 +2627,7 @@ index 45f61930d4..fd54f34692 100644 } else if (!eth_addr_equals(dev->requested_hwaddr, mac)) { dev->requested_hwaddr = mac; netdev_request_reconfigure(netdev); -@@ -2567,73 +2580,133 @@ static bool +@@ -2567,73 +2577,133 @@ static bool netdev_dpdk_prep_hwol_packet(struct netdev_dpdk *dev, struct rte_mbuf *mbuf) { struct dp_packet *pkt = CONTAINER_OF(mbuf, struct dp_packet, mbuf); @@ -2814,7 +2811,7 @@ index 45f61930d4..fd54f34692 100644 return true; } -@@ -2664,6 +2737,35 @@ netdev_dpdk_prep_hwol_batch(struct netdev_dpdk *dev, struct rte_mbuf **pkts, +@@ -2664,6 +2734,35 @@ netdev_dpdk_prep_hwol_batch(struct netdev_dpdk *dev, struct rte_mbuf **pkts, return cnt; } @@ -2850,7 +2847,7 @@ index 45f61930d4..fd54f34692 100644 /* Tries to transmit 'pkts' to txq 'qid' of device 'dev'. Takes ownership of * 'pkts', even in case of failure. * -@@ -2680,6 +2782,8 @@ netdev_dpdk_eth_tx_burst(struct netdev_dpdk *dev, int qid, +@@ -2680,6 +2779,8 @@ netdev_dpdk_eth_tx_burst(struct netdev_dpdk *dev, int qid, VLOG_WARN_RL(&rl, "%s: Output batch contains invalid packets. " "Only %u/%u are valid: %s", netdev_get_name(&dev->up), nb_tx_prep, cnt, rte_strerror(rte_errno)); @@ -2859,7 +2856,7 @@ index 45f61930d4..fd54f34692 100644 } while (nb_tx != nb_tx_prep) { -@@ -4523,10 +4627,11 @@ netdev_dpdk_get_mempool_info(struct unixctl_conn *conn, +@@ -4523,10 +4624,11 @@ netdev_dpdk_get_mempool_info(struct unixctl_conn *conn, int argc, const char *argv[], void *aux OVS_UNUSED) { @@ -2874,7 +2871,7 @@ index 45f61930d4..fd54f34692 100644 if (argc == 2) { netdev = netdev_from_name(argv[1]); -@@ -4550,10 +4655,14 @@ netdev_dpdk_get_mempool_info(struct unixctl_conn *conn, +@@ -4550,10 +4652,14 @@ netdev_dpdk_get_mempool_info(struct unixctl_conn *conn, ovs_mutex_lock(&dev->mutex); ovs_mutex_lock(&dpdk_mp_mutex); @@ -2893,7 +2890,7 @@ index 45f61930d4..fd54f34692 100644 ovs_mutex_unlock(&dpdk_mp_mutex); ovs_mutex_unlock(&dev->mutex); -@@ -4565,7 +4674,11 @@ netdev_dpdk_get_mempool_info(struct unixctl_conn *conn, +@@ -4565,7 +4671,11 @@ netdev_dpdk_get_mempool_info(struct unixctl_conn *conn, fclose(stream); @@ -2906,7 +2903,7 @@ index 45f61930d4..fd54f34692 100644 out: free(response); netdev_close(netdev); -@@ -5965,6 +6078,7 @@ static int +@@ -5965,6 +6075,7 @@ static int netdev_dpdk_reconfigure(struct netdev *netdev) { struct netdev_dpdk *dev = netdev_dpdk_cast(netdev); @@ -2914,7 +2911,7 @@ index 45f61930d4..fd54f34692 100644 bool try_rx_steer; int err = 0; -@@ -5976,6 +6090,9 @@ netdev_dpdk_reconfigure(struct netdev *netdev) +@@ -5976,6 +6087,9 @@ netdev_dpdk_reconfigure(struct netdev *netdev) dev->requested_n_rxq += 1; } @@ -2924,7 +2921,7 @@ index 45f61930d4..fd54f34692 100644 if (netdev->n_txq == dev->requested_n_txq && netdev->n_rxq == dev->requested_n_rxq && dev->rx_steer_flags == dev->requested_rx_steer_flags -@@ -5985,7 +6102,7 @@ netdev_dpdk_reconfigure(struct netdev *netdev) +@@ -5985,7 +6099,7 @@ netdev_dpdk_reconfigure(struct netdev *netdev) && dev->txq_size == dev->requested_txq_size && eth_addr_equals(dev->hwaddr, dev->requested_hwaddr) && dev->socket_id == dev->requested_socket_id @@ -2933,7 +2930,7 @@ index 45f61930d4..fd54f34692 100644 /* Reconfiguration is unnecessary */ goto out; -@@ -5994,10 +6111,14 @@ netdev_dpdk_reconfigure(struct netdev *netdev) +@@ -5994,10 +6108,14 @@ netdev_dpdk_reconfigure(struct netdev *netdev) retry: dpdk_rx_steer_unconfigure(dev); diff --git a/SPECS/openvswitch3.3.spec b/SPECS/openvswitch3.3.spec index 2fe8ea7..c81c5fc 100644 --- a/SPECS/openvswitch3.3.spec +++ b/SPECS/openvswitch3.3.spec @@ -57,7 +57,7 @@ Summary: Open vSwitch Group: System Environment/Daemons daemon/database/utilities URL: http://www.openvswitch.org/ Version: 3.3.0 -Release: 68%{?dist} +Release: 69%{?dist} # Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the # lib/sflow*.[ch] files are SISSL @@ -769,6 +769,12 @@ exit 0 %endif %changelog +* Thu Dec 12 2024 Open vSwitch CI - 3.3.0-69 +- Merging upstream branch-3.3 [RH git: c7cf50c507] + Commit list: + 6278e92779 netdev-dpdk: Restore outer UDP checksum for Intel nics. + + * Wed Dec 11 2024 Open vSwitch CI - 3.3.0-68 - Merging upstream branch-3.3 [RH git: 1455c3c5c4] Commit list: