Skip to content
  1. Feb 08, 2022
    • Corinna Vinschen's avatar
      igc: avoid kernel warning when changing RX ring parameters · 453307b5
      Corinna Vinschen authored
      Calling ethtool changing the RX ring parameters like this:
      
        $ ethtool -G eth0 rx 1024
      
      on igc triggers kernel warnings like this:
      
      [  225.198467] ------------[ cut here ]------------
      [  225.198473] Missing unregister, handled but fix driver
      [  225.198485] WARNING: CPU: 7 PID: 959 at net/core/xdp.c:168
      xdp_rxq_info_reg+0x79/0xd0
      [...]
      [  225.198601] Call Trace:
      [  225.198604]  <TASK>
      [  225.198609]  igc_setup_rx_resources+0x3f/0xe0 [igc]
      [  225.198617]  igc_ethtool_set_ringparam+0x30e/0x450 [igc]
      [  225.198626]  ethnl_set_rings+0x18a/0x250
      [  225.198631]  genl_family_rcv_msg_doit+0xca/0x110
      [  225.198637]  genl_rcv_msg+0xce/0x1c0
      [  225.198640]  ? rings_prepare_data+0x60/0x60
      [  225.198644]  ? genl_get_cmd+0xd0/0xd0
      [  225.198647]  netlink_rcv_skb+0x4e/0xf0
      [  225.198652]  genl_rcv+0x24/0x40
      [  225.198655]  netlink_unicast+0x20e/0x330
      [  225.198659]  netlink_sendmsg+0x23f/0x480
      [  225.198663]  sock_sendmsg+0x5b/0x60
      [  225.198667]  __sys_sendto+0xf0/0x160
      [  225.198671]  ? handle_mm_fault+0xb2/0x280
      [  225.198676]  ? do_user_addr_fault+0x1eb/0x690
      [  225.198680]  __x64_sys_sendto+0x20/0x30
      [  225.198683]  do_syscall_64+0x38/0x90
      [  225.198687]  entry_SYSCALL_64_after_hwframe+0x44/0xae
      [  225.198693] RIP: 0033:0x7f7ae38ac3aa
      
      igc_ethtool_set_ringparam() copies the igc_ring structure but neglects to
      reset the xdp_rxq_info member before calling igc_setup_rx_resources().
      This in turn calls xdp_rxq_info_reg() with an already registered xdp_rxq_info.
      
      Make sure to unregister the xdp_rxq_info structure first in
      igc_setup_rx_resources.
      
      Fixes: 73f1071c
      
       ("igc: Add support for XDP_TX action")
      Reported-by: default avatarLennert Buytenhek <buytenh@arista.com>
      Signed-off-by: default avatarCorinna Vinschen <vinschen@redhat.com>
      Acked-by: default avatarVinicius Costa Gomes <vinicius.gomes@intel.com>
      Tested-by: default avatarDvora Fuxbrumer <dvorax.fuxbrumer@linux.intel.com>
      Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
      453307b5
  2. Feb 07, 2022
  3. Feb 06, 2022
    • Eric Dumazet's avatar
      ref_tracker: remove filter_irq_stacks() call · c2d1e3df
      Eric Dumazet authored
      After commit e9400660
      
       ("lib/stackdepot: always do filter_irq_stacks()
      in stack_depot_save()") it became unnecessary to filter the stack
      before calling stack_depot_save().
      
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Cc: Marco Elver <elver@google.com>
      Cc: Alexander Potapenko <glider@google.com>
      Cc: Dmitry Vyukov <dvyukov@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c2d1e3df
    • Eric Dumazet's avatar
      net: initialize init_net earlier · 9c1be193
      Eric Dumazet authored
      While testing a patch that will follow later
      ("net: add netns refcount tracker to struct nsproxy")
      I found that devtmpfs_init() was called before init_net
      was initialized.
      
      This is a bug, because devtmpfs_setup() calls
      ksys_unshare(CLONE_NEWNS);
      
      This has the effect of increasing init_net refcount,
      which will be later overwritten to 1, as part of setup_net(&init_net)
      
      We had too many prior patches [1] trying to work around the root cause.
      
      Really, make sure init_net is in BSS section, and that net_ns_init()
      is called earlier at boot time.
      
      Note that another patch ("vfs: add netns refcount tracker
      to struct fs_context") also will need net_ns_init() being called
      before vfs_caches_init()
      
      As a bonus, this patch saves around 4KB in .data section.
      
      [1]
      
      f8c46cb3 ("netns: do not call pernet ops for not yet set up init_net namespace")
      b5082df8 ("net: Initialise init_net.count to 1")
      734b6541
      
       ("net: Statically initialize init_net.dev_base_head")
      
      v2: fixed a build error reported by kernel build bots (CONFIG_NET=n)
      
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9c1be193
    • Juhee Kang's avatar
      net: hsr: use hlist_head instead of list_head for mac addresses · 4acc45db
      Juhee Kang authored
      
      
      Currently, HSR manages mac addresses of known HSR nodes by using list_head.
      It takes a lot of time when there are a lot of registered nodes due to
      finding specific mac address nodes by using linear search. We can be
      reducing the time by using hlist. Thus, this patch moves list_head to
      hlist_head for mac addresses and this allows for further improvement of
      network performance.
      
          Condition: registered 10,000 known HSR nodes
          Before:
          # iperf3 -c 192.168.10.1 -i 1 -t 10
          Connecting to host 192.168.10.1, port 5201
          [  5] local 192.168.10.2 port 59442 connected to 192.168.10.1 port 5201
          [ ID] Interval           Transfer     Bitrate         Retr  Cwnd
          [  5]   0.00-1.49   sec  3.75 MBytes  21.1 Mbits/sec    0    158 KBytes
          [  5]   1.49-2.05   sec  1.25 MBytes  18.7 Mbits/sec    0    166 KBytes
          [  5]   2.05-3.06   sec  2.44 MBytes  20.3 Mbits/sec   56   16.9 KBytes
          [  5]   3.06-4.08   sec  1.43 MBytes  11.7 Mbits/sec   11   38.0 KBytes
          [  5]   4.08-5.00   sec   951 KBytes  8.49 Mbits/sec    0   56.3 KBytes
      
          After:
          # iperf3 -c 192.168.10.1 -i 1 -t 10
          Connecting to host 192.168.10.1, port 5201
          [  5] local 192.168.10.2 port 36460 connected to 192.168.10.1 port 5201
          [ ID] Interval           Transfer     Bitrate         Retr  Cwnd
          [  5]   0.00-1.00   sec  7.39 MBytes  62.0 Mbits/sec    3    130 KBytes
          [  5]   1.00-2.00   sec  5.06 MBytes  42.4 Mbits/sec   16    113 KBytes
          [  5]   2.00-3.00   sec  8.58 MBytes  72.0 Mbits/sec   42   94.3 KBytes
          [  5]   3.00-4.00   sec  7.44 MBytes  62.4 Mbits/sec    2    131 KBytes
          [  5]   4.00-5.07   sec  8.13 MBytes  63.5 Mbits/sec   38   92.9 KBytes
      
      Signed-off-by: default avatarJuhee Kang <claudiajkang@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4acc45db
  4. Feb 05, 2022