* Re: [PATCH v2 net-next 2/3] qede: add per queue coalesce support for qede driver @ 2021-02-10 8:43 kernel test robot 0 siblings, 0 replies; 3+ messages in thread From: kernel test robot @ 2021-02-10 8:43 UTC (permalink / raw) To: kbuild [-- Attachment #1: Type: text/plain, Size: 5639 bytes --] CC: kbuild-all(a)lists.01.org In-Reply-To: <1612906019-31724-3-git-send-email-bupadhaya@marvell.com> References: <1612906019-31724-3-git-send-email-bupadhaya@marvell.com> TO: Bhaskar Upadhaya <bupadhaya@marvell.com> TO: netdev(a)vger.kernel.org TO: kuba(a)kernel.org TO: aelior(a)marvell.com TO: irusskikh(a)marvell.com CC: davem(a)davemloft.net CC: bupadhaya(a)marvell.com Hi Bhaskar, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on net-next/master] url: https://github.com/0day-ci/linux/commits/Bhaskar-Upadhaya/qede-add-netpoll-and-per-queue-coalesce-support/20210210-080747 base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 6626a0266566c5aea16178c5e6cd7fc4db3f2f56 :::::: branch date: 9 hours ago :::::: commit date: 9 hours ago config: i386-randconfig-m021-20210209 (attached as .config) compiler: gcc-9 (Debian 9.3.0-15) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> Reported-by: Dan Carpenter <dan.carpenter@oracle.com> New smatch warnings: drivers/net/ethernet/qlogic/qede/qede_ethtool.c:2188 qede_get_per_coalesce() warn: assigning (-22) to unsigned variable 'rc' Old smatch warnings: drivers/net/ethernet/qlogic/qede/qede_ethtool.c:2193 qede_get_per_coalesce() warn: assigning (-22) to unsigned variable 'rc' vim +/rc +2188 drivers/net/ethernet/qlogic/qede/qede_ethtool.c 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2170 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2171 static int qede_get_per_coalesce(struct net_device *dev, 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2172 u32 queue, 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2173 struct ethtool_coalesce *coal) 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2174 { 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2175 void *rx_handle = NULL, *tx_handle = NULL; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2176 struct qede_dev *edev = netdev_priv(dev); 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2177 u16 rx_coal, tx_coal, rc = 0; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2178 struct qede_fastpath *fp; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2179 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2180 rx_coal = QED_DEFAULT_RX_USECS; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2181 tx_coal = QED_DEFAULT_TX_USECS; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2182 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2183 memset(coal, 0, sizeof(struct ethtool_coalesce)); 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2184 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2185 __qede_lock(edev); 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2186 if (queue >= edev->num_queues) { 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2187 DP_INFO(edev, "Invalid queue\n"); 75a56157c75052 Bhaskar Upadhaya 2021-02-09 @2188 rc = -EINVAL; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2189 goto out; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2190 } 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2191 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2192 if (edev->state != QEDE_STATE_OPEN) { 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2193 rc = -EINVAL; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2194 goto out; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2195 } 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2196 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2197 fp = &edev->fp_array[queue]; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2198 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2199 if (fp->type & QEDE_FASTPATH_RX) 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2200 rx_handle = fp->rxq->handle; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2201 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2202 rc = edev->ops->get_coalesce(edev->cdev, &rx_coal, 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2203 rx_handle); 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2204 if (rc) { 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2205 DP_INFO(edev, "Read Rx coalesce error\n"); 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2206 goto out; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2207 } 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2208 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2209 fp = &edev->fp_array[queue]; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2210 if (fp->type & QEDE_FASTPATH_TX) 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2211 tx_handle = fp->txq->handle; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2212 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2213 rc = edev->ops->get_coalesce(edev->cdev, &tx_coal, 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2214 tx_handle); 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2215 if (rc) 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2216 DP_INFO(edev, "Read Tx coalesce error\n"); 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2217 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2218 out: 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2219 __qede_unlock(edev); 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2220 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2221 coal->rx_coalesce_usecs = rx_coal; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2222 coal->tx_coalesce_usecs = tx_coal; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2223 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2224 return rc; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2225 } 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2226 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org [-- Attachment #2: config.gz --] [-- Type: application/gzip, Size: 37136 bytes --] ^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH v2 net-next 0/3] qede: add netpoll and per-queue coalesce support @ 2021-02-09 21:26 Bhaskar Upadhaya 2021-02-09 21:26 ` [PATCH v2 net-next 2/3] qede: add per queue coalesce support for qede driver Bhaskar Upadhaya 0 siblings, 1 reply; 3+ messages in thread From: Bhaskar Upadhaya @ 2021-02-09 21:26 UTC (permalink / raw) To: netdev, kuba, aelior, irusskikh; +Cc: davem, bupadhaya This is a followup implementation after series https://patchwork.kernel.org/project/netdevbpf/cover/1610701570-29496-1-git-send-email-bupadhaya@marvell.com/ Patch 1: Add net poll controller support to transmit kernel printks over UDP Patch 2: QLogic card support multiple queues and each queue can be configured with respective coalescing parameters, this patch add per queue rx-usecs, tx-usecs coalescing parameters Patch 3: set default per queue rx-usecs, tx-usecs coalescing parameters and preserve coalesce parameters across interface up and down v2: comments from jakub - p1: remove poll_controller ndo and add budget 0 support in qede_poll - p3: preserve coalesce parameters across interface up and down Bhaskar Upadhaya (3): qede: add netpoll support for qede driver qede: add per queue coalesce support for qede driver qede: preserve per queue stats across up/down of interface drivers/net/ethernet/qlogic/qede/qede.h | 10 ++ .../net/ethernet/qlogic/qede/qede_ethtool.c | 133 +++++++++++++++++- drivers/net/ethernet/qlogic/qede/qede_fp.c | 3 +- drivers/net/ethernet/qlogic/qede/qede_main.c | 29 +++- 4 files changed, 170 insertions(+), 5 deletions(-) -- 2.17.1 ^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH v2 net-next 2/3] qede: add per queue coalesce support for qede driver 2021-02-09 21:26 [PATCH v2 net-next 0/3] qede: add netpoll and per-queue coalesce support Bhaskar Upadhaya @ 2021-02-09 21:26 ` Bhaskar Upadhaya 2021-02-10 8:57 ` Dan Carpenter 0 siblings, 1 reply; 3+ messages in thread From: Bhaskar Upadhaya @ 2021-02-09 21:26 UTC (permalink / raw) To: netdev, kuba, aelior, irusskikh; +Cc: davem, bupadhaya per queue coalescing allows better and more finegrained control over interrupt rates. Signed-off-by: Bhaskar Upadhaya <bupadhaya@marvell.com> Signed-off-by: Igor Russkikh <irusskikh@marvell.com> Signed-off-by: Ariel Elior <aelior@marvell.com> --- .../net/ethernet/qlogic/qede/qede_ethtool.c | 123 ++++++++++++++++++ 1 file changed, 123 insertions(+) diff --git a/drivers/net/ethernet/qlogic/qede/qede_ethtool.c b/drivers/net/ethernet/qlogic/qede/qede_ethtool.c index bedbb85a179a..522736968496 100644 --- a/drivers/net/ethernet/qlogic/qede/qede_ethtool.c +++ b/drivers/net/ethernet/qlogic/qede/qede_ethtool.c @@ -2105,6 +2105,125 @@ static int qede_get_dump_data(struct net_device *dev, return rc; } +static int qede_set_per_coalesce(struct net_device *dev, + u32 queue, + struct ethtool_coalesce *coal) +{ + struct qede_dev *edev = netdev_priv(dev); + struct qede_fastpath *fp; + u16 rxc, txc; + int rc = 0; + + if (coal->rx_coalesce_usecs > QED_COALESCE_MAX || + coal->tx_coalesce_usecs > QED_COALESCE_MAX) { + DP_INFO(edev, + "Can't support requested %s coalesce value [max supported value %d]\n", + coal->rx_coalesce_usecs > QED_COALESCE_MAX ? "rx" + : "tx", + QED_COALESCE_MAX); + return -EINVAL; + } + + rxc = (u16)coal->rx_coalesce_usecs; + txc = (u16)coal->tx_coalesce_usecs; + + __qede_lock(edev); + if (queue >= edev->num_queues) { + DP_INFO(edev, "Invalid queue\n"); + rc = -EINVAL; + goto out; + } + + if (edev->state != QEDE_STATE_OPEN) { + rc = -EINVAL; + goto out; + } + + fp = &edev->fp_array[queue]; + + if (edev->fp_array[queue].type & QEDE_FASTPATH_RX) { + rc = edev->ops->common->set_coalesce(edev->cdev, + rxc, 0, + fp->rxq->handle); + if (rc) { + DP_INFO(edev, + "Set RX coalesce error, rc = %d\n", rc); + goto out; + } + } + + if (edev->fp_array[queue].type & QEDE_FASTPATH_TX) { + rc = edev->ops->common->set_coalesce(edev->cdev, + 0, txc, + fp->txq->handle); + if (rc) { + DP_INFO(edev, + "Set TX coalesce error, rc = %d\n", rc); + goto out; + } + } +out: + __qede_unlock(edev); + + return rc; +} + +static int qede_get_per_coalesce(struct net_device *dev, + u32 queue, + struct ethtool_coalesce *coal) +{ + void *rx_handle = NULL, *tx_handle = NULL; + struct qede_dev *edev = netdev_priv(dev); + u16 rx_coal, tx_coal, rc = 0; + struct qede_fastpath *fp; + + rx_coal = QED_DEFAULT_RX_USECS; + tx_coal = QED_DEFAULT_TX_USECS; + + memset(coal, 0, sizeof(struct ethtool_coalesce)); + + __qede_lock(edev); + if (queue >= edev->num_queues) { + DP_INFO(edev, "Invalid queue\n"); + rc = -EINVAL; + goto out; + } + + if (edev->state != QEDE_STATE_OPEN) { + rc = -EINVAL; + goto out; + } + + fp = &edev->fp_array[queue]; + + if (fp->type & QEDE_FASTPATH_RX) + rx_handle = fp->rxq->handle; + + rc = edev->ops->get_coalesce(edev->cdev, &rx_coal, + rx_handle); + if (rc) { + DP_INFO(edev, "Read Rx coalesce error\n"); + goto out; + } + + fp = &edev->fp_array[queue]; + if (fp->type & QEDE_FASTPATH_TX) + tx_handle = fp->txq->handle; + + rc = edev->ops->get_coalesce(edev->cdev, &tx_coal, + tx_handle); + if (rc) + DP_INFO(edev, "Read Tx coalesce error\n"); + +out: + __qede_unlock(edev); + + coal->rx_coalesce_usecs = rx_coal; + coal->tx_coalesce_usecs = tx_coal; + + return rc; +} + static const struct ethtool_ops qede_ethtool_ops = { .supported_coalesce_params = ETHTOOL_COALESCE_USECS, .get_link_ksettings = qede_get_link_ksettings, @@ -2148,6 +2267,8 @@ static const struct ethtool_ops qede_ethtool_ops = { .set_fecparam = qede_set_fecparam, .get_tunable = qede_get_tunable, .set_tunable = qede_set_tunable, + .get_per_queue_coalesce = qede_get_per_coalesce, + .set_per_queue_coalesce = qede_set_per_coalesce, .flash_device = qede_flash_device, .get_dump_flag = qede_get_dump_flag, .get_dump_data = qede_get_dump_data, @@ -2177,6 +2298,8 @@ static const struct ethtool_ops qede_vf_ethtool_ops = { .set_rxfh = qede_set_rxfh, .get_channels = qede_get_channels, .set_channels = qede_set_channels, + .get_per_queue_coalesce = qede_get_per_coalesce, + .set_per_queue_coalesce = qede_set_per_coalesce, .get_tunable = qede_get_tunable, .set_tunable = qede_set_tunable, }; -- 2.17.1 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v2 net-next 2/3] qede: add per queue coalesce support for qede driver 2021-02-09 21:26 ` [PATCH v2 net-next 2/3] qede: add per queue coalesce support for qede driver Bhaskar Upadhaya @ 2021-02-10 8:57 ` Dan Carpenter 0 siblings, 0 replies; 3+ messages in thread From: Dan Carpenter @ 2021-02-10 8:57 UTC (permalink / raw) To: kbuild [-- Attachment #1: Type: text/plain, Size: 5165 bytes --] Hi Bhaskar, url: https://github.com/0day-ci/linux/commits/Bhaskar-Upadhaya/qede-add-netpoll-and-per-queue-coalesce-support/20210210-080747 base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 6626a0266566c5aea16178c5e6cd7fc4db3f2f56 config: i386-randconfig-m021-20210209 (attached as .config) compiler: gcc-9 (Debian 9.3.0-15) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> Reported-by: Dan Carpenter <dan.carpenter@oracle.com> New smatch warnings: drivers/net/ethernet/qlogic/qede/qede_ethtool.c:2188 qede_get_per_coalesce() warn: assigning (-22) to unsigned variable 'rc' Old smatch warnings: drivers/net/ethernet/qlogic/qede/qede_ethtool.c:2193 qede_get_per_coalesce() warn: assigning (-22) to unsigned variable 'rc' vim +/rc +2188 drivers/net/ethernet/qlogic/qede/qede_ethtool.c 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2171 static int qede_get_per_coalesce(struct net_device *dev, 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2172 u32 queue, 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2173 struct ethtool_coalesce *coal) 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2174 { 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2175 void *rx_handle = NULL, *tx_handle = NULL; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2176 struct qede_dev *edev = netdev_priv(dev); 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2177 u16 rx_coal, tx_coal, rc = 0; "rc" needs to be int. 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2178 struct qede_fastpath *fp; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2179 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2180 rx_coal = QED_DEFAULT_RX_USECS; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2181 tx_coal = QED_DEFAULT_TX_USECS; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2182 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2183 memset(coal, 0, sizeof(struct ethtool_coalesce)); 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2184 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2185 __qede_lock(edev); 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2186 if (queue >= edev->num_queues) { 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2187 DP_INFO(edev, "Invalid queue\n"); 75a56157c75052 Bhaskar Upadhaya 2021-02-09 @2188 rc = -EINVAL; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2189 goto out; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2190 } 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2191 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2192 if (edev->state != QEDE_STATE_OPEN) { 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2193 rc = -EINVAL; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2194 goto out; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2195 } 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2196 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2197 fp = &edev->fp_array[queue]; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2198 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2199 if (fp->type & QEDE_FASTPATH_RX) 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2200 rx_handle = fp->rxq->handle; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2201 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2202 rc = edev->ops->get_coalesce(edev->cdev, &rx_coal, 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2203 rx_handle); 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2204 if (rc) { 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2205 DP_INFO(edev, "Read Rx coalesce error\n"); 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2206 goto out; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2207 } 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2208 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2209 fp = &edev->fp_array[queue]; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2210 if (fp->type & QEDE_FASTPATH_TX) 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2211 tx_handle = fp->txq->handle; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2212 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2213 rc = edev->ops->get_coalesce(edev->cdev, &tx_coal, 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2214 tx_handle); 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2215 if (rc) 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2216 DP_INFO(edev, "Read Tx coalesce error\n"); 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2217 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2218 out: 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2219 __qede_unlock(edev); 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2220 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2221 coal->rx_coalesce_usecs = rx_coal; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2222 coal->tx_coalesce_usecs = tx_coal; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2223 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2224 return rc; 75a56157c75052 Bhaskar Upadhaya 2021-02-09 2225 } --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org _______________________________________________ kbuild mailing list -- kbuild(a)lists.01.org To unsubscribe send an email to kbuild-leave(a)lists.01.org [-- Attachment #2: config.gz --] [-- Type: application/gzip, Size: 37136 bytes --] ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-02-10 8:57 UTC | newest] Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-02-10 8:43 [PATCH v2 net-next 2/3] qede: add per queue coalesce support for qede driver kernel test robot -- strict thread matches above, loose matches on Subject: below -- 2021-02-09 21:26 [PATCH v2 net-next 0/3] qede: add netpoll and per-queue coalesce support Bhaskar Upadhaya 2021-02-09 21:26 ` [PATCH v2 net-next 2/3] qede: add per queue coalesce support for qede driver Bhaskar Upadhaya 2021-02-10 8:57 ` Dan Carpenter
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.