1. 19 Jul, 2016 1 commit
    • Gavin Shan's avatar
      net/ncsi: Resource management · 2d283bdd
      Gavin Shan authored
      NCSI spec (DSP0222) defines several objects: package, channel, mode,
      filter, version and statistics etc. This introduces the data structs
      to represent those objects and implement functions to manage them.
      Also, this introduces CONFIG_NET_NCSI for the newly implemented NCSI
         * The user (e.g. netdev driver) dereference NCSI device by
           "struct ncsi_dev", which is embedded to "struct ncsi_dev_priv".
           The later one is used by NCSI stack internally.
         * Every NCSI device can have multiple packages simultaneously, up
           to 8 packages. It's represented by "struct ncsi_package" and
           identified by 3-bits ID.
         * Every NCSI package can have multiple channels, up to 32. It's
           represented by "struct ncsi_channel" and identified by 5-bits ID.
         * Every NCSI channel has version, statistics, various modes and
           filters. They are represented by "struct ncsi_channel_version",
           "struct ncsi_channel_stats", "struct ncsi_channel_mode" and
           "struct ncsi_channel_filter" separately.
         * Apart from AEN (Asynchronous Event Notification), the NCSI stack
           works in terms of command and response. This introduces "struct
           ncsi_req" to represent a complete NCSI transaction made of NCSI
           request and response.
      link: https://www.dmtf.org/sites/default/files/standards/documents/DSP0222_1.1.0.pdfSigned-off-by: default avatarGavin Shan <gwshan@linux.vnet.ibm.com>
      Acked-by: default avatarJoel Stanley <joel@jms.id.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
  2. 08 May, 2016 1 commit
  3. 09 Mar, 2016 1 commit
    • Tom Herbert's avatar
      kcm: Kernel Connection Multiplexor module · ab7ac4eb
      Tom Herbert authored
      This module implements the Kernel Connection Multiplexor.
      Kernel Connection Multiplexor (KCM) is a facility that provides a
      message based interface over TCP for generic application protocols.
      With KCM an application can efficiently send and receive application
      protocol messages over TCP using datagram sockets.
      For more information see the included Documentation/networking/kcm.txt
      Signed-off-by: default avatarTom Herbert <tom@herbertland.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
  4. 29 Sep, 2015 1 commit
  5. 03 Mar, 2015 1 commit
  6. 10 Dec, 2014 1 commit
    • Al Viro's avatar
      make default ->i_fop have ->open() fail with ENXIO · bd9b51e7
      Al Viro authored
      As it is, default ->i_fop has NULL ->open() (along with all other methods).
      The only case where it matters is reopening (via procfs symlink) a file that
      didn't get its ->f_op from ->i_fop - anything else will have ->i_fop assigned
      to something sane (default would fail on read/write/ioctl/etc.).
      	Unfortunately, such case exists - alloc_file() users, especially
      anon_get_file() ones.  There we have tons of opened files of very different
      kinds sharing the same inode.  As the result, attempt to reopen those via
      procfs succeeds and you get a descriptor you can't do anything with.
      	Moreover, in case of sockets we set ->i_fop that will only be used
      on such reopen attempts - and put a failing ->open() into it to make sure
      those do not succeed.
      	It would be simpler to put such ->open() into default ->i_fop and leave
      it unchanged both for anon inode (as we do anyway) and for socket ones.  Result:
      	* everything going through do_dentry_open() works as it used to
      	* sock_no_open() kludge is gone
      	* attempts to reopen anon-inode files fail as they really ought to
      	* ditto for aio_private_file()
      	* ditto for perfmon - this one actually tried to imitate sock_no_open()
      trick, but failed to set ->i_fop, so in the current tree reopens succeed and
      yield completely useless descriptor.  Intent clearly had been to fail with
      -ENXIO on such reopens; now it actually does.
      	* everything else that used alloc_file() keeps working - it has ->i_fop
      set for its inodes anyway
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
  7. 02 Dec, 2014 1 commit
  8. 11 Jul, 2014 1 commit
  9. 15 Jan, 2014 1 commit
  10. 03 Nov, 2013 1 commit
    • Arvid Brodin's avatar
      net/hsr: Add support for the High-availability Seamless Redundancy protocol (HSRv0) · f421436a
      Arvid Brodin authored
      High-availability Seamless Redundancy ("HSR") provides instant failover
      redundancy for Ethernet networks. It requires a special network topology where
      all nodes are connected in a ring (each node having two physical network
      interfaces). It is suited for applications that demand high availability and
      very short reaction time.
      HSR acts on the Ethernet layer, using a registered Ethernet protocol type to
      send special HSR frames in both directions over the ring. The driver creates
      virtual network interfaces that can be used just like any ordinary Linux
      network interface, for IP/TCP/UDP traffic etc. All nodes in the network ring
      must be HSR capable.
      This code is a "best effort" to comply with the HSR standard as described in
      IEC 62439-3:2010 (HSRv0).
      Signed-off-by: default avatarArvid Brodin <arvid.brodin@xdin.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
  11. 27 May, 2013 1 commit
    • Simon Horman's avatar
      MPLS: Add limited GSO support · 0d89d203
      Simon Horman authored
      In the case where a non-MPLS packet is received and an MPLS stack is
      added it may well be the case that the original skb is GSO but the
      NIC used for transmit does not support GSO of MPLS packets.
      The aim of this code is to provide GSO in software for MPLS packets
      whose skbs are GSO.
      SKB Usage:
      When an implementation adds an MPLS stack to a non-MPLS packet it should do
      the following to skb metadata:
      * Set skb->inner_protocol to the old non-MPLS ethertype of the packet.
        skb->inner_protocol is added by this patch.
      * Set skb->protocol to the new MPLS ethertype of the packet.
      * Set skb->network_header to correspond to the
        end of the L3 header, including the MPLS label stack.
      I have posted a patch, "[PATCH v3.29] datapath: Add basic MPLS support to
      kernel" which adds MPLS support to the kernel datapath of Open vSwtich.
      That patch sets the above requirements in datapath/actions.c:push_mpls()
      and was used to exercise this code.  The datapath patch is against the Open
      vSwtich tree but it is intended that it be added to the Open vSwtich code
      present in the mainline Linux kernel at some point.
      I believe that the approach that I have taken is at least partially
      consistent with the handling of other protocols.  Jesse, I understand that
      you have some ideas here.  I am more than happy to change my implementation.
      This patch adds dev->mpls_features which may be used by devices
      to advertise features supported for MPLS packets.
      A new NETIF_F_MPLS_GSO feature is added for devices which support
      hardware MPLS GSO offload.  Currently no devices support this
      and MPLS GSO always falls back to software.
      Alternate Implementation:
      One possible alternate implementation is to teach netif_skb_features()
      and skb_network_protocol() about MPLS, in a similar way to their
      understanding of VLANs. I believe this would avoid the need
      for net/mpls/mpls_gso.c and in particular the calls to
      __skb_push() and __skb_push() in mpls_gso_segment().
      I have decided on the implementation in this patch as it should
      not introduce any overhead in the case where mpls_gso is not compiled
      into the kernel or inserted as a module.
      MPLS GSO suggested by Jesse Gross.
      Based in part on "v4 GRE: Add TCP segmentation offload for GRE"
      by Pravin B Shelar.
      Cc: Jesse Gross <jesse@nicira.com>
      Cc: Pravin B Shelar <pshelar@nicira.com>
      Signed-off-by: default avatarSimon Horman <horms@verge.net.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
  12. 10 Feb, 2013 1 commit
    • Andy King's avatar
      VSOCK: Introduce VM Sockets · d021c344
      Andy King authored
      VM Sockets allows communication between virtual machines and the hypervisor.
      User level applications both in a virtual machine and on the host can use the
      VM Sockets API, which facilitates fast and efficient communication between
      guest virtual machines and their host.  A socket address family, designed to be
      compatible with UDP and TCP at the interface level, is provided.
      Today, VM Sockets is used by various VMware Tools components inside the guest
      for zero-config, network-less access to VMware host services.  In addition to
      this, VMware's users are using VM Sockets for various applications, where
      network access of the virtual machine is restricted or non-existent.  Examples
      of this are VMs communicating with device proxies for proprietary hardware
      running as host applications and automated testing of applications running
      within virtual machines.
      The VMware VM Sockets are similar to other socket types, like Berkeley UNIX
      socket interface.  The VM Sockets module supports both connection-oriented
      stream sockets like TCP, and connectionless datagram sockets like UDP. The VM
      Sockets protocol family is defined as "AF_VSOCK" and the socket operations
      split for SOCK_DGRAM and SOCK_STREAM.
      For additional information about the use of VM Sockets, please refer to the
      VM Sockets Programming Guide available at:
      https://www.vmware.com/support/developer/vmci-sdk/Signed-off-by: default avatarGeorge Zhang <georgezhang@vmware.com>
      Signed-off-by: default avatarDmitry Torokhov <dtor@vmware.com>
      Signed-off-by: default avatarAndy king <acking@vmware.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
  13. 31 Jan, 2013 1 commit
    • Paul Gortmaker's avatar
      wanrouter: completely decouple obsolete code from kernel. · a786a7c0
      Paul Gortmaker authored
      The original suggestion to delete wanrouter started earlier
      with the mainline commit f0d1b3c2
      ("net/wanrouter: Deprecate and schedule for removal") in May 2012.
      More importantly, Dan Carpenter found[1] that the driver had a
      fundamental breakage introduced back in 2008, with commit
      7be6065b ("netdevice wanrouter: Convert directly reference of
      netdev->priv").  So we know with certainty that the code hasn't been
      used by anyone willing to at least take the effort to send an e-mail
      report of breakage for at least 4 years.
      This commit does a decouple of the wanrouter subsystem, by going
      after the Makefile/Kconfig and similar files, so that these mainline
      files that we are keeping do not have the big wanrouter file/driver
      deletion commit tied into their history.
      Once this commit is in place, we then can remove the obsolete cyclomx
      drivers and similar that have a dependency on CONFIG_WAN_ROUTER_DRIVERS.
      [1] http://www.spinics.net/lists/netdev/msg218670.htmlOriginally-by: default avatarJoe Perches <joe@perches.com>
      Cc: Dan Carpenter <dan.carpenter@oracle.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
  14. 18 Nov, 2012 1 commit
  15. 15 Nov, 2012 1 commit
    • Vlad Yasevich's avatar
      net: Make IPv6 build depend on CONFIG_INET · 751a97d7
      Vlad Yasevich authored
      IPv6 build selection currently controlled by CONFIG_NET, so it is
      possible to build IPv6 functinality without selectiona any TCP/IP
      features (CONFIG_INET).  Make IPv6 be consistent with IPv4.
      This should resolve the following issue:
      net/built-in.o: In function `tcp6_gro_complete':
      tcpv6_offload.c:(.text+0x3d045): undefined reference to
      net/built-in.o: In function `tcp6_gro_receive':
      tcpv6_offload.c:(.text+0x3d19b): undefined reference to
      net/built-in.o: In function `ipv6_exthdrs_offload_init':
      (.init.text+0x118b): undefined reference to `inet_del_offload'
      net/built-in.o:(.rodata+0x1c58): undefined reference to
      Signed-off-by: default avatarVlad Yasevich <vyasvic@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
  16. 17 May, 2012 1 commit
  17. 16 May, 2012 1 commit
  18. 03 Dec, 2011 1 commit
    • Jesse Gross's avatar
      net: Add Open vSwitch kernel components. · ccb1352e
      Jesse Gross authored
      Open vSwitch is a multilayer Ethernet switch targeted at virtualized
      environments.  In addition to supporting a variety of features
      expected in a traditional hardware switch, it enables fine-grained
      programmatic extension and flow-based control of the network.
      This control is useful in a wide variety of applications but is
      particularly important in multi-server virtualization deployments,
      which are often characterized by highly dynamic endpoints and the need
      to maintain logical abstractions for multiple tenants.
      The Open vSwitch datapath provides an in-kernel fast path for packet
      forwarding.  It is complemented by a userspace daemon, ovs-vswitchd,
      which is able to accept configuration from a variety of sources and
      translate it into packet processing rules.
      See http://openvswitch.org for more information and userspace
      Signed-off-by: default avatarJesse Gross <jesse@nicira.com>
  19. 05 Jul, 2011 1 commit
  20. 07 Mar, 2011 1 commit
  21. 31 Jan, 2011 2 commits
    • Greg Kroah-Hartman's avatar
      Revert "appletalk: move to staging" · 0ffbf8bf
      Greg Kroah-Hartman authored
      This reverts commit a6238f21
      Appletalk got some patches to fix up the BLK usage in it in the
      network tree, so this removal isn't needed.
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: <acme@ghostprotocols.net>
      Cc: netdev@vger.kernel.org,
      Cc: David Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    • Arnd Bergmann's avatar
      appletalk: move to staging · a6238f21
      Arnd Bergmann authored
      For all I know, Appletalk is dead, the only reasonable
      use right now would be nostalgia, and that can be served
      well enough by old kernels. The code is largely not
      in a bad shape, but it still uses the big kernel lock,
      and nobody seems motivated to change that.
      FWIW, the last release of MacOS that supported Appletalk
      was MacOS X 10.5, made in 2007, and it has been abandoned
      by Apple with 10.6. Using TCP/IP instead of Appletalk has
      been supported since MacOS 7.6, which was released in
      1997 and is able to run on most of the legacy hardware.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Cc: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
      Cc: netdev@vger.kernel.org
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
  22. 16 Dec, 2010 1 commit
  23. 20 Oct, 2010 1 commit
    • Yehuda Sadeh's avatar
      ceph: factor out libceph from Ceph file system · 3d14c5d2
      Yehuda Sadeh authored
      This factors out protocol and low-level storage parts of ceph into a
      separate libceph module living in net/ceph and include/linux/ceph.  This
      is mostly a matter of moving files around.  However, a few key pieces
      of the interface change as well:
       - ceph_client becomes ceph_fs_client and ceph_client, where the latter
         captures the mon and osd clients, and the fs_client gets the mds client
         and file system specific pieces.
       - Mount option parsing and debugfs setup is correspondingly broken into
         two pieces.
       - The mon client gets a generic handler callback for otherwise unknown
         messages (mds map, in this case).
       - The basic supported/required feature bits can be expanded (and are by
      No functional change, aside from some subtle error handling cases that got
      cleaned up in the refactoring process.
      Signed-off-by: default avatarSage Weil <sage@newdream.net>
  24. 05 Aug, 2010 1 commit
    • Wang Lei's avatar
      DNS: Separate out CIFS DNS Resolver code · 1a4240f4
      Wang Lei authored
      Separate out the DNS resolver key type from the CIFS filesystem into its own
      module so that it can be made available for general use, including the AFS
      filesystem module.
      This facility makes it possible for the kernel to upcall to userspace to have
      it issue DNS requests, package up the replies and present them to the kernel
      in a useful form.  The kernel is then able to cache the DNS replies as keys
      can be retained in keyrings.
      Resolver keys are of type "dns_resolver" and have a case-insensitive
      description that is of the form "[<type>:]<domain_name>".  The optional <type>
      indicates the particular DNS lookup and packaging that's required.  The
      <domain_name> is the query to be made.
      If <type> isn't given, a basic hostname to IP address lookup is made, and the
      result is stored in the key in the form of a printable string consisting of a
      comma-separated list of IPv4 and IPv6 addresses.
      This key type is supported by userspace helpers driven from /sbin/request-key
      and configured through /etc/request-key.conf.  The cifs.upcall utility is
      invoked for UNC path server name to IP address resolution.
      The CIFS functionality is encapsulated by the dns_resolve_unc_to_ip() function,
      which is used to resolve a UNC path to an IP address for CIFS filesystem.  This
      part remains in the CIFS module for now.
      See the added Documentation/networking/dns_resolver.txt for more information.
      Signed-off-by: default avatarWang Lei <wang840925@gmail.com>
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Acked-by: default avatarJeff Layton <jlayton@redhat.com>
      Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
  25. 29 Jun, 2010 1 commit
  26. 03 Apr, 2010 2 commits
  27. 30 Mar, 2010 1 commit
  28. 12 Jul, 2009 1 commit
  29. 09 Jun, 2009 1 commit
    • Sergey Lapin's avatar
      net: add IEEE 802.15.4 socket family implementation · 9ec76716
      Sergey Lapin authored
      Add support for communication over IEEE 802.15.4 networks. This implementation
      is neither certified nor complete, but aims to that goal. This commit contains
      only the socket interface for communication over IEEE 802.15.4 networks.
      One can either send RAW datagrams or use SOCK_DGRAM to encapsulate data
      inside normal IEEE 802.15.4 packets.
      Configuration interface, drivers and software MAC 802.15.4 implementation will
      Initial implementation was done by Maxim Gorbachyov, Maxim Osipov and Pavel
      Smolensky as a research project at Siemens AG. Later the stack was heavily
      reworked to better suit the linux networking model, and is now maitained
      as an open project partially sponsored by Siemens.
      Signed-off-by: default avatarDmitry Eremin-Solenikov <dbaryshkov@gmail.com>
      Signed-off-by: default avatarSergey Lapin <slapin@ossfans.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
  30. 27 Feb, 2009 1 commit
  31. 07 Jan, 2009 1 commit
  32. 25 Nov, 2008 1 commit
  33. 21 Nov, 2008 1 commit
  34. 20 Nov, 2008 1 commit
  35. 08 Oct, 2008 1 commit
    • Lennert Buytenhek's avatar
      net: Distributed Switch Architecture protocol support · 91da11f8
      Lennert Buytenhek authored
      Distributed Switch Architecture is a protocol for managing hardware
      switch chips.  It consists of a set of MII management registers and
      commands to configure the switch, and an ethernet header format to
      signal which of the ports of the switch a packet was received from
      or is intended to be sent to.
      The switches that this driver supports are typically embedded in
      access points and routers, and a typical setup with a DSA switch
      looks something like this:
      	+-----------+       +-----------+
      	|           | RGMII |           |
      	|           +-------+           +------ 1000baseT MDI ("WAN")
      	|           |       |  6-port   +------ 1000baseT MDI ("LAN1")
      	|    CPU    |       |  ethernet +------ 1000baseT MDI ("LAN2")
      	|           |MIImgmt|  switch   +------ 1000baseT MDI ("LAN3")
      	|           +-------+  w/5 PHYs +------ 1000baseT MDI ("LAN4")
      	|           |       |           |
      	+-----------+       +-----------+
      The switch driver presents each port on the switch as a separate
      network interface to Linux, polls the switch to maintain software
      link state of those ports, forwards MII management interface
      accesses to those network interfaces (e.g. as done by ethtool) to
      the switch, and exposes the switch's hardware statistics counters
      via the appropriate Linux kernel interfaces.
      This initial patch supports the MII management interface register
      layout of the Marvell 88E6123, 88E6161 and 88E6165 switch chips, and
      supports the "Ethertype DSA" packet tagging format.
      (There is no officially registered ethertype for the Ethertype DSA
      packet format, so we just grab a random one.  The ethertype to use
      is programmed into the switch, and the switch driver uses the value
      of ETH_P_EDSA for this, so this define can be changed at any time in
      the future if the one we chose is allocated to another protocol or
      if Ethertype DSA gets its own officially registered ethertype, and
      everything will continue to work.)
      Signed-off-by: default avatarLennert Buytenhek <buytenh@marvell.com>
      Tested-by: default avatarNicolas Pitre <nico@marvell.com>
      Tested-by: default avatarByron Bradley <byron.bbradley@gmail.com>
      Tested-by: default avatarTim Ellis <tim.ellis@mac.com>
      Tested-by: default avatarPeter van Valderen <linux@ddcrew.com>
      Tested-by: default avatarDirk Teurlings <dirk@upexia.nl>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
  36. 22 Sep, 2008 1 commit
  37. 08 Jul, 2008 1 commit
    • Patrick McHardy's avatar
      vlan: uninline __vlan_hwaccel_rx · 7750f403
      Patrick McHardy authored
      The function is huge and included at least once in every VLAN acceleration
      capable driver. Uninline it; to avoid having drivers depend on the VLAN
      module, the function is always built in statically when VLAN is enabled.
      With all VLAN acceleration capable drivers that build on x86_64 enabled,
      this results in:
         text    data     bss     dec     hex filename
      6515227  854044  343968 7713239  75b1d7 vmlinux.inlined
      6505637  854044  343968 7703649  758c61 vmlinux.uninlined
      Signed-off-by: default avatarPatrick McHardy <kaber@trash.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
  38. 28 Jan, 2008 1 commit