Re: [PATCH net-next v4 2/5] hinic: add support to set and get irq coalesce

From: kernel test robot
Date: Mon Jun 29 2020 - 15:03:55 EST


Hi Luo,

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/Luo-bin/hinic-add-some-ethtool-ops-support/20200628-203913
base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 491f14db45dc7fc08ffe00ea6881615638dd159c
config: i386-allyesconfig (attached as .config)
compiler: gcc-9 (Debian 9.3.0-13) 9.3.0
reproduce (this is a W=1 build):
# save the attached .config to linux build tree
make W=1 ARCH=i386

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All warnings (new ones prefixed by >>):

drivers/net/ethernet/huawei/hinic/hinic_ethtool.c: In function '__hinic_set_coalesce':
>> drivers/net/ethernet/huawei/hinic/hinic_ethtool.c:742:31: warning: variable 'ori_tx_intr_coal' set but not used [-Wunused-but-set-variable]
742 | struct hinic_intr_coal_info *ori_tx_intr_coal = NULL;
| ^~~~~~~~~~~~~~~~
>> drivers/net/ethernet/huawei/hinic/hinic_ethtool.c:741:31: warning: variable 'ori_rx_intr_coal' set but not used [-Wunused-but-set-variable]
741 | struct hinic_intr_coal_info *ori_rx_intr_coal = NULL;
| ^~~~~~~~~~~~~~~~

vim +/ori_tx_intr_coal +742 drivers/net/ethernet/huawei/hinic/hinic_ethtool.c

737
738 static int __hinic_set_coalesce(struct net_device *netdev,
739 struct ethtool_coalesce *coal, u16 queue)
740 {
> 741 struct hinic_intr_coal_info *ori_rx_intr_coal = NULL;
> 742 struct hinic_intr_coal_info *ori_tx_intr_coal = NULL;
743 struct hinic_dev *nic_dev = netdev_priv(netdev);
744 struct hinic_intr_coal_info rx_intr_coal = {0};
745 struct hinic_intr_coal_info tx_intr_coal = {0};
746 char obj_str[OBJ_STR_MAX_LEN] = {0};
747 bool set_rx_coal = false;
748 bool set_tx_coal = false;
749 int err;
750
751 err = is_coalesce_exceed_limit(coal);
752 if (err)
753 return err;
754
755 if (coal->rx_coalesce_usecs || coal->rx_max_coalesced_frames) {
756 rx_intr_coal.coalesce_timer_cfg =
757 (u8)(coal->rx_coalesce_usecs / COALESCE_TIMER_CFG_UNIT);
758 rx_intr_coal.pending_limt = (u8)(coal->rx_max_coalesced_frames /
759 COALESCE_PENDING_LIMIT_UNIT);
760 set_rx_coal = true;
761 }
762
763 if (coal->tx_coalesce_usecs || coal->tx_max_coalesced_frames) {
764 tx_intr_coal.coalesce_timer_cfg =
765 (u8)(coal->tx_coalesce_usecs / COALESCE_TIMER_CFG_UNIT);
766 tx_intr_coal.pending_limt = (u8)(coal->tx_max_coalesced_frames /
767 COALESCE_PENDING_LIMIT_UNIT);
768 set_tx_coal = true;
769 }
770
771 if (queue == COALESCE_ALL_QUEUE) {
772 ori_rx_intr_coal = &nic_dev->rx_intr_coalesce[0];
773 ori_tx_intr_coal = &nic_dev->tx_intr_coalesce[0];
774 err = snprintf(obj_str, OBJ_STR_MAX_LEN, "for netdev");
775 } else {
776 ori_rx_intr_coal = &nic_dev->rx_intr_coalesce[queue];
777 ori_tx_intr_coal = &nic_dev->tx_intr_coalesce[queue];
778 err = snprintf(obj_str, OBJ_STR_MAX_LEN, "for queue %d", queue);
779 }
780 if (err <= 0 || err >= OBJ_STR_MAX_LEN) {
781 netif_err(nic_dev, drv, netdev, "Failed to snprintf string, function return(%d) and dest_len(%d)\n",
782 err, OBJ_STR_MAX_LEN);
783 return -EFAULT;
784 }
785
786 /* setting coalesce timer or pending limit to zero will disable
787 * coalesce
788 */
789 if (set_rx_coal && (!rx_intr_coal.coalesce_timer_cfg ||
790 !rx_intr_coal.pending_limt))
791 netif_warn(nic_dev, drv, netdev, "RX coalesce will be disabled\n");
792 if (set_tx_coal && (!tx_intr_coal.coalesce_timer_cfg ||
793 !tx_intr_coal.pending_limt))
794 netif_warn(nic_dev, drv, netdev, "TX coalesce will be disabled\n");
795
796 if (set_rx_coal) {
797 err = __set_hw_coal_param(nic_dev, &rx_intr_coal, queue, true);
798 if (err)
799 return err;
800 }
801 if (set_tx_coal) {
802 err = __set_hw_coal_param(nic_dev, &tx_intr_coal, queue, false);
803 if (err)
804 return err;
805 }
806 return 0;
807 }
808

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip