From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-0016ce01.pphosted.com (0016ce01.pphosted.com [67.231.156.153]) by dpdk.org (Postfix) with ESMTP id 5EE4FFA31 for ; Sat, 3 Dec 2016 10:12:21 +0100 (CET) Received: from pps.filterd (m0085408.ppops.net [127.0.0.1]) by mx0b-0016ce01.pphosted.com (8.16.0.20/8.16.0.20) with SMTP id uB39BdgZ020685; Sat, 3 Dec 2016 01:12:18 -0800 Received: from avcashub1.qlogic.com ([198.186.0.116]) by mx0b-0016ce01.pphosted.com with ESMTP id 26ya8v9a23-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Sat, 03 Dec 2016 01:12:18 -0800 Received: from avluser05.qlc.com (10.1.113.115) by qlc.com (10.1.4.191) with Microsoft SMTP Server id 14.3.235.1; Sat, 3 Dec 2016 01:12:17 -0800 Received: (from rmody@localhost) by avluser05.qlc.com (8.14.4/8.14.4/Submit) id uB39CHat012233; Sat, 3 Dec 2016 01:12:17 -0800 X-Authentication-Warning: avluser05.qlc.com: rmody set sender to Rasesh.Mody@cavium.com using -f From: Rasesh Mody To: CC: , Rasesh Mody Date: Sat, 3 Dec 2016 01:11:12 -0800 Message-ID: <1480756289-11835-9-git-send-email-Rasesh.Mody@cavium.com> X-Mailer: git-send-email 1.7.10.3 In-Reply-To: <1480756289-11835-1-git-send-email-Rasesh.Mody@cavium.com> References: <1480756289-11835-1-git-send-email-Rasesh.Mody@cavium.com> MIME-Version: 1.0 Content-Type: text/plain disclaimer: bypass X-Proofpoint-Virus-Version: vendor=nai engine=5800 definitions=8367 signatures=670762 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 priorityscore=1501 malwarescore=0 suspectscore=1 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1609300000 definitions=main-1612030160 Subject: [dpdk-dev] [PATCH 08/25] net/qede/base: fix updating VF queue zone id X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Dec 2016 09:12:21 -0000 Pass the absolute qzone_id when creating queues. Fixes: 5cdd769a ("qede: add L2 support") Signed-off-by: Rasesh Mody --- drivers/net/qede/base/ecore_dev.c | 9 ++++++--- drivers/net/qede/base/ecore_l2.c | 10 +++++----- drivers/net/qede/base/ecore_l2_api.h | 11 +++++++++-- drivers/net/qede/base/ecore_sriov.c | 1 + drivers/net/qede/qede_eth_if.c | 1 + 5 files changed, 22 insertions(+), 10 deletions(-) diff --git a/drivers/net/qede/base/ecore_dev.c b/drivers/net/qede/base/ecore_dev.c index 1d906b73..8b7d1da0 100644 --- a/drivers/net/qede/base/ecore_dev.c +++ b/drivers/net/qede/base/ecore_dev.c @@ -542,11 +542,14 @@ enum _ecore_status_t ecore_resc_alloc(struct ecore_dev *p_dev) /* Allocate Memory for the Queue->CID mapping */ for_each_hwfn(p_dev, i) { struct ecore_hwfn *p_hwfn = &p_dev->hwfns[i]; + u32 num_tx_conns = RESC_NUM(p_hwfn, ECORE_L2_QUEUE); + int tx_size, rx_size; /* @@@TMP - resc management, change to actual required size */ - int tx_size = sizeof(struct ecore_hw_cid_data) * - RESC_NUM(p_hwfn, ECORE_L2_QUEUE); - int rx_size = sizeof(struct ecore_hw_cid_data) * + if (p_hwfn->pf_params.eth_pf_params.num_cons > num_tx_conns) + num_tx_conns = p_hwfn->pf_params.eth_pf_params.num_cons; + tx_size = sizeof(struct ecore_hw_cid_data) * num_tx_conns; + rx_size = sizeof(struct ecore_hw_cid_data) * RESC_NUM(p_hwfn, ECORE_L2_QUEUE); p_hwfn->p_tx_cids = OSAL_ZALLOC(p_hwfn->p_dev, GFP_KERNEL, diff --git a/drivers/net/qede/base/ecore_l2.c b/drivers/net/qede/base/ecore_l2.c index b139c398..9cb554c6 100644 --- a/drivers/net/qede/base/ecore_l2.c +++ b/drivers/net/qede/base/ecore_l2.c @@ -663,7 +663,7 @@ ecore_sp_eth_rx_queue_start(struct ecore_hwfn *p_hwfn, if (IS_VF(p_hwfn->p_dev)) { return ecore_vf_pf_rxq_start(p_hwfn, - p_params->queue_id, + (u8)p_params->queue_id, p_params->sb, (u8)p_params->sb_idx, bd_max_bytes, @@ -840,9 +840,9 @@ ecore_sp_eth_txq_start_ramrod(struct ecore_hwfn *p_hwfn, struct ecore_spq_entry *p_ent = OSAL_NULL; struct ecore_sp_init_data init_data; struct ecore_hw_cid_data *p_tx_cid; - u16 pq_id, abs_tx_q_id = 0; - u8 abs_vport_id; + u16 pq_id, abs_tx_qzone_id = 0; enum _ecore_status_t rc = ECORE_NOTIMPL; + u8 abs_vport_id; /* Store information for the stop */ p_tx_cid = &p_hwfn->p_tx_cids[p_params->queue_id]; @@ -853,7 +853,7 @@ ecore_sp_eth_txq_start_ramrod(struct ecore_hwfn *p_hwfn, if (rc != ECORE_SUCCESS) return rc; - rc = ecore_fw_l2_queue(p_hwfn, p_params->queue_id, &abs_tx_q_id); + rc = ecore_fw_l2_queue(p_hwfn, p_params->qzone_id, &abs_tx_qzone_id); if (rc != ECORE_SUCCESS) return rc; @@ -876,7 +876,7 @@ ecore_sp_eth_txq_start_ramrod(struct ecore_hwfn *p_hwfn, p_ramrod->sb_index = (u8)p_params->sb_idx; p_ramrod->stats_counter_id = p_params->stats_id; - p_ramrod->queue_zone_id = OSAL_CPU_TO_LE16(abs_tx_q_id); + p_ramrod->queue_zone_id = OSAL_CPU_TO_LE16(abs_tx_qzone_id); p_ramrod->pbl_size = OSAL_CPU_TO_LE16(pbl_size); DMA_REGPAIR_LE(p_ramrod->pbl_base_addr, pbl_addr); diff --git a/drivers/net/qede/base/ecore_l2_api.h b/drivers/net/qede/base/ecore_l2_api.h index c12d97c9..247316b8 100644 --- a/drivers/net/qede/base/ecore_l2_api.h +++ b/drivers/net/qede/base/ecore_l2_api.h @@ -28,10 +28,17 @@ enum ecore_rss_caps { #endif struct ecore_queue_start_common_params { - /* Rx/Tx queue id */ - u8 queue_id; + /* Rx/Tx queue relative id to keep obtained cid in corresponding array + * RX - upper-bounded by number of FW-queues + */ + u16 queue_id; u8 vport_id; + /* q_zone_id is relative, may be different from queue id + * currently used by Tx-only, upper-bounded by number of FW-queues + */ + u8 qzone_id; + /* stats_id is relative or absolute depends on function */ u8 stats_id; u16 sb; diff --git a/drivers/net/qede/base/ecore_sriov.c b/drivers/net/qede/base/ecore_sriov.c index bdf91647..0e2b3248 100644 --- a/drivers/net/qede/base/ecore_sriov.c +++ b/drivers/net/qede/base/ecore_sriov.c @@ -2107,6 +2107,7 @@ static void ecore_iov_vf_mbx_start_txq(struct ecore_hwfn *p_hwfn, goto out; p_params.queue_id = (u8)vf->vf_queues[req->tx_qid].fw_tx_qid; + p_params.qzone_id = (u8)vf->vf_queues[req->tx_qid].fw_tx_qid; p_params.vport_id = vf->vport_id; p_params.stats_id = vf->abs_vf_id + 0x10, p_params.sb = req->hw_sb; diff --git a/drivers/net/qede/qede_eth_if.c b/drivers/net/qede/qede_eth_if.c index 7d212003..d0f6e87a 100644 --- a/drivers/net/qede/qede_eth_if.c +++ b/drivers/net/qede/qede_eth_if.c @@ -213,6 +213,7 @@ qed_start_txq(struct ecore_dev *edev, p_hwfn = &edev->hwfns[hwfn_index]; p_params->queue_id = p_params->queue_id / edev->num_hwfns; + p_params->qzone_id = p_params->queue_id; p_params->stats_id = p_params->vport_id; rc = ecore_sp_eth_tx_queue_start(p_hwfn, -- 2.11.0.rc1