From patchwork Thu Nov 6 12:53:48 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Zhang, Helin" X-Patchwork-Id: 1160 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id AD9167EC4; Thu, 6 Nov 2014 13:44:45 +0100 (CET) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id 6CAFB7F35 for ; Thu, 6 Nov 2014 13:44:41 +0100 (CET) Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga102.fm.intel.com with ESMTP; 06 Nov 2014 04:54:07 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.07,325,1413270000"; d="scan'208";a="627625072" Received: from shvmail01.sh.intel.com ([10.239.29.42]) by fmsmga002.fm.intel.com with ESMTP; 06 Nov 2014 04:54:06 -0800 Received: from shecgisg004.sh.intel.com (shecgisg004.sh.intel.com [10.239.29.89]) by shvmail01.sh.intel.com with ESMTP id sA6Cs4s6010862; Thu, 6 Nov 2014 20:54:04 +0800 Received: from shecgisg004.sh.intel.com (localhost [127.0.0.1]) by shecgisg004.sh.intel.com (8.13.6/8.13.6/SuSE Linux 0.8) with ESMTP id sA6Cs2gP017975; Thu, 6 Nov 2014 20:54:04 +0800 Received: (from hzhan75@localhost) by shecgisg004.sh.intel.com (8.13.6/8.13.6/Submit) id sA6Cs2Xh017971; Thu, 6 Nov 2014 20:54:02 +0800 From: Helin Zhang To: dev@dpdk.org Date: Thu, 6 Nov 2014 20:53:48 +0800 Message-Id: <1415278430-17920-4-git-send-email-helin.zhang@intel.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1415278430-17920-1-git-send-email-helin.zhang@intel.com> References: <1410706109-30448-1-git-send-email-helin.zhang@intel.com> <1415278430-17920-1-git-send-email-helin.zhang@intel.com> Subject: [dpdk-dev] [PATCH v3 3/5] i40e: renaming and code style fix X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Rename some local variables to express more accurately and briefly. Fix several code style issues reported by checkpatch.pl. Line warpping for some source lines which has more than 80 characters, and merge lines together for those source lines which does not need any line wrapping actually. Add macros for numeric or calculating memory sizes. Signed-off-by: Helin Zhang --- lib/librte_pmd_i40e/i40e_ethdev_vf.c | 86 ++++++++++++++++++------------------ lib/librte_pmd_i40e/i40e_pf.c | 46 +++++++++---------- lib/librte_pmd_i40e/i40e_pf.h | 29 +++++++++--- 3 files changed, 84 insertions(+), 77 deletions(-) v2 changes: * Put all the renaming and code style fixes into a patch. * Added several more code style fixes for i40e_pf.c. v3 changes: * Added a macro of calculating memory size for configuring vsi queues. * Used array of memory in stack to replace the memory allocated by rte_zmalloc(). diff --git a/lib/librte_pmd_i40e/i40e_ethdev_vf.c b/lib/librte_pmd_i40e/i40e_ethdev_vf.c index 966f02f..9a8cdc8 100644 --- a/lib/librte_pmd_i40e/i40e_ethdev_vf.c +++ b/lib/librte_pmd_i40e/i40e_ethdev_vf.c @@ -537,78 +537,76 @@ static int i40evf_configure_queues(struct rte_eth_dev *dev) { struct i40e_vf *vf = I40EVF_DEV_PRIVATE_TO_VF(dev->data->dev_private); - struct i40e_virtchnl_vsi_queue_config_info *queue_info; - struct i40e_virtchnl_queue_pair_info *queue_cfg; struct i40e_rx_queue **rxq = (struct i40e_rx_queue **)dev->data->rx_queues; struct i40e_tx_queue **txq = (struct i40e_tx_queue **)dev->data->tx_queues; - int i, len, nb_qpairs, num_rxq, num_txq; - int err; + struct i40e_virtchnl_vsi_queue_config_info *vc_vqci; + struct i40e_virtchnl_queue_pair_info *vc_qpi; struct vf_cmd_info args; - struct rte_pktmbuf_pool_private *mbp_priv; + uint16_t i, nb_qp = vf->num_queue_pairs; + const uint32_t size = + I40E_VIRTCHNL_CONFIG_VSI_QUEUES_SIZE(vc_vqci, nb_qp); + uint8_t buff[size]; + int ret; - nb_qpairs = vf->num_queue_pairs; - len = sizeof(*queue_info) + sizeof(*queue_cfg) * nb_qpairs; - queue_info = rte_zmalloc("queue_info", len, 0); - if (queue_info == NULL) { - PMD_INIT_LOG(ERR, "failed alloc memory for queue_info"); - return -1; - } - queue_info->vsi_id = vf->vsi_res->vsi_id; - queue_info->num_queue_pairs = nb_qpairs; - queue_cfg = queue_info->qpair; + memset(buff, 0, sizeof(buff)); + vc_vqci = (struct i40e_virtchnl_vsi_queue_config_info *)buff; + vc_vqci->vsi_id = vf->vsi_res->vsi_id; + vc_vqci->num_queue_pairs = nb_qp; + vc_qpi = vc_vqci->qpair; - num_rxq = dev->data->nb_rx_queues; - num_txq = dev->data->nb_tx_queues; /* * PF host driver required to configure queues in pairs, which means * rxq_num should equals to txq_num. The actual usage won't always * work that way. The solution is fills 0 with HW ring option in case * they are not equal. */ - for (i = 0; i < nb_qpairs; i++) { + for (i = 0; i < nb_qp; i++) { /*Fill TX info */ - queue_cfg->txq.vsi_id = queue_info->vsi_id; - queue_cfg->txq.queue_id = i; - if (i < num_txq) { - queue_cfg->txq.ring_len = txq[i]->nb_tx_desc; - queue_cfg->txq.dma_ring_addr = txq[i]->tx_ring_phys_addr; + vc_qpi->txq.vsi_id = vc_vqci->vsi_id; + vc_qpi->txq.queue_id = i; + if (i < dev->data->nb_tx_queues) { + vc_qpi->txq.ring_len = txq[i]->nb_tx_desc; + vc_qpi->txq.dma_ring_addr = txq[i]->tx_ring_phys_addr; } else { - queue_cfg->txq.ring_len = 0; - queue_cfg->txq.dma_ring_addr = 0; + vc_qpi->txq.ring_len = 0; + vc_qpi->txq.dma_ring_addr = 0; } /* Fill RX info */ - queue_cfg->rxq.vsi_id = queue_info->vsi_id; - queue_cfg->rxq.queue_id = i; - queue_cfg->rxq.max_pkt_size = vf->max_pkt_len; - if (i < num_rxq) { - mbp_priv = rte_mempool_get_priv(rxq[i]->mp); - queue_cfg->rxq.databuffer_size = mbp_priv->mbuf_data_room_size - - RTE_PKTMBUF_HEADROOM;; - queue_cfg->rxq.ring_len = rxq[i]->nb_rx_desc; - queue_cfg->rxq.dma_ring_addr = rxq[i]->rx_ring_phys_addr;; + vc_qpi->rxq.vsi_id = vc_vqci->vsi_id; + vc_qpi->rxq.queue_id = i; + vc_qpi->rxq.max_pkt_size = vf->max_pkt_len; + if (i < dev->data->nb_rx_queues) { + struct rte_pktmbuf_pool_private *mbp_priv = + rte_mempool_get_priv(rxq[i]->mp); + + vc_qpi->rxq.databuffer_size = + mbp_priv->mbuf_data_room_size - + RTE_PKTMBUF_HEADROOM; + vc_qpi->rxq.ring_len = rxq[i]->nb_rx_desc; + vc_qpi->rxq.dma_ring_addr = rxq[i]->rx_ring_phys_addr; } else { - queue_cfg->rxq.ring_len = 0; - queue_cfg->rxq.dma_ring_addr = 0; - queue_cfg->rxq.databuffer_size = 0; + vc_qpi->rxq.ring_len = 0; + vc_qpi->rxq.dma_ring_addr = 0; + vc_qpi->rxq.databuffer_size = 0; } - queue_cfg++; + vc_qpi++; } + memset(&args, 0, sizeof(args)); args.ops = I40E_VIRTCHNL_OP_CONFIG_VSI_QUEUES; - args.in_args = (u8 *)queue_info; - args.in_args_size = len; + args.in_args = (uint8_t *)vc_vqci; + args.in_args_size = size; args.out_buffer = cmd_result_buffer; args.out_size = I40E_AQ_BUF_SZ; - err = i40evf_execute_vf_cmd(dev, &args); - if (err) + ret = i40evf_execute_vf_cmd(dev, &args); + if (ret) PMD_DRV_LOG(ERR, "fail to execute command " "OP_CONFIG_VSI_QUEUES"); - rte_free(queue_info); - return err; + return ret; } static int diff --git a/lib/librte_pmd_i40e/i40e_pf.c b/lib/librte_pmd_i40e/i40e_pf.c index f9049e1..f4b4f2d 100644 --- a/lib/librte_pmd_i40e/i40e_pf.c +++ b/lib/librte_pmd_i40e/i40e_pf.c @@ -413,29 +413,28 @@ i40e_pf_host_process_cmd_config_vsi_queues(struct i40e_pf_vf *vf, { struct i40e_hw *hw = I40E_PF_TO_HW(vf->pf); struct i40e_vsi *vsi = vf->vsi; - int ret = I40E_SUCCESS; - struct i40e_virtchnl_vsi_queue_config_info *qconfig = - (struct i40e_virtchnl_vsi_queue_config_info *)msg; - int i; - struct i40e_virtchnl_queue_pair_info *qpair; + struct i40e_virtchnl_vsi_queue_config_info *vc_vqci = + (struct i40e_virtchnl_vsi_queue_config_info *)msg; + struct i40e_virtchnl_queue_pair_info *vc_qpi; + int i, ret = I40E_SUCCESS; - if (msg == NULL || msglen <= sizeof(*qconfig) || - qconfig->num_queue_pairs > vsi->nb_qps) { + if (msg == NULL || msglen <= sizeof(*vc_vqci) || + vc_vqci->num_queue_pairs > vsi->nb_qps) { PMD_DRV_LOG(ERR, "vsi_queue_config_info argument wrong"); ret = I40E_ERR_PARAM; goto send_msg; } - qpair = qconfig->qpair; - for (i = 0; i < qconfig->num_queue_pairs; i++) { - if (qpair[i].rxq.queue_id > vsi->nb_qps - 1 || - qpair[i].txq.queue_id > vsi->nb_qps - 1) { + vc_qpi = vc_vqci->qpair; + for (i = 0; i < vc_vqci->num_queue_pairs; i++) { + if (vc_qpi[i].rxq.queue_id > vsi->nb_qps - 1 || + vc_qpi[i].txq.queue_id > vsi->nb_qps - 1) { ret = I40E_ERR_PARAM; goto send_msg; } /* Apply VF RX queue setting to HMC */ - if (i40e_pf_host_hmc_config_rxq(hw, vf, &qpair[i].rxq) + if (i40e_pf_host_hmc_config_rxq(hw, vf, &vc_qpi[i].rxq) != I40E_SUCCESS) { PMD_DRV_LOG(ERR, "Configure RX queue HMC failed"); ret = I40E_ERR_PARAM; @@ -443,7 +442,7 @@ i40e_pf_host_process_cmd_config_vsi_queues(struct i40e_pf_vf *vf, } /* Apply VF TX queue setting to HMC */ - if (i40e_pf_host_hmc_config_txq(hw, vf, &qpair[i].txq) + if (i40e_pf_host_hmc_config_txq(hw, vf, &vc_qpi[i].txq) != I40E_SUCCESS) { PMD_DRV_LOG(ERR, "Configure TX queue HMC failed"); ret = I40E_ERR_PARAM; @@ -454,6 +453,7 @@ i40e_pf_host_process_cmd_config_vsi_queues(struct i40e_pf_vf *vf, send_msg: i40e_pf_host_send_msg_to_vf(vf, I40E_VIRTCHNL_OP_CONFIG_VSI_QUEUES, ret, NULL, 0); + return ret; } @@ -660,7 +660,6 @@ send_msg: return ret; } - static int i40e_pf_host_process_cmd_add_vlan(struct i40e_pf_vf *vf, uint8_t *msg, uint16_t msglen) @@ -874,8 +873,7 @@ i40e_pf_host_handle_vf_msg(struct rte_eth_dev *dev, break; case I40E_VIRTCHNL_OP_CONFIG_VSI_QUEUES: PMD_DRV_LOG(INFO, "OP_CONFIG_VSI_QUEUES received"); - i40e_pf_host_process_cmd_config_vsi_queues(vf, - msg, msglen); + i40e_pf_host_process_cmd_config_vsi_queues(vf, msg, msglen); break; case I40E_VIRTCHNL_OP_CONFIG_IRQ_MAP: PMD_DRV_LOG(INFO, "OP_CONFIG_IRQ_MAP received"); @@ -883,23 +881,19 @@ i40e_pf_host_handle_vf_msg(struct rte_eth_dev *dev, break; case I40E_VIRTCHNL_OP_ENABLE_QUEUES: PMD_DRV_LOG(INFO, "OP_ENABLE_QUEUES received"); - i40e_pf_host_process_cmd_enable_queues(vf, - msg, msglen); + i40e_pf_host_process_cmd_enable_queues(vf, msg, msglen); break; case I40E_VIRTCHNL_OP_DISABLE_QUEUES: PMD_DRV_LOG(INFO, "OP_DISABLE_QUEUE received"); - i40e_pf_host_process_cmd_disable_queues(vf, - msg, msglen); + i40e_pf_host_process_cmd_disable_queues(vf, msg, msglen); break; case I40E_VIRTCHNL_OP_ADD_ETHER_ADDRESS: PMD_DRV_LOG(INFO, "OP_ADD_ETHER_ADDRESS received"); - i40e_pf_host_process_cmd_add_ether_address(vf, - msg, msglen); + i40e_pf_host_process_cmd_add_ether_address(vf, msg, msglen); break; case I40E_VIRTCHNL_OP_DEL_ETHER_ADDRESS: PMD_DRV_LOG(INFO, "OP_DEL_ETHER_ADDRESS received"); - i40e_pf_host_process_cmd_del_ether_address(vf, - msg, msglen); + i40e_pf_host_process_cmd_del_ether_address(vf, msg, msglen); break; case I40E_VIRTCHNL_OP_ADD_VLAN: PMD_DRV_LOG(INFO, "OP_ADD_VLAN received"); @@ -936,8 +930,8 @@ i40e_pf_host_handle_vf_msg(struct rte_eth_dev *dev, PMD_DRV_LOG(ERR, "OP_FCOE received, not supported"); default: PMD_DRV_LOG(ERR, "%u received, not supported", opcode); - i40e_pf_host_send_msg_to_vf(vf, opcode, - I40E_ERR_PARAM, NULL, 0); + i40e_pf_host_send_msg_to_vf(vf, opcode, I40E_ERR_PARAM, + NULL, 0); break; } } diff --git a/lib/librte_pmd_i40e/i40e_pf.h b/lib/librte_pmd_i40e/i40e_pf.h index 41b6826..ce5a978 100644 --- a/lib/librte_pmd_i40e/i40e_pf.h +++ b/lib/librte_pmd_i40e/i40e_pf.h @@ -46,28 +46,43 @@ /* Default setting on number of VSIs that VF can contain */ #define I40E_DEFAULT_VF_VSI_NUM 1 +#define I40E_DPDK_OFFSET 0x100 + enum i40e_pf_vfr_state { I40E_PF_VFR_INPROGRESS = 0, I40E_PF_VFR_COMPLETED = 1, }; /* DPDK pf driver specific command to VF */ -enum i40e_virtchnl_ops_DPDK { - /* Keep some gap between Linu PF commands and DPDK PF specific commands */ - I40E_VIRTCHNL_OP_GET_LINK_STAT = I40E_VIRTCHNL_OP_EVENT + 0x100, +enum i40e_virtchnl_ops_dpdk { + /* + * Keep some gap between Linux PF commands and + * DPDK PF extended commands. + */ + I40E_VIRTCHNL_OP_GET_LINK_STAT = I40E_VIRTCHNL_OP_VERSION + + I40E_DPDK_OFFSET, I40E_VIRTCHNL_OP_CFG_VLAN_OFFLOAD, I40E_VIRTCHNL_OP_CFG_VLAN_PVID, }; + struct i40e_virtchnl_vlan_offload_info { uint16_t vsi_id; uint8_t enable_vlan_strip; uint8_t reserved; }; -/* I40E_VIRTCHNL_OP_CFG_VLAN_PVID - * VF sends this message to enable/disable pvid. If it's enable op, needs to specify the - * pvid. - * PF returns status code in retval. +/* + * Macro to calculate the memory size for configuring VSI queues + * via virtual channel. + */ +#define I40E_VIRTCHNL_CONFIG_VSI_QUEUES_SIZE(x, n) \ + (sizeof(*(x)) + sizeof((x)->qpair[0]) * (n)) + +/* + * I40E_VIRTCHNL_OP_CFG_VLAN_PVID + * VF sends this message to enable/disable pvid. If it's + * enable op, needs to specify the pvid. PF returns status + * code in retval. */ struct i40e_virtchnl_pvid_info { uint16_t vsi_id;