From patchwork Sun Jul 7 12:50:07 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Chaignon X-Patchwork-Id: 1128653 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=openvswitch.org (client-ip=140.211.169.12; helo=mail.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=orange.com Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 45hTDC71f1z9s3l for ; Sun, 7 Jul 2019 22:58:50 +1000 (AEST) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id A91E11EAE; Sun, 7 Jul 2019 12:58:46 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id A74881E9D for ; Sun, 7 Jul 2019 12:50:16 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.7.6 Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id F0BC9148 for ; Sun, 7 Jul 2019 12:50:15 +0000 (UTC) Received: by mail-wr1-f66.google.com with SMTP id n9so5033019wrr.4 for ; Sun, 07 Jul 2019 05:50:15 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:subject:message-id:mime-version :content-disposition:user-agent; bh=ofoLRpou0GgNJn5p01JhHtPZLTfgCHf7Ro8qddsYDCc=; b=rMieL15kigR5vow8zIgh+OmJxG3hnEF2x8xSfVwDYY4NUuW9JEh5ipbnWpJ6gEl5uq eksGaKQdCTNzj3UVjenLHi96FeRmXZqFl2XcNOj5yvD/1sqx93p29yIT92L2LK3MyLL6 Z80bKLgxz734Cq8Zf8/8xDSqA/c4GhxoCwgl2W6Q8akDUHxqLmzxP3/dml/cmdhNY/NE 9GBx/cJ1DbwGRMC6MQ4JYhI9aB/al/xFBdKVAFo/2UiqjE8iPnoreOeQZGSd2MRxUixt XhUqDf8fRnPnGQbm+lBMQo8scpaVwST1NY7s5vydsO/wVeCAs541SD5hUvUvES0b8Kho TSwg== X-Gm-Message-State: APjAAAVawY69VOWK+MG4nZm/1lDNoW5Ah7tSHjTR8H9b4LRmEoU73xB2 khy5hR40ji/TI+MPPp56FV4= X-Google-Smtp-Source: APXvYqy+eqIRyjMfIAQ4Ny85J7HOO8LtV/oGV+I/36fDgNeuDRHbyzH0R+cd8+L34+r1qR4Aa93syw== X-Received: by 2002:adf:f851:: with SMTP id d17mr13694920wrq.77.1562503814535; Sun, 07 Jul 2019 05:50:14 -0700 (PDT) Received: from Nover ([161.105.209.130]) by smtp.gmail.com with ESMTPSA id b2sm17793640wrp.72.2019.07.07.05.50.14 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Sun, 07 Jul 2019 05:50:14 -0700 (PDT) Date: Sun, 7 Jul 2019 14:50:07 +0200 From: Paul Chaignon To: dev@openvswitch.org Message-ID: <20190707125006.GA25323@Nover> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.9.4 (2018-02-28) X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Subject: [ovs-dev] [PATCH] treewide: Use packet batch APIs X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org This patch replaces direct accesses to dp_packet_batch and dp_packet internal components by the appropriate API calls. It extends commit 1270b6e52 (treewide: Wider use of packet batch APIs). This patch was generated using the following semantic patch (cf. http://coccinelle.lip6.fr). // @ dp_packet @ struct dp_packet_batch *b1; struct dp_packet_batch b2; struct dp_packet *p; expression e; @@ ( - b1->packets[b1->count++] = p; + dp_packet_batch_add(b1, p); | - b2.packets[b2.count++] = p; + dp_packet_batch_add(&b2, p); | - p->packet_type == htonl(PT_ETH) + dp_packet_is_eth(p) | - p->packet_type != htonl(PT_ETH) + !dp_packet_is_eth(p) | - b1->count == 0 + dp_packet_batch_is_empty(b1) | - !b1->count + dp_packet_batch_is_empty(b1) | b1->count = e; | b1->count++ | b2.count = e; | b2.count++ | - b1->count + dp_packet_batch_size(b1) | - b2.count + dp_packet_batch_size(&b2) ) // Signed-off-by: Paul Chaignon --- lib/dpif-netdev.c | 7 ++++--- lib/flow.c | 2 +- lib/netdev-dpdk.c | 3 ++- lib/netdev-dummy.c | 2 +- lib/packets.c | 4 ++-- lib/pcap-file.c | 2 +- 6 files changed, 11 insertions(+), 9 deletions(-) diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c index f4b59e41b..1b19b8870 100644 --- a/lib/dpif-netdev.c +++ b/lib/dpif-netdev.c @@ -4264,7 +4264,7 @@ dp_netdev_process_rxq_port(struct dp_netdev_pmd_thread *pmd, /* At least one packet received. */ *recirc_depth_get() = 0; pmd_thread_ctx_time_update(pmd); - batch_cnt = batch.count; + batch_cnt = dp_packet_batch_size(&batch); if (pmd_perf_metrics_enabled(pmd)) { /* Update batch histogram. */ s->current.batches++; @@ -6249,7 +6249,7 @@ packet_batch_per_flow_update(struct packet_batch_per_flow *batch, { batch->byte_count += dp_packet_size(packet); batch->tcp_flags |= tcp_flags; - batch->array.packets[batch->array.count++] = packet; + dp_packet_batch_add(&batch->array, packet); } static inline void @@ -6271,7 +6271,8 @@ packet_batch_per_flow_execute(struct packet_batch_per_flow *batch, struct dp_netdev_actions *actions; struct dp_netdev_flow *flow = batch->flow; - dp_netdev_flow_used(flow, batch->array.count, batch->byte_count, + dp_netdev_flow_used(flow, dp_packet_batch_size(&batch->array), + batch->byte_count, batch->tcp_flags, pmd->ctx.now / 1000); actions = dp_netdev_flow_get_actions(flow); diff --git a/lib/flow.c b/lib/flow.c index de9370449..31d1d191e 100644 --- a/lib/flow.c +++ b/lib/flow.c @@ -1101,7 +1101,7 @@ parse_tcp_flags(struct dp_packet *packet) ovs_be16 dl_type; uint8_t nw_frag = 0, nw_proto = 0; - if (packet->packet_type != htonl(PT_ETH)) { + if (!dp_packet_is_eth(packet)) { return 0; } diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c index a380b6ffe..b5168b939 100644 --- a/lib/netdev-dpdk.c +++ b/lib/netdev-dpdk.c @@ -2466,7 +2466,8 @@ netdev_dpdk_vhost_send(struct netdev *netdev, int qid, dpdk_do_tx_copy(netdev, qid, batch); dp_packet_delete_batch(batch, true); } else { - __netdev_dpdk_vhost_send(netdev, qid, batch->packets, batch->count); + __netdev_dpdk_vhost_send(netdev, qid, batch->packets, + dp_packet_batch_size(batch)); } return 0; } diff --git a/lib/netdev-dummy.c b/lib/netdev-dummy.c index f0c0fbae8..95e1a329a 100644 --- a/lib/netdev-dummy.c +++ b/lib/netdev-dummy.c @@ -1108,7 +1108,7 @@ netdev_dummy_send(struct netdev *netdev, int qid OVS_UNUSED, const void *buffer = dp_packet_data(packet); size_t size = dp_packet_size(packet); - if (packet->packet_type != htonl(PT_ETH)) { + if (!dp_packet_is_eth(packet)) { error = EPFNOSUPPORT; break; } diff --git a/lib/packets.c b/lib/packets.c index a8fd61fc0..e147e6874 100644 --- a/lib/packets.c +++ b/lib/packets.c @@ -246,7 +246,7 @@ push_eth(struct dp_packet *packet, const struct eth_addr *dst, { struct eth_header *eh; - ovs_assert(packet->packet_type != htonl(PT_ETH)); + ovs_assert(!dp_packet_is_eth(packet)); eh = dp_packet_resize_l2(packet, ETH_HEADER_LEN); eh->eth_dst = *dst; eh->eth_src = *src; @@ -265,7 +265,7 @@ pop_eth(struct dp_packet *packet) ovs_be16 ethertype; int increment; - ovs_assert(packet->packet_type == htonl(PT_ETH)); + ovs_assert(dp_packet_is_eth(packet)); ovs_assert(l3 != NULL); if (l2_5) { diff --git a/lib/pcap-file.c b/lib/pcap-file.c index e4e92b8c2..f0cac8e0f 100644 --- a/lib/pcap-file.c +++ b/lib/pcap-file.c @@ -282,7 +282,7 @@ ovs_pcap_write(struct pcap_file *p_file, struct dp_packet *buf) struct pcaprec_hdr prh; struct timeval tv; - ovs_assert(buf->packet_type == htonl(PT_ETH)); + ovs_assert(dp_packet_is_eth(buf)); xgettimeofday(&tv); prh.ts_sec = tv.tv_sec;