1. 21 Apr, 2017 28 commits
    • Mahesh Bandewar's avatar
      bonding: fix wq initialization for links created via netlink · ea8ffc08
      Mahesh Bandewar authored
      Earlier patch 4493b81b ("bonding: initialize work-queues during
      creation of bond") moved the work-queue initialization from bond_open()
      to bond_create(). However this caused the link those are created using
      netlink 'create bond option' (ip link add bondX type bond); create the
      new trunk without initializing work-queues. Prior to the above mentioned
      change, ndo_open was in both paths and things worked correctly. The
      consequence is visible in the report shared by Joe Stringer -
      
      I've noticed that this patch breaks bonding within namespaces if
      you're not careful to perform device cleanup correctly.
      
      Here's my repro script, you can run on any net-next with this patch
      and you'll start seeing some weird behaviour:
      
      ip netns add foo
      ip li add veth0 type veth peer name veth0+ netns foo
      ip li add veth1 type veth peer name veth1+ netns foo
      ip netns exec foo ip li add bond0 type bond
      ip netns exec foo ip li set dev veth0+ master bond0
      ip netns exec foo ip li set dev veth1+ master bond0
      ip netns exec foo ip addr add dev bond0 192.168.0.1/24
      ip netns exec foo ip li set dev bond0 up
      ip li del dev veth0
      ip li del dev veth1
      
      The second to last command segfaults, last command hangs. rtnl is now
      permanently locked. It's not a problem if you take bond0 down before
      deleting veths, or delete bond0 before deleting veths. If you delete
      either end of the veth pair as per above, either inside or outside the
      namespace, it hits this problem.
      
      Here's some kernel logs:
      [ 1221.801610] bond0: Enslaving veth0+ as an active interface with an up link
      [ 1224.449581] bond0: Enslaving veth1+ as an active interface with an up link
      [ 1281.193863] bond0: Releasing backup interface veth0+
      [ 1281.193866] bond0: the permanent HWaddr of veth0+ -
      16:bf:fb:e0:b8:43 - is still in use by bond0 - set the HWaddr of
      veth0+ to a different address to avoid conflicts
      [ 1281.193867] ------------[ cut here ]------------
      [ 1281.193873] WARNING: CPU: 0 PID: 2024 at kernel/workqueue.c:1511
      __queue_delayed_work+0x13f/0x150
      [ 1281.193873] Modules linked in: bonding veth openvswitch nf_nat_ipv6
      nf_nat_ipv4 nf_nat autofs4 nfsd auth_rpcgss nfs_acl binfmt_misc nfs
      lockd grace sunrpc fscache ppdev vmw_balloon coretemp psmouse
      serio_raw vmwgfx ttm drm_kms_helper vmw_vmci netconsole parport_pc
      configfs drm i2c_piix4 fb_sys_fops syscopyarea sysfillrect sysimgblt
      shpchp mac_hid nf_conntrack_ipv6 nf_defrag_ipv6 nf_conntrack_ipv4
      nf_defrag_ipv4 nf_conntrack libcrc32c lp parport hid_generic usbhid
      hid mptspi mptscsih e1000 mptbase ahci libahci
      [ 1281.193905] CPU: 0 PID: 2024 Comm: ip Tainted: G        W
      4.10.0-bisect-bond-v0.14 #37
      [ 1281.193906] Hardware name: VMware, Inc. VMware Virtual
      Platform/440BX Desktop Reference Platform, BIOS 6.00 09/30/2014
      [ 1281.193906] Call Trace:
      [ 1281.193912]  dump_stack+0x63/0x89
      [ 1281.193915]  __warn+0xd1/0xf0
      [ 1281.193917]  warn_slowpath_null+0x1d/0x20
      [ 1281.193918]  __queue_delayed_work+0x13f/0x150
      [ 1281.193920]  queue_delayed_work_on+0x27/0x40
      [ 1281.193929]  bond_change_active_slave+0x25b/0x670 [bonding]
      [ 1281.193932]  ? synchronize_rcu_expedited+0x27/0x30
      [ 1281.193935]  __bond_release_one+0x489/0x510 [bonding]
      [ 1281.193939]  ? addrconf_notify+0x1b7/0xab0
      [ 1281.193942]  bond_netdev_event+0x2c5/0x2e0 [bonding]
      [ 1281.193944]  ? netconsole_netdev_event+0x124/0x190 [netconsole]
      [ 1281.193947]  notifier_call_chain+0x49/0x70
      [ 1281.193948]  raw_notifier_call_chain+0x16/0x20
      [ 1281.193950]  call_netdevice_notifiers_info+0x35/0x60
      [ 1281.193951]  rollback_registered_many+0x23b/0x3e0
      [ 1281.193953]  unregister_netdevice_many+0x24/0xd0
      [ 1281.193955]  rtnl_delete_link+0x3c/0x50
      [ 1281.193956]  rtnl_dellink+0x8d/0x1b0
      [ 1281.193960]  rtnetlink_rcv_msg+0x95/0x220
      [ 1281.193962]  ? __kmalloc_node_track_caller+0x35/0x280
      [ 1281.193964]  ? __netlink_lookup+0xf1/0x110
      [ 1281.193966]  ? rtnl_newlink+0x830/0x830
      [ 1281.193967]  netlink_rcv_skb+0xa7/0xc0
      [ 1281.193969]  rtnetlink_rcv+0x28/0x30
      [ 1281.193970]  netlink_unicast+0x15b/0x210
      [ 1281.193971]  netlink_sendmsg+0x319/0x390
      [ 1281.193974]  sock_sendmsg+0x38/0x50
      [ 1281.193975]  ___sys_sendmsg+0x25c/0x270
      [ 1281.193978]  ? mem_cgroup_commit_charge+0x76/0xf0
      [ 1281.193981]  ? page_add_new_anon_rmap+0x89/0xc0
      [ 1281.193984]  ? lru_cache_add_active_or_unevictable+0x35/0xb0
      [ 1281.193985]  ? __handle_mm_fault+0x4e9/0x1170
      [ 1281.193987]  __sys_sendmsg+0x45/0x80
      [ 1281.193989]  SyS_sendmsg+0x12/0x20
      [ 1281.193991]  do_syscall_64+0x6e/0x180
      [ 1281.193993]  entry_SYSCALL64_slow_path+0x25/0x25
      [ 1281.193995] RIP: 0033:0x7f6ec122f5a0
      [ 1281.193995] RSP: 002b:00007ffe69e89c48 EFLAGS: 00000246 ORIG_RAX:
      000000000000002e
      [ 1281.193997] RAX: ffffffffffffffda RBX: 00007ffe69e8dd60 RCX: 00007f6ec122f5a0
      [ 1281.193997] RDX: 0000000000000000 RSI: 00007ffe69e89c90 RDI: 0000000000000003
      [ 1281.193998] RBP: 00007ffe69e89c90 R08: 0000000000000000 R09: 0000000000000003
      [ 1281.193999] R10: 00007ffe69e89a10 R11: 0000000000000246 R12: 0000000058f14b9f
      [ 1281.193999] R13: 0000000000000000 R14: 00000000006473a0 R15: 00007ffe69e8e450
      [ 1281.194001] ---[ end trace 713a77486cbfbfa3 ]---
      
      Fixes: 4493b81b ("bonding: initialize work-queues during creation of bond")
      Reported-by: default avatarJoe Stringer <joe@ovn.org>
      Tested-by: default avatarJoe Stringer <joe@ovn.org>
      Signed-off-by: default avatarMahesh Bandewar <maheshb@google.com>
      Acked-by: default avatarAndy Gospodarek <andy@greyhouse.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ea8ffc08
    • Alexander Kochetkov's avatar
      net: arc_emac: switch to phy_start()/phy_stop() · b18b7453
      Alexander Kochetkov authored
      Currently driver use phy_start_aneg() in arc_emac_open() to bring
      up PHY. But phy_start() function is more appropriate for this purposes.
      Besides that it call phy_start_aneg() as part of PHY startup sequence
      it also can correctly bring up PHY from error and suspended states.
      So the patch replace phy_start_aneg() to phy_start().
      
      Also the patch add call to phy_stop() to arc_emac_stop() to allow
      the PHY device to be fully suspended when the interface is unused.
      Signed-off-by: default avatarAlexander Kochetkov <al.kochet@gmail.com>
      Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b18b7453
    • David S. Miller's avatar
      Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec-next · 6b633e82
      David S. Miller authored
      Steffen Klassert says:
      
      ====================
      pull request (net-next): ipsec-next 2017-04-20
      
      This adds the basic infrastructure for IPsec hardware
      offloading, it creates a configuration API and adjusts
      the packet path.
      
      1) Add the needed netdev features to configure IPsec offloads.
      
      2) Add the IPsec hardware offloading API.
      
      3) Prepare the ESP packet path for hardware offloading.
      
      4) Add gso handlers for esp4 and esp6, this implements
         the software fallback for GSO packets.
      
      5) Add xfrm replay handler functions for offloading.
      
      6) Change ESP to use a synchronous crypto algorithm on
         offloading, we don't have the option for asynchronous
         returns when we handle IPsec at layer2.
      
      7) Add a xfrm validate function to validate_xmit_skb. This
         implements the software fallback for non GSO packets.
      
      8) Set the inner_network and inner_transport members of
         the SKB, as well as encapsulation, to reflect the actual
         positions of these headers, and removes them only once
         encryption is done on the payload.
         From Ilan Tayari.
      
      9) Prepare the ESP GRO codepath for hardware offloading.
      
      10) Fix incorrect null pointer check in esp6.
          From Colin Ian King.
      
      11) Fix for the GSO software fallback path to detect the
          fallback correctly.
          From Ilan Tayari.
      
      Please pull or let me know if there are problems.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6b633e82
    • Steffen Klassert's avatar
      MAINTAINERS: Add new IPsec offloading files. · 77999328
      Steffen Klassert authored
      This adds two new files to IPsec maintenance scope:
      
      net/ipv4/esp4_offload.c
      net/ipv6/ip6_offload.c
      Signed-off-by: default avatarSteffen Klassert <steffen.klassert@secunet.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      77999328
    • David S. Miller's avatar
      Merge branch '40GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue · 072cec77
      David S. Miller authored
      Jeff Kirsher says:
      
      ====================
      40GbE Intel Wired LAN Driver Updates 2017-04-19
      
      This series contains updates to i40e and i40evf only, most notable being
      the addition of trace points for BPF programs.
      
      Tobias Klauser updates i40evf to use net_device stats struct instead
      of a local private copy.
      
      Preethi updates the VF driver to not enable receive checksum offload by
      default for tunneled packets.
      
      Alex fixes an issue he introduced when he converted the code over to
      using the length field to determine if a descriptor was done or not.
      
      Mitch adds the ability to dump additional information on the VFs, which
      is not available through 'ip link show' using debugfs.
      
      Scott adds trace points to the drivers so that BPF programs can be
      attached for feature testing and verification.
      
      Jingjing adds admin queue functions for Pipeline Personalization Profile
      commands.
      
      Jake does most of the heavy lifting in this series, starting with the
      a reduction in the scope of the RTNL lock being held while resetting VFs
      to allow multiple PFs to reset in a timely manner.  Factored out the
      direct queue modification so that we are able to re-use the code.
      Reduced the wait time for admin queue commands to complete, since we were
      waiting a minimum of a millisecond, when in practice the admin queue
      command is processed often much faster.  Cleaned up code (flag) we never
      use.  Make the code to resetting all the VFs optimized for parallel
      computing instead of the current way is a serialized fashion, to help
      reduce the time it takes.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      072cec77
    • stephen hemminger's avatar
      netvsc: fix use after free on module removal · 76bb5db5
      stephen hemminger authored
      The NAPI data structure is embedded in the netvsc_device structure
      and is freed when device is closed. There is still a reference
      (in NAPI list) to this which causes a crash in netif_napi_del
      when device is removed. Fix by managing NAPI instances correctly.
      Signed-off-by: default avatarStephen Hemminger <sthemmin@microsoft.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      76bb5db5
    • David S. Miller's avatar
      Merge branch 'tc-filter-cleanup-destroy-delete' · dfb05553
      David S. Miller authored
      Cong Wang says:
      
      ====================
      net_sched: clean up tc filter destroy and delete logic
      
      The first patch fixes a potenial race condition, the second one
      is pure cleanup.
      ====================
      Signed-off-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      dfb05553
    • WANG Cong's avatar
      net_sched: remove useless NULL to tp->root · 43920538
      WANG Cong authored
      There is no need to NULL tp->root in ->destroy(), since tp is
      going to be freed very soon, and existing readers are still
      safe to read them.
      
      For cls_route, we always init its tp->root, so it can't be NULL,
      we can drop more useless code.
      
      Cc: Daniel Borkmann <daniel@iogearbox.net>
      Cc: John Fastabend <john.fastabend@gmail.com>
      Cc: Jamal Hadi Salim <jhs@mojatatu.com>
      Signed-off-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      43920538
    • WANG Cong's avatar
      net_sched: move the empty tp check from ->destroy() to ->delete() · 763dbf63
      WANG Cong authored
      We could have a race condition where in ->classify() path we
      dereference tp->root and meanwhile a parallel ->destroy() makes it
      a NULL. Daniel cured this bug in commit d9363774
      ("net, sched: respect rcu grace period on cls destruction").
      
      This happens when ->destroy() is called for deleting a filter to
      check if we are the last one in tp, this tp is still linked and
      visible at that time. The root cause of this problem is the semantic
      of ->destroy(), it does two things (for non-force case):
      
      1) check if tp is empty
      2) if tp is empty we could really destroy it
      
      and its caller, if cares, needs to check its return value to see if it
      is really destroyed. Therefore we can't unlink tp unless we know it is
      empty.
      
      As suggested by Daniel, we could actually move the test logic to ->delete()
      so that we can safely unlink tp after ->delete() tells us the last one is
      just deleted and before ->destroy().
      
      Fixes: 1e052be6 ("net_sched: destroy proto tp when all filters are gone")
      Cc: Roi Dayan <roid@mellanox.com>
      Cc: Daniel Borkmann <daniel@iogearbox.net>
      Cc: John Fastabend <john.fastabend@gmail.com>
      Cc: Jamal Hadi Salim <jhs@mojatatu.com>
      Signed-off-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
      Acked-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      763dbf63
    • Daniel Borkmann's avatar
      bpf: add napi_id read access to __sk_buff · b1d9fc41
      Daniel Borkmann authored
      Add napi_id access to __sk_buff for socket filter program types, tc
      program types and other bpf_convert_ctx_access() users. Having access
      to skb->napi_id is useful for per RX queue listener siloing, f.e.
      in combination with SO_ATTACH_REUSEPORT_EBPF and when busy polling is
      used, meaning SO_REUSEPORT enabled listeners can then select the
      corresponding socket at SYN time already [1]. The skb is marked via
      skb_mark_napi_id() early in the receive path (e.g., napi_gro_receive()).
      
      Currently, sockets can only use SO_INCOMING_NAPI_ID from 6d433902
      ("net: Introduce SO_INCOMING_NAPI_ID") as a socket option to look up
      the NAPI ID associated with the queue for steering, which requires a
      prior sk_mark_napi_id() after the socket was looked up.
      
      Semantics for the __sk_buff napi_id access are similar, meaning if
      skb->napi_id is < MIN_NAPI_ID (e.g. outgoing packets using sender_cpu),
      then an invalid napi_id of 0 is returned to the program, otherwise a
      valid non-zero napi_id.
      
        [1] http://netdevconf.org/2.1/slides/apr6/dumazet-BUSY-POLLING-Netdev-2.1.pdfSuggested-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
      Acked-by: default avatarAlexei Starovoitov <ast@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b1d9fc41
    • K. Y. Srinivasan's avatar
      netvsc: Deal with rescinded channels correctly · 73e64fa4
      K. Y. Srinivasan authored
      We will not be able to send packets over a channel that has been
      rescinded. Make necessary adjustments so we can properly cleanup
      even when the channel is rescinded. This issue can be trigerred
      in the NIC hot-remove path.
      Signed-off-by: default avatarK. Y. Srinivasan <kys@microsoft.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      73e64fa4
    • David S. Miller's avatar
      Merge branch 'ibmvnic-updates-and-bug-fixes' · 87e978ed
      David S. Miller authored
      Nathan Fontenot says:
      
      ====================
      ibmvnic: Updates and bug fixes
      
      This set of patches is a series of updates to remove some unneeded
      and unused code in the driver as well as bug fixes for the
      ibmvnic driver.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      87e978ed
    • Nathan Fontenot's avatar
      ibmvnic: Remove unused bouce buffer · d76e0fec
      Nathan Fontenot authored
      The bounce buffer is not used in the ibmvnic driver, just
      get rid of it.
      Signed-off-by: default avatarNathan Fontenot <nfont@linux.vnet.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d76e0fec
    • Nathan Fontenot's avatar
      ibmvnic: Allocate zero-filled memory for sub crqs · 7f7adc50
      Nathan Fontenot authored
      Update the allocation of memory for the sub crq structs and their
      associated pages to allocate zero-filled memory.
      Signed-off-by: default avatarNathan Fontenot <nfont@linux.vnet.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7f7adc50
    • Brian King's avatar
      ibmvnic: Disable irq prior to close · dd9c20fa
      Brian King authored
          Add some code to call disable_irq on all the vnic interface's irqs.
          This fixes a crash observed when closing an active interface, as
          seen in the oops below when we try to access a buffer in the interrupt
          handler which we've already freed.
      
          Unable to handle kernel paging request for data at address 0x00000001
          Faulting instruction address: 0xd000000003886824
          Oops: Kernel access of bad area, sig: 11 [#1]
          SMP NR_CPUS=2048 NUMA pSeries
          Modules linked in: ibmvnic(OEN) rpadlpar_io(X) rpaphp(X) tcp_diag udp_diag inet_diag unix_diag af_packet_diag netlink_diag rpcsec_
          Supported: No, Unsupported modules are loaded
          CPU: 8 PID: 0 Comm: swapper/8 Tainted: G           OE   NX 4.4.49-92.11-default #1
          task: c00000007f990110 ti: c0000000fffa0000 task.ti: c00000007f9b8000
          NIP: d000000003886824 LR: d000000003886824 CTR: c0000000007eff60
          REGS: c0000000fffa3a70 TRAP: 0300   Tainted: G           OE   NX  (4.4.49-92.11-default)
          MSR: 8000000000009033 <SF,EE,ME,IR,DR,RI,LE>  CR: 22008042  XER: 20000008
          CFAR: c000000000008468 DAR: 0000000000000001 DSISR: 40000000 SOFTE: 0
          GPR00: d000000003886824 c0000000fffa3cf0 d000000003894118 0000000000000000
          GPR04: 0000000000000000 0000000000000000 c000000001249da0 0000000000000000
          GPR08: 000000000000000e 0000000000000000 c0000000ccb00000 d000000003889180
          GPR12: c0000000007eff60 c000000007af4c00 0000000000000001 c0000000010def30
          GPR16: c00000007f9b8000 c000000000b98c30 c00000007f9b8080 c000000000bab858
          GPR20: 0000000000000005 0000000000000000 c0000000ff5d7e80 c0000000f809f648
          GPR24: c0000000ff5d7ec8 0000000000000000 0000000000000000 c0000000ccb001a0
          GPR28: 000000000000000a c0000000f809f600 c0000000fd4cd900 c0000000f9cd5b00
          NIP [d000000003886824] ibmvnic_interrupt_tx+0x114/0x380 [ibmvnic]
          LR [d000000003886824] ibmvnic_interrupt_tx+0x114/0x380 [ibmvnic]
          Call Trace:
          [c0000000fffa3cf0] [d000000003886824] ibmvnic_interrupt_tx+0x114/0x380 [ibmvnic] (unreliable)
          [c0000000fffa3dd0] [c000000000132940] __handle_irq_event_percpu+0x90/0x2e0
          [c0000000fffa3e90] [c000000000132bcc] handle_irq_event_percpu+0x3c/0x90
          [c0000000fffa3ed0] [c000000000132c88] handle_irq_event+0x68/0xc0
          [c0000000fffa3f00] [c000000000137edc] handle_fasteoi_irq+0xec/0x250
          [c0000000fffa3f30] [c000000000131b04] generic_handle_irq+0x54/0x80
          [c0000000fffa3f60] [c000000000011190] __do_irq+0x80/0x1d0
          [c0000000fffa3f90] [c0000000000248d8] call_do_irq+0x14/0x24
          [c00000007f9bb9e0] [c000000000011380] do_IRQ+0xa0/0x120
          [c00000007f9bba40] [c000000000002594] hardware_interrupt_common+0x114/0x180
      Signed-off-by: default avatarBrian King <brking@linux.vnet.ibm.com>
      Signed-off-by: default avatarNathan Fontenot <nfont@linux.vnet.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      dd9c20fa
    • Nathan Fontenot's avatar
      ibmvnic: Correct crq and resource releasing · 37489055
      Nathan Fontenot authored
      We should not be releasing the crq's when calling close for the
      adapter, these need to remain open to facilitate operations such
      as updating the mac address. The crq's should be released in the
      adpaters remove routine.
      
      Additionally, we need to call release_reources from remove. This
      corrects the scenario of trying to remove an adapter that has only
      been probed.
      Signed-off-by: default avatarNathan Fontenot <nfont@linux.vnet.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      37489055
    • Nathan Fontenot's avatar
      ibmvnic: Remove inflight list · 661a2622
      Nathan Fontenot authored
      The inflight list used to track memory that is allocated for crq that are
      inflight is not needed. The one piece of the inflight list that does need
      to be cleaned at module exit is the error buffer list which is already
      attached to the adapter struct.
      
      This patch removes the inflight list and moves checking the error buffer
      list to ibmvnic_remove.
      Signed-off-by: default avatarNathan Fontenot <nfont@linux.vnet.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      661a2622
    • Brian King's avatar
      ibmvnic: Do not disable IRQ after scheduling tasklet · ed7ecbf7
      Brian King authored
      Since the primary CRQ is only used for service functions and
      not in the performance path, simplify the code a bit and avoid
      disabling the IRQ.
      Signed-off-by: default avatarBrian King <brking@linux.vnet.ibm.com>
      Signed-off-by: default avatarNathan Fontenot <nfont@linux.vnet.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ed7ecbf7
    • Brian King's avatar
      ibmvnic: Fixup atomic API usage · 58c8c0c0
      Brian King authored
      Replace a couple of modifications of an atomic followed
      by a read of the atomic, which is no longer atomic, to
      use atomic_XX_return variants to avoid race conditions.
      Signed-off-by: default avatarBrian King <brking@linux.vnet.ibm.com>
      Signed-off-by: default avatarNathan Fontenot <nfont@linux.vnet.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      58c8c0c0
    • Brian King's avatar
      ibmvnic: Unmap longer term buffer before free · 59af56c2
      Brian King authored
      Make sure we unregister long term buffers from the adapter
      prior to DMA unmapping it and freeing the buffer. Failure
      to do so could result in a DMA to a now invalid address.
      Signed-off-by: default avatarBrian King <brking@linux.vnet.ibm.com>
      Signed-off-by: default avatarNathan Fontenot <nfont@linux.vnet.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      59af56c2
    • Murilo Fossa Vicentini's avatar
      ibmvnic: Fix ibmvnic_change_mac_addr struct format · 993a82b0
      Murilo Fossa Vicentini authored
      The ibmvnic_change_mac_addr struct alignment was not matching the defined
      format in PAPR+, it had the reserved and return code fields swapped. As a
      consequence, the CHANGE_MAC_ADDR_RSP commands were being improperly handled
      and executed even when the operation wasn't successfully completed by the
      system firmware.
      
      Also changing the endianness of the debug message to make it easier to
      parse the CRQ content.
      Signed-off-by: default avatarMurilo Fossa Vicentini <muvic@linux.vnet.ibm.com>
      Signed-off-by: default avatarNathan Fontenot <nfont@linux.vnet.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      993a82b0
    • Thomas Falcon's avatar
      ibmvnic: Report errors when failing to release sub-crqs · ffa73855
      Thomas Falcon authored
      Add reporting of errors when releasing sub-crqs fails.
      Signed-off-by: default avatarThomas Falcon <tlfalcon@us.ibm.com>
      Signed-off-by: default avatarNathan Fontenot <nfont@linux.vnet.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ffa73855
    • Arnd Bergmann's avatar
      liquidio: remove unnecessary variable assignment · ca1cb28d
      Arnd Bergmann authored
      gcc points out an useless assignment that was added during code refactoring:
      
      drivers/net/ethernet/cavium/liquidio/lio_ethtool.c: In function 'octnet_intrmod_callback':
      drivers/net/ethernet/cavium/liquidio/lio_ethtool.c:1315:59: error: parameter 'oct_dev' set but not used [-Werror=unused-but-set-parameter]
      
      This is harmless but can clearly be remove to avoid the warning.
      
      Fixes: 50c0add5 ("liquidio: refactor interrupt moderation code")
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ca1cb28d
    • Matthew Whitehead's avatar
      Replace 2 jiffies with sysctl netdev_budget_usecs to enable softirq tuning · 7acf8a1e
      Matthew Whitehead authored
      Constants used for tuning are generally a bad idea, especially as hardware
      changes over time. Replace the constant 2 jiffies with sysctl variable
      netdev_budget_usecs to enable sysadmins to tune the softirq processing.
      Also document the variable.
      
      For example, a very fast machine might tune this to 1000 microseconds,
      while my regression testing 486DX-25 needs it to be 4000 microseconds on
      a nearly idle network to prevent time_squeeze from being incremented.
      
      Version 2: changed jiffies to microseconds for predictable units.
      Signed-off-by: default avatarMatthew Whitehead <tedheadster@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7acf8a1e
    • David S. Miller's avatar
      Merge branch 'iptunnel-policy-based-routing' · 20da848f
      David S. Miller authored
      Craig Gallek says:
      
      ====================
      ip_tunnel: Allow policy-based routing through tunnels
      
      iproute2 changes to follow.  Example usage:
        ip link add gre-test type gre local 10.0.0.1 remote 10.0.0.2 fwmark 0x4
        ip -detail link show gre-test
        ...
        ip link set gre-test type gre fwmark 0
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      20da848f
    • Craig Gallek's avatar
      ip_tunnel: Allow policy-based routing through tunnels · 9830ad4c
      Craig Gallek authored
      This feature allows the administrator to set an fwmark for
      packets traversing a tunnel.  This allows the use of independent
      routing tables for tunneled packets without the use of iptables.
      
      There is no concept of per-packet routing decisions through IPv4
      tunnels, so this implementation does not need to work with
      per-packet route lookups as the v6 implementation may
      (with IP6_TNL_F_USE_ORIG_FWMARK).
      
      Further, since the v4 tunnel ioctls share datastructures
      (which can not be trivially modified) with the kernel's internal
      tunnel configuration structures, the mark attribute must be stored
      in the tunnel structure itself and passed as a parameter when
      creating or changing tunnel attributes.
      Signed-off-by: default avatarCraig Gallek <kraig@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9830ad4c
    • Craig Gallek's avatar
      ip6_tunnel: Allow policy-based routing through tunnels · 0a473b82
      Craig Gallek authored
      This feature allows the administrator to set an fwmark for
      packets traversing a tunnel.  This allows the use of independent
      routing tables for tunneled packets without the use of iptables.
      Signed-off-by: default avatarCraig Gallek <kraig@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0a473b82
    • Florian Fainelli's avatar
      net: dsa: Remove redundant NULL dst check · 8e6c1812
      Florian Fainelli authored
      tag_lan9303.c does check for a NULL dst but that's already checked by
      dsa_switch_rcv() one layer above.
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Acked-by: default avatarJuergen Borleis <jbe@pengutronix.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8e6c1812
  2. 20 Apr, 2017 12 commits