1. 15 Dec, 2017 38 commits
    • Xin Long's avatar
      sctp: implement validate_ftsn for sctp_stream_interleave · 0fc2ea92
      Xin Long authored
      validate_ftsn is added as a member of sctp_stream_interleave, used to
      validate ssn/chunk type for fwdtsn or mid (message id)/chunk type for
      ifwdtsn, called in sctp_sf_eat_fwd_tsn, just as validate_data.
      
      If this check fails, an abort packet will be sent, as said in section
      2.3.1 of RFC8260.
      
      As ifwdtsn and fwdtsn chunks have different length, it also defines
      ftsn_chunk_len for sctp_stream_interleave to describe the chunk size.
      Then it replaces all sizeof(struct sctp_fwdtsn_chunk) with
      sctp_ftsnchk_len.
      
      It also adds the process for ifwdtsn in rx path. As Marcelo pointed
      out, there's no need to add event table for ifwdtsn, but just share
      prsctp_chunk_event_table with fwdtsn's. It would drop fwdtsn chunk
      for ifwdtsn and drop ifwdtsn chunk for fwdtsn by calling validate_ftsn
      in sctp_sf_eat_fwd_tsn.
      
      After this patch, the ifwdtsn can be accepted.
      
      Note that this patch also removes the sctp.intl_enable check for
      idata chunks in sctp_chunk_event_lookup, as it will do this check
      in validate_data later.
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Acked-by: default avatarMarcelo R. Leitner <marcelo.leitner@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0fc2ea92
    • Xin Long's avatar
      sctp: implement generate_ftsn for sctp_stream_interleave · 8e0c3b73
      Xin Long authored
      generate_ftsn is added as a member of sctp_stream_interleave, used to
      create fwdtsn or ifwdtsn chunk according to abandoned chunks, called
      in sctp_retransmit and sctp_outq_sack.
      
      sctp_generate_iftsn works for ifwdtsn, and sctp_generate_fwdtsn is
      still used for making fwdtsn.
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Acked-by: default avatarMarcelo R. Leitner <marcelo.leitner@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8e0c3b73
    • Xin Long's avatar
      sctp: add basic structures and make chunk function for ifwdtsn · 2d07a49a
      Xin Long authored
      sctp_ifwdtsn_skip, sctp_ifwdtsn_hdr and sctp_ifwdtsn_chunk are used to
      define and parse I-FWD TSN chunk format, and sctp_make_ifwdtsn is a
      function to build the chunk.
      
      The I-FORWARD-TSN Chunk Format is defined in section 2.3.1 of RFC8260.
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Acked-by: default avatarMarcelo R. Leitner <marcelo.leitner@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2d07a49a
    • Florian Fainelli's avatar
      net: phy: phylink: Handle NULL fwnode_handle · 02477809
      Florian Fainelli authored
      Unlike the various of_* routines to fetch properties, fwnode_* routines can
      have an early check against a NULL fwnode_handle reference which makes them
      return -EINVAL (see fwnode_call_int_op), thus making it virtually impossible to
      differentiate what type of error is going on.
      
      Have an early check in phylink_register_sfp() so we can keep proceeding with
      the initialization, there is not much we can do without a valid fwnode_handle
      except return early and treat this similarly to -ENOENT.
      
      Fixes: 8fa7b9b6 ("phylink: convert to fwnode")
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Acked-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      02477809
    • Bjørn Mork's avatar
      qmi_wwan: set FLAG_SEND_ZLP to avoid network initiated disconnect · 245d2119
      Bjørn Mork authored
      It has been reported that the dummy byte we add to avoid
      ZLPs can be forwarded by the modem to the PGW/GGSN, and that
      some operators will drop the connection if this happens.
      
      In theory, QMI devices are based on CDC ECM and should as such
      both support ZLPs and silently ignore the dummy byte.  The latter
      assumption failed.  Let's test out the first.
      Signed-off-by: default avatarBjørn Mork <bjorn@mork.no>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      245d2119
    • Colin Ian King's avatar
      net: alteon: acenic: clean up indentation issue · 82f67bc6
      Colin Ian King authored
      There is a hunk of code that is incorrectly indented with spaces
      and rather than a tab.  Clean this up.
      Signed-off-by: default avatarColin Ian King <colin.king@canonical.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      82f67bc6
    • David S. Miller's avatar
      Merge branch 'sfp-SFF-module-support' · f3ac0153
      David S. Miller authored
      Russell King says:
      
      ====================
      Add SFF module support
      
      Add support for SFF modules.  SFF modules are similar to SFP modules,
      but they have fewer control signals, and are soldered down rather than
      pluggable.
      
      They also have different IDs in the EEPROM to identify as soldered down
      SFF modules.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f3ac0153
    • Russell King's avatar
      sfp: add sff module support · 259c8618
      Russell King authored
      Add support for SFF modules, which are soldered down SFP modules.
      These have a different phys_id value, and also have the present and
      rate select signals omitted compared with their socketed counter-parts.
      Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
      Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      259c8618
    • Russell King's avatar
      dt-bindings: add sff,sff binding for SFP support · 512dc8fe
      Russell King authored
      Add "sff,sff" for SFF module support with SFP.  These have a different
      phys_id value, and also have the present and rate select signals omitted
      compared with their socketed counter-parts.
      Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
      Reviewed-by: default avatarRob Herring <robh@kernel.org>
      Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      512dc8fe
    • David S. Miller's avatar
      Merge branch 'nfp-fix-rtsym-and-XPB-register-handling-in-debug-dump' · b4cf6a0a
      David S. Miller authored
      Simon Horman says:
      
      ====================
      nfp: fix rtsym and XPB register handling in debug dump
      
      this series resolves two problems in the recently added debug dump facility.
      
      * Correctly handle reading absolute rtysms
      * Correctly handle special-case PB register reads
      
      These fixes are for code only present in net-next.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b4cf6a0a
    • Carl Heymann's avatar
      nfp: fix XPB register reads in debug dump · 28b2d7d0
      Carl Heymann authored
      For XPB registers reads, some island IDs require special handling (e.g.
      ARM island), which is already taken care of in nfp_xpb_readl(), so use
      that instead of a straight CPP read.
      
      Without this fix all "xpbm:ArmIsldXpbmMap.*" registers are reported as
      0xffffffff. It has also been observed to cause a system reboot.
      
      With this fix correct values are reported, none of which are 0xffffffff.
      
      The values may be read using ethtool debug level 2.
       # ethtool -W <netdev> 2
       # ethtool -w <netdev> data dump.dat
      
      Fixes: 0e6c4955 ("nfp: dump CPP, XPB and direct ME CSRs")
      Signed-off-by: default avatarCarl Heymann <carl.heymann@netronome.com>
      Reviewed-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
      Signed-off-by: default avatarSimon Horman <simon.horman@netronome.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      28b2d7d0
    • Carl Heymann's avatar
      nfp: fix absolute rtsym handling in debug dump · da762863
      Carl Heymann authored
      In TLV-based ethtool debug dumps, don't do a CPP read for absolute
      rtsyms, use the addr field in the symbol table directly as the value.
      
      Without this fix rtsym gro_release_ring_0 is 4 bytes of zeros.
      With this fix the correct value, 0x0000004a 0x00000000 is reported.
      
      The values may be read using ethtool debug level 2.
       # ethtool -W <netdev> 2
       # ethtool -w <netdev> data dump.dat
      
      Fixes: e1e798e3 ("nfp: dump rtsyms")
      Signed-off-by: default avatarCarl Heymann <carl.heymann@netronome.com>
      Reviewed-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
      Signed-off-by: default avatarSimon Horman <simon.horman@netronome.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      da762863
    • David S. Miller's avatar
      Merge branch 'erspan-version-2' · 9463b2f7
      David S. Miller authored
      William Tu says:
      
      ====================
      ERSPAN version 2 (type III) support
      
      ERSPAN has two versions, v1 (type II) and v2 (type III).  This patch
      series add support for erspan v2 based on existing erspan v1
      implementation.  The first patch refactors the existing erspan v1's
      header structure, making it extensible to put additional v2's header.
      The second and third patch introduces erspan v2's implementation to
      ipv4 and ipv6 erspan, for both native mode and collect metadata mode.
      Finally, test cases are added under the samples/bpf.
      
      Note:
      ERSPAN version 2 has many features and this patch does not implement
      all.  One major use case of version 2 over version 1 is its timestamp
      and direction.  So the traffic collector is able to distinguish the
      mirrorred traffic better.  Other features such as SGT (security group
      tag), FT (frame type) for carrying non-ethernet packet, and optional
      subheader are not implemented yet.
      
      Example commandline for ERSPAN version 2:
      ip link add dev ip6erspan11 type ip6erspan seq key 102 \
      	local fc00:100::2 remote fc00:100::1 \
      	erspan_ver 2 erspan_dir 1 erspan_hwid 17
      
      The corresponding iproute2 patch:
      https://marc.info/?l=linux-netdev&m=151321141525106&w=2
      
      William Tu (4):
        net: erspan: refactor existing erspan code
        net: erspan: introduce erspan v2 for ip_gre
        ip6_gre: add erspan v2 support
        samples/bpf: add erspan v2 sample code
      
       include/net/erspan.h           | 152 ++++++++++++++++++++++++++++++++++++++---
       include/net/ip6_tunnel.h       |   3 +
       include/net/ip_tunnels.h       |   5 +-
       include/uapi/linux/if_ether.h  |   1 +
       include/uapi/linux/if_tunnel.h |   3 +
       net/ipv4/ip_gre.c              | 124 +++++++++++++++++++++++++++------
       net/ipv6/ip6_gre.c             | 139 +++++++++++++++++++++++++++++++------
       net/openvswitch/flow_netlink.c |   8 +--
       samples/bpf/tcbpf2_kern.c      |  77 ++++++++++++++++++---
       samples/bpf/test_tunnel_bpf.sh |  38 ++++++++---
       10 files changed, 472 insertions(+), 78 deletions(-)
      
      --
      A simple script to test it:
      
      set -ex
      function cleanup() {
      	set +ex
      	ip netns del ns0
      	ip link del ip6erspan11
      	ip link del veth1
      }
      
      function main() {
      	trap cleanup 0 2 3 9
      
      	ip netns add ns0
      	ip link add veth0 type veth peer name veth1
      	ip link set veth0 netns ns0
      
      	# non-namespace
      	ip addr add dev veth1 fc00:100::2/96
      
      	if [ "$1" == "v1" ]; then
      		echo "create IP6 ERSPAN v1 tunnel"
      		ip link add dev ip6erspan11 type ip6erspan seq key 102 \
      			local fc00:100::2 remote fc00:100::1 \
      			erspan 123 erspan_ver 1
      	else
      		echo "create IP6 ERSPAN v2 tunnel"
      		ip link add dev ip6erspan11 type ip6erspan seq key 102 \
      			local fc00:100::2 remote fc00:100::1 \
      			erspan_ver 2 erspan_dir 1 erspan_hwid 17
      	fi
      	ip addr add dev ip6erspan11 fc00:200::2/96
      	ip addr add dev ip6erspan11 10.10.200.2/24
      
      	# namespace: ns0
      	ip netns exec ns0 ip addr add fc00:100::1/96 dev veth0
      
      	if [ "$1" == "v1" ]; then
      		ip netns exec ns0 \
      		ip link add dev ip6erspan00 type ip6erspan seq key 102 \
      			local fc00:100::1 remote fc00:100::2 \
      			erspan 123 erspan_ver 1
      	else
      		ip netns exec ns0 \
      		ip link add dev ip6erspan00 type ip6erspan seq key 102 \
      			local fc00:100::1 remote fc00:100::2 \
      			erspan_ver 2 erspan_dir 1 erspan_hwid 7
      	fi
      
      	ip netns exec ns0 ip addr add dev ip6erspan00 fc00:200::1/96
      	ip netns exec ns0 ip addr add dev ip6erspan00 10.10.200.1/24
      
      	ip link set dev veth1 up
      	ip link set dev ip6erspan11 up
      	ip netns exec ns0 ip link set dev ip6erspan00 up
      	ip netns exec ns0 ip link set dev veth0 up
      }
      
      main $1
      
      ping6 -c 1 fc00:100::1 || true
      
      ping -c 3 10.10.200.1
      exit 0
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9463b2f7
    • William Tu's avatar
      samples/bpf: add erspan v2 sample code · ac80c2a1
      William Tu authored
      Extend the existing tests for ipv4 ipv6 erspan version 2.
      Signed-off-by: default avatarWilliam Tu <u9012063@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ac80c2a1
    • William Tu's avatar
      ip6_gre: add erspan v2 support · 94d7d8f2
      William Tu authored
      Similar to support for ipv4 erspan, this patch adds
      erspan v2 to ip6erspan tunnel.
      Signed-off-by: default avatarWilliam Tu <u9012063@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      94d7d8f2
    • William Tu's avatar
      net: erspan: introduce erspan v2 for ip_gre · f551c91d
      William Tu authored
      The patch adds support for erspan version 2.  Not all features are
      supported in this patch.  The SGT (security group tag), GRA (timestamp
      granularity), FT (frame type) are set to fixed value.  Only hardware
      ID and direction are configurable.  Optional subheader is also not
      supported.
      Signed-off-by: default avatarWilliam Tu <u9012063@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f551c91d
    • William Tu's avatar
      net: erspan: refactor existing erspan code · 1d7e2ed2
      William Tu authored
      The patch refactors the existing erspan implementation in order
      to support erspan version 2, which has additional metadata.  So, in
      stead of having one 'struct erspanhdr' holding erspan version 1,
      breaks it into 'struct erspan_base_hdr' and 'struct erspan_metadata'.
      Signed-off-by: default avatarWilliam Tu <u9012063@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1d7e2ed2
    • David S. Miller's avatar
      Merge branch 'nfp-ethtool-flash-updates' · 4650b751
      David S. Miller authored
      Jakub Kicinski says:
      
      ====================
      nfp: ethtool flash updates
      
      Dirk says:
      
      This series adds the ability to update the control FW with ethtool.
      
      It should be noted that the locking scheme here is to release the RTNL
      lock before the flashing operation and to take it again afterwards to
      ensure consistent state from the core code point of view. In this time,
      we take a reference to the device to prevent the device being freed
      while its being flashed.
      
      This provides protection for the device being flashed while at the same
      time not holding up any networking related functions which would
      otherwise be locked out due to RTNL being held.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4650b751
    • Dirk van der Merwe's avatar
      nfp: implement firmware flashing · 7a741565
      Dirk van der Merwe authored
      Firmware flashing takes around 60s (specified to not take more than
      70s). Prevent hogging the RTNL lock in this time and make use of the
      longer timeout for the NSP command. The timeout is set to 2.5 * 70
      seconds.
      
      We only allow flashing the firmware from reprs or PF netdevs. VFs do not
      have an app reference.
      Signed-off-by: default avatarDirk van der Merwe <dirk.vandermerwe@netronome.com>
      Reviewed-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7a741565
    • Dirk van der Merwe's avatar
      nfp: extend NSP infrastructure for configurable timeouts · 87a23801
      Dirk van der Merwe authored
      The firmware flashing NSP operation takes longer to execute than the
      current default timeout. We need a mechanism to set a longer timeout for
      some commands. This patch adds the infrastructure to this.
      
      The default timeout is still 30 seconds.
      Signed-off-by: default avatarDirk van der Merwe <dirk.vandermerwe@netronome.com>
      Reviewed-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      87a23801
    • David S. Miller's avatar
      Merge branch 'ipvlan-packet-scrub' · d31d38a0
      David S. Miller authored
      Mahesh Bandewar says:
      
      ====================
      ipvlan: packet scrub
      
      While crossing namespace boundary IPvlan aggressively scrubs packets.
      This is creating problems. First thing is that scrubbing changes the
      packet type in skb meta-data to PACKET_HOST. This causes erroneous
      packet delivery when dev_forward_skb() has already marked the packet
      type as OTHER_HOST.
      
      On the egress side scrubbing just before calling dev_queue_xmit()
      creates another set of problems. Scrubbing remove skb->sk so the
      prio update gets missed and more seriously, socket back-pressure
      fails making TSQ not function correctly.
      
      The first patch in the series just reverts the earlier change which
      was adding a mac-check, but that is unnecessary if packet_type that
      dev_forward_skb() has set is honored. The second path removes two of
      the scrubs which are causing problems described above.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d31d38a0
    • Mahesh Bandewar's avatar
      ipvlan: remove excessive packet scrubbing · c0d451c8
      Mahesh Bandewar authored
      IPvlan currently scrubs packets at every location where packets may be
      crossing namespace boundary. Though this is desirable, currently IPvlan
      does it more than necessary. e.g. packets that are going to take
      dev_forward_skb() path will get scrubbed so no point in scrubbing them
      before forwarding. Another side-effect of scrubbing is that pkt-type gets
      set to PACKET_HOST which overrides what was already been set by the
      earlier path making erroneous delivery of the packets.
      
      Also scrubbing packets just before calling dev_queue_xmit() has detrimental
      effects since packets lose skb->sk and because of that miss prio updates,
      incorrect socket back-pressure and would even break TSQ.
      
      Fixes: b93dd49c ('ipvlan: Scrub skb before crossing the namespace boundary')
      Signed-off-by: default avatarMahesh Bandewar <maheshb@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c0d451c8
    • Mahesh Bandewar's avatar
      Revert "ipvlan: add L2 check for packets arriving via virtual devices" · 918150cb
      Mahesh Bandewar authored
      This reverts commit 92ff4264.
      
      Even though the check added is not that taxing, it's not really needed.
      First of all this will be per packet cost and second thing is that the
      eth_type_trans() already does this correctly. The excessive scrubbing
      in IPvlan was changing the pkt-type skb metadata of the packet which
      made it necessary to re-check the mac. The subsequent patch in this
      series removes the faulty packet-scrub.
      Signed-off-by: default avatarMahesh Bandewar <maheshb@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      918150cb
    • David S. Miller's avatar
      Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec-next · 8ce38aeb
      David S. Miller authored
      Steffen Klassert says:
      
      ====================
      pull request (net-next): ipsec-next 2017-12-15
      
      1) Currently we can add or update socket policies, but
         not clear them. Support clearing of socket policies
         too. From Lorenzo Colitti.
      
      2) Add documentation for the xfrm device offload api.
         From Shannon Nelson.
      
      3) Fix IPsec extended sequence numbers (ESN) for
         IPsec offloading. From Yossef Efraim.
      
      4) xfrm_dev_state_add function returns success even for
         unsupported options, fix this to fail in such cases.
         From Yossef Efraim.
      
      5) Remove a redundant xfrm_state assignment.
         From Aviv Heller.
      
      Please pull or let me know if there are problems.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8ce38aeb
    • Florian Fainelli's avatar
      net: dsa: bcm_sf2: Update compatible string for 7278B0 · 3b07d788
      Florian Fainelli authored
      Update the compatible string and Device Tree binding document for
      7278B0.
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3b07d788
    • David S. Miller's avatar
      Merge branch 'hnx3-vf' · 020929d6
      David S. Miller authored
      Salil Mehta says:
      
      ====================
      Hisilicon Network Subsystem 3 VF Ethernet Driver
      
      This patch-set contains the support of the HNS3 (Hisilicon Network Subsystem 3)
      Virtual Function Ethernet driver for hip08 family of SoCs. The Physical Function
      driver is already part of the Linux mainline.
      
      This VF driver has its Hardware Compatibility Layer and has commom/unified ENET
      layer/client/ethtool code with the PF driver. It also has support of mailbox to
      communicate with the HNS3 PF driver. The basic architecture of VF driver is
      derivative of the PF driver. Just like PF driver, this driver is also PCI
      Express based.
      
      This driver is the ongoing development work and HNS3 VF Ethernet driver would be
      incrementally enhanced with more new features.
      
      High Level Architecture:
      
                           [ Ethtool ]
      	                 |
                       [ Ethernet Client ] ... [ RoCE Client ]
                               |                     |
                         [ HNAE Device ]             |________
                               |                     |       |
          ---------------------------------------------      |
                                                             |
           [ HNAE3 Framework (Register/unregister) ]         |
                                                             |
          ---------------------------------------------      |
                               |                             |
                       [ VF HCLGE Layer ]                    |
                        |             |                      |
                        |             |                      |
                        |             |                      |
                        |     [ VF Mailbox (To PF via IMP) ] |
                        |             |                      |
                   [ IMP command Interface ]  [ IMP command Interface ]
                              |                              |
                              |                              |
                 (A B O V E  R U N S  O N  G U E S T  S Y S T E M)
          -------------------------------------------------------------
                    Q E M U / V F I O / K V M (on Host System)
          -------------------------------------------------------------
                  HIP08  H A R D W A R E (limited to VF by SMMU)
      
         [ IMP/Mgmt Processor (hardware common to system/cmd based) ]
      
                      Fig 1.   HNS3 Virtual Function Driver
      
          	[ dcbnl ]  [ Ethtool ]
                  |          |
         	[  Ethernet Client  ]  [ ODP/UIO Client ] . . .[ RoCE Client ]
                    |_____________________|                 |
                               |                   _________|
                         [ HNAE Device ]           |        |
                               |                   |        |
          ---------------------------------------------     |
                                                            |
           [ HNAE3 Framework (Register/unregister) ]        |
                                                            |
          ---------------------------------------------     |
                               |                            |
                        [ HCLGE Layer ]                     |
               ________________|_________________           |
              |                |                 |          |
           [ DCB ]             |                 |          |
              |                |                 |          |
        [ Scheduler/Shaper ] [ MDIO ]      [ PF Mailbox ]   |
              |                |                 |          |
              |________________|_________________|          |
                               |                            |
                   [ IMP command Interface ]     [ IMP command Interface ]
          ----------------------------------------------------------------
                    HIP08  H A R D W A R E
      
        [ IMP/Mgmt Processor (hardware common to system/cmd based) ]
      
                     Fig 2.    Existing HNS3 PF Driver (added with mailbox)
      
      Change Log Summary:
      Patch V4: Addressed SPDX related comment by Philippe Ombredanne
      Patch V3: Addressed SPDX change requested by Philippe Ombredanne
      Patch V2: 1. Addressed some comments by David Miller.
      	  2. Addressed some internal comments on various patches
      Patch V1: Initial Submit
      ====================
      Acked-by: default avatarPhilippe Ombredanne <pombredanne@nexb.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      020929d6
    • Salil Mehta's avatar
      net: hns3: Add mailbox interrupt handling to PF driver · c1a81619
      Salil Mehta authored
      All PF mailbox events are conveyed through a common interrupt
      (vector 0). This interrupt vector is shared by reset and mailbox.
      
      This patch adds the handling of mailbox interrupt event and its
      deferred processing in context to a separate mailbox task.
      Signed-off-by: default avatarSalil Mehta <salil.mehta@huawei.com>
      Signed-off-by: default avatarlipeng <lipeng321@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c1a81619
    • Salil Mehta's avatar
      net: hns3: Change PF to add ring-vect binding & resetQ to mailbox · 84e095d6
      Salil Mehta authored
      This patch is required to support ring-vector binding and reset
      of TQPs requested by the VF driver to the PF driver. Mailbox
      handler is added with corresponding VF commands/messages to
      handle the request.
      Signed-off-by: default avatarSalil Mehta <salil.mehta@huawei.com>
      Signed-off-by: default avatarlipeng <lipeng321@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      84e095d6
    • Salil Mehta's avatar
      net: hns3: Add mailbox support to PF driver · dde1a86e
      Salil Mehta authored
      Command queue provides the provision of Mailbox command which
      can be used for communication between PF and VF. PF handles
      messages from various VFs for fetching various information like,
      queue, vlan, link status related etc. It also handles the request
      from various VFs to perform certain privileged operations.
      
      This patch adds the support of a message handler for handling
      such various command requests from VF.
      Signed-off-by: default avatarSalil Mehta <salil.mehta@huawei.com>
      Signed-off-by: default avatarlipeng <lipeng321@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      dde1a86e
    • Salil Mehta's avatar
      net: hns3: Unified HNS3 {VF|PF} Ethernet Driver for hip08 SoC · 424eb834
      Salil Mehta authored
      Most of the NAPI handling interface, skb buffer management,
      management of the RX/TX descriptors, ethool interface etc.
      has quite a bit of code which is common to VF and PF driver.
      
      This patch makes the exisitng PF's HNS3 ENET driver as the
      common ENET driver for both Virtual & Physical Function. This
      will help in reduction of redundancy and better management of
      code.
      Signed-off-by: default avatarSalil Mehta <salil.mehta@huawei.com>
      Signed-off-by: default avatarlipeng <lipeng321@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      424eb834
    • Salil Mehta's avatar
      net: hns3: Add HNS3 VF driver to kernel build framework · e963cb78
      Salil Mehta authored
      This patch introduces the new Makefiles and updates existing
      Makefiles required to build the HNS3 Virtual Function driver.
      This also updates the Kconfig for introduction of new menuconfig
      entries related to VF driver.
      Signed-off-by: default avatarSalil Mehta <salil.mehta@huawei.com>
      Signed-off-by: default avatarlipeng <lipeng321@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e963cb78
    • Salil Mehta's avatar
      net: hns3: Add HNS3 VF HCL(Hardware Compatibility Layer) Support · e2cb1dec
      Salil Mehta authored
      This patch adds the support of hardware compatibiltiy layer to the
      HNS3 VF Driver. This layer implements various {set|get} operations
      over MAC address for a virtual port, RSS related configuration,
      fetches the link status info from PF, does various VLAN related
      configuration over the virtual port, queries the statistics from
      the hardware etc.
      
      This layer can directly interact with hardware through the
      IMP(Integrated Mangement Processor) interface or can use mailbox
      to interact with the PF driver.
      Signed-off-by: default avatarSalil Mehta <salil.mehta@huawei.com>
      Signed-off-by: default avatarlipeng <lipeng321@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e2cb1dec
    • Salil Mehta's avatar
      net: hns3: Add mailbox support to VF driver · b11a0bb2
      Salil Mehta authored
      This patch adds the support of the mailbox to the VF driver. The
      mailbox shall be used as an interface to communicate with the
      PF driver for various purposes like {set|get} MAC related
      operations, reset, link status etc. The mailbox supports both
      synchronous and asynchronous command send to PF driver.
      Signed-off-by: default avatarSalil Mehta <salil.mehta@huawei.com>
      Signed-off-by: default avatarlipeng <lipeng321@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b11a0bb2
    • Salil Mehta's avatar
      net: hns3: Add HNS3 VF IMP(Integrated Management Proc) cmd interface · fedd0c15
      Salil Mehta authored
      This patch adds support of command interface for communication with
      the IMP(Integrated Management Processor) for HNS3 Virtual Function
      Driver.
      
      Each VF has support of CQP(Command Queue Pair) ring interface.
      Each CQP consis of send queue CSQ and receive queue CRQ.
      There are various commands a VF may support, like to query frimware
      version, TQP management, statistics, interrupt related, mailbox etc.
      
      This also contains code to initialize the command queue, manage the
      command queue descriptors and Rx/Tx protocol with the command processor
      in the form of various commands/results and acknowledgements.
      Signed-off-by: default avatarSalil Mehta <salil.mehta@huawei.com>
      Signed-off-by: default avatarlipeng <lipeng321@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      fedd0c15
    • David S. Miller's avatar
      Merge branch 'dsa-MT7530-vlan' · be17bbec
      David S. Miller authored
      Sean Wang says:
      
      ====================
      add VLAN support to DSA MT7530
      
      Changes sicne v2:
      update to the latest code base from net-next and fix up all building
      errors with -Werror.
      
      Changes since v1:
      - fix up the typo
      - prefer ordering declarations longest to shortest
      - update that vlan_prepare callback should not change any state
      - use lower case letter for function naming
      
      The patchset extends DSA MT7530 to VLAN support through filling required
      callbacks in patch 1 and merging the special tag with VLAN tag in patch 2
      for allowing that the hardware can handle these packets with VID from the
      CPU port.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      be17bbec
    • Sean Wang's avatar
      net: dsa: mediatek: update MAINTAINERS entry with MediaTek switch driver · 423d1290
      Sean Wang authored
      I work for MediaTek and maintain SoC targeting to home gateway and
      also will keep extending and testing the function from MediaTek
      switch.
      Signed-off-by: default avatarSean Wang <sean.wang@mediatek.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      423d1290
    • Sean Wang's avatar
      net: dsa: mediatek: combine MediaTek tag with VLAN tag · f0af3431
      Sean Wang authored
      In order to let MT7530 switch can recognize well those egress packets
      having both special tag and VLAN tag, the information about the special
      tag should be carried on the existing VLAN tag. On the other hand, it's
      unnecessary for extra handling for ingress packets when VLAN tag is
      present since it is able to put the VLAN tag after the special tag and
      then follow the existing way to parse.
      Signed-off-by: default avatarSean Wang <sean.wang@mediatek.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f0af3431
    • Sean Wang's avatar
      net: dsa: mediatek: add VLAN support for MT7530 · 83163f7d
      Sean Wang authored
      MT7530 can treat each port as either VLAN-unaware port or VLAN-aware port
      through the implementation of port matrix mode or port security mode on
      the ingress port, respectively. On one hand, Each port has been acting as
      the VLAN-unaware one whenever the device is created in the initial or
      certain port joins or leaves into/from the bridge at the runtime. On the
      other hand, the patch just filling the required callbacks for VLAN
      operations is achieved via extending the port to be into port security
      mode when the port is configured as VLAN-aware port. Which mode can make
      the port be able to recognize VID from incoming packets and look up VLAN
      table to validate and judge which port it should be going to. And the
      range for VID from 1 to 4094 is valid for the hardware.
      Signed-off-by: default avatarSean Wang <sean.wang@mediatek.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      83163f7d
  2. 13 Dec, 2017 2 commits