1. 01 6月, 2021 8 次提交
  2. 26 5月, 2021 1 次提交
  3. 25 5月, 2021 2 次提交
  4. 22 5月, 2021 1 次提交
  5. 21 5月, 2021 15 次提交
  6. 19 5月, 2021 4 次提交
    • Y
      net: hns3: check the return of skb_checksum_help() · 9bb5a495
      Yunsheng Lin 提交于
      Currently skb_checksum_help()'s return is ignored, but it may
      return error when it fails to allocate memory when linearizing.
      
      So adds checking for the return of skb_checksum_help().
      
      Fixes: 76ad4f0e("net: hns3: Add support of HNS3 Ethernet Driver for hip08 SoC")
      Fixes: 3db084d2("net: hns3: Fix for vxlan tx checksum bug")
      Signed-off-by: NYunsheng Lin <linyunsheng@huawei.com>
      Signed-off-by: NHuazhong Tan <tanhuazhong@huawei.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9bb5a495
    • H
      net: hns3: fix user's coalesce configuration lost issue · 73a13d8d
      Huazhong Tan 提交于
      Currently, when adaptive is on, the user's coalesce configuration
      may be overwritten by the dynamic one. The reason is that user's
      configurations are saved in struct hns3_enet_tqp_vector whose
      value maybe changed by the dynamic algorithm. To fix it, use
      struct hns3_nic_priv instead of struct hns3_enet_tqp_vector to
      save and get the user's configuration.
      
      BTW, operations of storing and restoring coalesce info in the reset
      process are unnecessary now, so remove them as well.
      
      Fixes: 434776a5 ("net: hns3: add ethtool_ops.set_coalesce support to PF")
      Fixes: 7e96adc4 ("net: hns3: add ethtool_ops.get_coalesce support to PF")
      Signed-off-by: NHuazhong Tan <tanhuazhong@huawei.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      73a13d8d
    • J
      net: hns3: put off calling register_netdev() until client initialize complete · a289a7e5
      Jian Shen 提交于
      Currently, the netdevice is registered before client initializing
      complete. So there is a timewindow between netdevice available
      and usable. In this case, if user try to change the channel number
      or ring param, it may cause the hns3_set_rx_cpu_rmap() being called
      twice, and report bug.
      
      [47199.416502] hns3 0000:35:00.0 eth1: set channels: tqp_num=1, rxfh=0
      [47199.430340] hns3 0000:35:00.0 eth1: already uninitialized
      [47199.438554] hns3 0000:35:00.0: rss changes from 4 to 1
      [47199.511854] hns3 0000:35:00.0: Channels changed, rss_size from 4 to 1, tqps from 4 to 1
      [47200.163524] ------------[ cut here ]------------
      [47200.171674] kernel BUG at lib/cpu_rmap.c:142!
      [47200.177847] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
      [47200.185259] Modules linked in: hclge(+) hns3(-) hns3_cae(O) hns_roce_hw_v2 hnae3 vfio_iommu_type1 vfio_pci vfio_virqfd vfio pv680_mii(O) [last unloaded: hclge]
      [47200.205912] CPU: 1 PID: 8260 Comm: ethtool Tainted: G           O      5.11.0-rc3+ #1
      [47200.215601] Hardware name:  , xxxxxx 02/04/2021
      [47200.223052] pstate: 60400009 (nZCv daif +PAN -UAO -TCO BTYPE=--)
      [47200.230188] pc : cpu_rmap_add+0x38/0x40
      [47200.237472] lr : irq_cpu_rmap_add+0x84/0x140
      [47200.243291] sp : ffff800010e93a30
      [47200.247295] x29: ffff800010e93a30 x28: ffff082100584880
      [47200.254155] x27: 0000000000000000 x26: 0000000000000000
      [47200.260712] x25: 0000000000000000 x24: 0000000000000004
      [47200.267241] x23: ffff08209ba03000 x22: ffff08209ba038c0
      [47200.273789] x21: 000000000000003f x20: ffff0820e2bc1680
      [47200.280400] x19: ffff0820c970ec80 x18: 00000000000000c0
      [47200.286944] x17: 0000000000000000 x16: ffffb43debe4a0d0
      [47200.293456] x15: fffffc2082990600 x14: dead000000000122
      [47200.300059] x13: ffffffffffffffff x12: 000000000000003e
      [47200.306606] x11: ffff0820815b8080 x10: ffff53e411988000
      [47200.313171] x9 : 0000000000000000 x8 : ffff0820e2bc1700
      [47200.319682] x7 : 0000000000000000 x6 : 000000000000003f
      [47200.326170] x5 : 0000000000000040 x4 : ffff800010e93a20
      [47200.332656] x3 : 0000000000000004 x2 : ffff0820c970ec80
      [47200.339168] x1 : ffff0820e2bc1680 x0 : 0000000000000004
      [47200.346058] Call trace:
      [47200.349324]  cpu_rmap_add+0x38/0x40
      [47200.354300]  hns3_set_rx_cpu_rmap+0x6c/0xe0 [hns3]
      [47200.362294]  hns3_reset_notify_init_enet+0x1cc/0x340 [hns3]
      [47200.370049]  hns3_change_channels+0x40/0xb0 [hns3]
      [47200.376770]  hns3_set_channels+0x12c/0x2a0 [hns3]
      [47200.383353]  ethtool_set_channels+0x140/0x250
      [47200.389772]  dev_ethtool+0x714/0x23d0
      [47200.394440]  dev_ioctl+0x4cc/0x640
      [47200.399277]  sock_do_ioctl+0x100/0x2a0
      [47200.404574]  sock_ioctl+0x28c/0x470
      [47200.409079]  __arm64_sys_ioctl+0xb4/0x100
      [47200.415217]  el0_svc_common.constprop.0+0x84/0x210
      [47200.422088]  do_el0_svc+0x28/0x34
      [47200.426387]  el0_svc+0x28/0x70
      [47200.431308]  el0_sync_handler+0x1a4/0x1b0
      [47200.436477]  el0_sync+0x174/0x180
      [47200.441562] Code: 11000405 79000c45 f8247861 d65f03c0 (d4210000)
      [47200.448869] ---[ end trace a01efe4ce42e5f34 ]---
      
      The process is like below:
      excuting hns3_client_init
      |
      register_netdev()
      |                           hns3_set_channels()
      |                           |
      hns3_set_rx_cpu_rmap()      hns3_reset_notify_uninit_enet()
      |                               |
      |                            quit without calling function
      |                            hns3_free_rx_cpu_rmap for flag
      |                            HNS3_NIC_STATE_INITED is unset.
      |                           |
      |                           hns3_reset_notify_init_enet()
      |                               |
      set HNS3_NIC_STATE_INITED    call hns3_set_rx_cpu_rmap()-- crash
      
      Fix it by calling register_netdev() at the end of function
      hns3_client_init().
      
      Fixes: 08a10068 ("net: hns3: re-organize vector handle")
      Signed-off-by: NJian Shen <shenjian15@huawei.com>
      Signed-off-by: NHuazhong Tan <tanhuazhong@huawei.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a289a7e5
    • Jiaran Zhang's avatar
      net: hns3: fix incorrect resp_msg issue · a710b9ff
      Jiaran Zhang 提交于
      In hclge_mbx_handler(), if there are two consecutive mailbox
      messages that requires resp_msg, the resp_msg is not cleared
      after processing the first message, which will cause the resp_msg
      data of second message incorrect.
      
      Fix it by clearing the resp_msg before processing every mailbox
      message.
      
      Fixes: bb5790b7 ("net: hns3: refactor mailbox response scheme between PF and VF")
      Signed-off-by: Jiaran Zhang's avatarJiaran Zhang <zhangjiaran@huawei.com>
      Signed-off-by: NHuazhong Tan <tanhuazhong@huawei.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a710b9ff
  7. 15 5月, 2021 9 次提交
    • Jiaran Zhang's avatar
      net: hns3: refactor dump ncl config of debugfs · e76e6886
      Jiaran Zhang 提交于
      Currently, the debugfs command for ncl config is implemented by
      "echo xxxx > cmd", and record the information in dmesg. It's
      unnecessary and heavy. To improve it, create a single file
      "ncl_config" for it, and query it by command "cat ncl_config",
      return the result to userspace, rather than record in dmesg.
      
      The display style is below:
      $cat ncl_config
      offset | data
      0x0000 | 0x00000028
      0x0004 | 0x00000400
      0x0008 | 0x08040201
      0x000c | 0x00000000
      0x0010 | 0x00040004
      0x0014 | 0x00040004
      0x0018 | 0x00000000
      0x001c | 0x00000000
      0x0020 | 0x00040004
      Signed-off-by: Jiaran Zhang's avatarJiaran Zhang <zhangjiaran@huawei.com>
      Signed-off-by: NHuazhong Tan <tanhuazhong@huawei.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e76e6886
    • Jiaran Zhang's avatar
      net: hns3: refactor dump m7 info of debugfs · 0b198b0d
      Jiaran Zhang 提交于
      Currently, the debugfs command for m7 info is implemented by
      "echo xxxx > cmd", and record the information in dmesg. It's
      unnecessary and heavy. To improve it, create a single file
      "imp_info" for it, and query it by command "cat imp_info",
      return the result to userspace, rather than record in dmesg.
      
      The display style is below:
      $cat imp_info
      offset | data
      0x0000 | 0x00000000  0x00000000
      0x0008 | 0x00000000  0x00000000
      0x0010 | 0x00000000  0x00000001
      0x0018 | 0x00000000  0x00000000
      0x0020 | 0x00000000  0x00000000
      0x0028 | 0x00000000  0x00000000
      0x0030 | 0x00000000  0x00000000
      Signed-off-by: Jiaran Zhang's avatarJiaran Zhang <zhangjiaran@huawei.com>
      Signed-off-by: NHuazhong Tan <tanhuazhong@huawei.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0b198b0d
    • Jiaran Zhang's avatar
      net: hns3: refactor dump reset info of debugfs · 1a7ff828
      Jiaran Zhang 提交于
      Currently, the debugfs command for reset info is implemented by
      "echo xxxx > cmd", and record the information in dmesg. It's
      unnecessary and heavy. To improve it, create a single file
      "reset_info" for it, and query it by command "cat reset_info",
      return the result to userspace, rather than record in dmesg.
      
      The display style is below:
      $cat reset_info
      PF reset count: 0
      FLR reset count: 0
      GLOBAL reset count: 0
      IMP reset count: 0
      reset done count: 0
      HW reset done count: 0
      reset count: 0
      reset fail count: 0
      vector0 interrupt enable status: 0x1
      reset interrupt source: 0x0
      reset interrupt status: 0x0
      RAS interrupt status:0x0
      hardware reset status: 0x0
      handshake status: 0x80
      function reset status: 0x0
      
      Change to the "hclge_show_rst_info" in the "hclge_reset_err_handle",
      when the reset fails, display reset info immediately.
      Signed-off-by: Jiaran Zhang's avatarJiaran Zhang <zhangjiaran@huawei.com>
      Signed-off-by: NHuazhong Tan <tanhuazhong@huawei.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1a7ff828
    • Jiaran Zhang's avatar
      net: hns3: refactor dump intr of debugfs · 9149ca0f
      Jiaran Zhang 提交于
      Currently, the debugfs command for intr is implemented by
      "echo xxxx > cmd", and record the information in dmesg. It's
      unnecessary and heavy. To improve it, create a single file
      "interrupt_info" for it, and query it by command "cat interrupt_info",
      return the result to userspace, rather than record in dmesg.
      
      The display style is below:
      $cat interrupt_info
      num_nic_msi: 65
      num_roce_msi: 65
      num_msi_used: 2
      num_msi_left: 128
      Signed-off-by: Jiaran Zhang's avatarJiaran Zhang <zhangjiaran@huawei.com>
      Signed-off-by: NHuazhong Tan <tanhuazhong@huawei.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9149ca0f
    • Y
      net: hns3: refactor dump loopback of debugfs · d658ff34
      Yufeng Mo 提交于
      Currently, the debugfs command for loopback is implemented by
      "echo xxxx > cmd", and record the information in dmesg. It's
      unnecessary and heavy. To improve it, create a single file
      "loopback" for it, and query it by command "cat loopback",
      return the result to userspace, rather than record in dmesg.
      
      The display style is below:
      $ cat loopback
      mac id: 0
      app loopback: off
      serdes serial loopback: off
      serdes parallel loopback: off
      Signed-off-by: NYufeng Mo <moyufeng@huawei.com>
      Signed-off-by: NHuazhong Tan <tanhuazhong@huawei.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d658ff34
    • Y
      net: hns3: refactor dump mng tbl of debugfs · 8ddfd9c4
      Yufeng Mo 提交于
      Currently, the debugfs command for mng tbl is implemented by
      "echo xxxx > cmd", and record the information in dmesg. It's
      unnecessary and heavy. To improve it, create a single file
      "mng_tbl" for it, and query it by command "cat mng_tbl",
      return the result to userspace, rather than record in dmesg.
      
      The display style is below:
      $ cat mng_tbl
      entry  mac_addr          mask  ether  mask  vlan  mask  i_map ...
      00     00:00:00:00:00:00 0     88cc   0     0000  1     0f    ...
      Signed-off-by: NYufeng Mo <moyufeng@huawei.com>
      Signed-off-by: NHuazhong Tan <tanhuazhong@huawei.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      8ddfd9c4
    • H
      net: hns3: refactor dump mac list of debugfs · 1556ea91
      Huazhong Tan 提交于
      Currently, the debugfs command for mac list info is implemented
      by "echo xxxx > cmd", and record the information in dmesg. It's
      unnecessary and heavy. To improve it, create two files "uc" and
      "mc" under directory "mac_list" for it, and query mac list info
      by "cat mac_list/uc" and "mac_list/mc", return the result to
      userspace, rather than record in dmesg.
      
      The display style is below:
      $ cat mac_list/uc
      UC MAC_LIST:
      FUNC_ID  MAC_ADDR            STATE
      pf       00:18:2d:00:00:71   ACTIVE
      
      $ cat mac_list/mc
      MC MAC_LIST:
      FUNC_ID  MAC_ADDR            STATE
      pf       01:80:c2:00:00:21   ACTIVE
      Signed-off-by: NHuazhong Tan <tanhuazhong@huawei.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1556ea91
    • H
      net: hns3: refactor dump bd info of debugfs · 77e91848
      Huazhong Tan 提交于
      Currently, the debugfs command for bd info is implemented
      by "echo xxxx > cmd", and record the information in dmesg.
      It's unnecessary and heavy.
      
      To improve it, add two debugfs directories "tx_bd_info" and
      "rx_bd_info", and create a file for each queue under these
      two directories, and query the bd info of specific queue by
      "cat tx_bd_info/tx_bd_queue*" or "cat rx_bd_info/rx_bd_queue*",
      return the result to userspace, rather than record in dmesg.
      
      The display style is below:
      $ cat rx_bd_info/rx_bd_queue0
      Queue 0 rx bd info:
      BD_IDX   L234_INFO  PKT_LEN   SIZE...
      0        0x0             60     60...
      1        0x0           1512   1512...
      
      $ cat tx_bd_info/tx_bd_queue0
      Queue 0 tx bd info:
      BD_IDX     ADDRESS  VLAN_TAG  SIZE...
      0          0x0          0        0...
      1          0x0          0        0...
      Signed-off-by: NHuazhong Tan <tanhuazhong@huawei.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      77e91848
    • Jiaran Zhang's avatar
      net: hns3: refactor dev capability and dev spec of debugfs · c929bc2a
      Jiaran Zhang 提交于
      Currently, the debugfs command for dev capability and dev spec
      are implemented by "echo xxxx > cmd", and record the information
      in dmesg. It's unnecessary and heavy. To improve it, create a
      single file "dev_info" for them, and query them by command
      "cat dev_info", return the result to userspace, rather than
      record in dmesg.
      
      The display style is below:
      $cat dev_info
      dev capability:
      support FD: yes
      support GRO: yes
      support FEC: yes
      support UDP GSO: no
      support PTP: no
      support INT QL: no
      support HW TX csum: no
      support UDP tunnel csum: no
      support TX push: no
      support imp-controlled PHY: no
      support rxd advanced layout: no
      
      dev spec:
      MAC entry num: 0
      MNG entry num: 0
      MAX non tso bd num: 8
      RSS ind tbl size: 512
      RSS key size: 40
      RSS size: 1
      Allocated RSS size: 0
      Task queue pairs numbers: 1
      RX buffer length: 2048
      Desc num per TX queue: 1024
      Desc num per RX queue: 1024
      Total number of enabled TCs: 1
      MAX INT QL: 0
      MAX INT GL: 8160
      MAX TM RATE: 100000
      MAX QSET number: 1024
      Signed-off-by: Jiaran Zhang's avatarJiaran Zhang <zhangjiaran@huawei.com>
      Signed-off-by: NHuazhong Tan <tanhuazhong@huawei.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c929bc2a