From patchwork Thu Sep 7 15:15:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xing, Beilei" X-Patchwork-Id: 131213 X-Patchwork-Delegate: qi.z.zhang@intel.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4773C42532; Thu, 7 Sep 2023 08:57:48 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0E369402C6; Thu, 7 Sep 2023 08:57:30 +0200 (CEST) Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.136]) by mails.dpdk.org (Postfix) with ESMTP id 460C0402D8 for ; Thu, 7 Sep 2023 08:57:27 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1694069847; x=1725605847; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=kRGCzXeuatN815mUfUDHml3DhXOYzNt8532AnIaQkqI=; b=GVxWNidqph8SwRzVIFoOLQ6WafCICsbcs1wjJA7ykxWVdhah4DiwZXba dOw+pWinw0vd+nRyCxAxE75ncqhmsZmPAQLyQiNTAJcSzI3AQY5qvmBDS f1s53p52k9lnDfer/tyPjWmEFTHUVY0qaHze1ebaP/EG8VJYBhCCNjqej olT8mjA/2d79kVgZhH8fyIreAxrV5jXgN1knmdi8ghKZnNoVLfzhUW2/0 NRMPyKiQJ/Bsb4TETMVa+B/nOpAPUosf8PIai89+M98XYZQAHKnHowuHF Es46hZErBZfvvxWvM3SxvDLGIIzsIjLqi2m0GgwYrDpgD6IJgOX8hHs5e g==; X-IronPort-AV: E=McAfee;i="6600,9927,10825"; a="356758105" X-IronPort-AV: E=Sophos;i="6.02,234,1688454000"; d="scan'208";a="356758105" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Sep 2023 23:57:26 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10825"; a="885035763" X-IronPort-AV: E=Sophos;i="6.02,234,1688454000"; d="scan'208";a="885035763" Received: from dpdk-beileix-icelake.sh.intel.com ([10.67.116.248]) by fmsmga001.fm.intel.com with ESMTP; 06 Sep 2023 23:57:12 -0700 From: beilei.xing@intel.com To: jingjing.wu@intel.com Cc: dev@dpdk.org, mingxia.liu@intel.com, Beilei Xing , Qi Zhang Subject: [PATCH v3 03/11] net/cpfl: refine handle virtual channel message Date: Thu, 7 Sep 2023 15:15:58 +0000 Message-Id: <20230907151606.849612-4-beilei.xing@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230907151606.849612-1-beilei.xing@intel.com> References: <20230816150541.144532-1-beilei.xing@intel.com> <20230907151606.849612-1-beilei.xing@intel.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Beilei Xing Refine handle virtual channel event message. Signed-off-by: Qi Zhang Signed-off-by: Beilei Xing --- drivers/net/cpfl/cpfl_ethdev.c | 46 ++++++++++++++++------------------ 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/drivers/net/cpfl/cpfl_ethdev.c b/drivers/net/cpfl/cpfl_ethdev.c index 92fe92c00f..6b6e9b37b1 100644 --- a/drivers/net/cpfl/cpfl_ethdev.c +++ b/drivers/net/cpfl/cpfl_ethdev.c @@ -1450,40 +1450,50 @@ cpfl_parse_devargs(struct rte_pci_device *pci_dev, struct cpfl_adapter_ext *adap return ret; } -static struct idpf_vport * +static struct cpfl_vport * cpfl_find_vport(struct cpfl_adapter_ext *adapter, uint32_t vport_id) { - struct idpf_vport *vport = NULL; + struct cpfl_vport *vport = NULL; int i; for (i = 0; i < adapter->cur_vport_nb; i++) { - vport = &adapter->vports[i]->base; - if (vport->vport_id != vport_id) + vport = adapter->vports[i]; + if (vport->base.vport_id != vport_id) continue; else return vport; } - return vport; + return NULL; } static void -cpfl_handle_event_msg(struct idpf_vport *vport, uint8_t *msg, uint16_t msglen) +cpfl_handle_vchnl_event_msg(struct cpfl_adapter_ext *adapter, uint8_t *msg, uint16_t msglen) { struct virtchnl2_event *vc_event = (struct virtchnl2_event *)msg; - struct rte_eth_dev_data *data = vport->dev_data; - struct rte_eth_dev *dev = &rte_eth_devices[data->port_id]; + struct cpfl_vport *vport; + struct rte_eth_dev_data *data; + struct rte_eth_dev *dev; if (msglen < sizeof(struct virtchnl2_event)) { PMD_DRV_LOG(ERR, "Error event"); return; } + vport = cpfl_find_vport(adapter, vc_event->vport_id); + if (!vport) { + PMD_DRV_LOG(ERR, "Can't find vport."); + return; + } + + data = vport->itf.data; + dev = &rte_eth_devices[data->port_id]; + switch (vc_event->event) { case VIRTCHNL2_EVENT_LINK_CHANGE: PMD_DRV_LOG(DEBUG, "VIRTCHNL2_EVENT_LINK_CHANGE"); - vport->link_up = !!(vc_event->link_status); - vport->link_speed = vc_event->link_speed; + vport->base.link_up = !!(vc_event->link_status); + vport->base.link_speed = vc_event->link_speed; cpfl_dev_link_update(dev, 0); break; default: @@ -1498,10 +1508,8 @@ cpfl_handle_virtchnl_msg(struct cpfl_adapter_ext *adapter) struct idpf_adapter *base = &adapter->base; struct idpf_dma_mem *dma_mem = NULL; struct idpf_hw *hw = &base->hw; - struct virtchnl2_event *vc_event; struct idpf_ctlq_msg ctlq_msg; enum idpf_mbx_opc mbx_op; - struct idpf_vport *vport; uint16_t pending = 1; uint32_t vc_op; int ret; @@ -1523,18 +1531,8 @@ cpfl_handle_virtchnl_msg(struct cpfl_adapter_ext *adapter) switch (mbx_op) { case idpf_mbq_opc_send_msg_to_peer_pf: if (vc_op == VIRTCHNL2_OP_EVENT) { - if (ctlq_msg.data_len < sizeof(struct virtchnl2_event)) { - PMD_DRV_LOG(ERR, "Error event"); - return; - } - vc_event = (struct virtchnl2_event *)base->mbx_resp; - vport = cpfl_find_vport(adapter, vc_event->vport_id); - if (!vport) { - PMD_DRV_LOG(ERR, "Can't find vport."); - return; - } - cpfl_handle_event_msg(vport, base->mbx_resp, - ctlq_msg.data_len); + cpfl_handle_vchnl_event_msg(adapter, adapter->base.mbx_resp, + ctlq_msg.data_len); } else { if (vc_op == base->pend_cmd) notify_cmd(base, base->cmd_retval);