1. 28 Oct, 2015 11 commits
    • David S. Miller's avatar
      Merge branch 'qed-driver' · 6092db1a
      David S. Miller authored
      Ariel Elior says:
      
      ====================
      Add new drivers: qed & qede
      
      This series implements the driver set for Qlogic's new QL4xxx series.
      These are 10/20/25/40/50/100 Gig capable converged nics, supporting
      ethernet (obviously), iscsi, fcoe, roce and iwarp protocols.
      
      The overall driver design includes a common module ('qed') and protocol
      specific dependent modules for ethernet ('qede'), fcoe ('qedf'),
      iscsi ('qedi') and roce ('qedr').
      The common module contains all of the common logic, e.g. initialization,
      cleanup, infrastructure for interrupt handling, link management, slowpath
      etc. as well as protocol agnostic features, and supplying an abstraction
      layer for other modules.
      The protocol specific modules can be compiled and operated independently
      of each other, with the exception of the rdma modules which are dependent
      on the ethernet module, in accordance with the kernel rdma stack design.
      
      This series only adds the core and ethernet modules, with basic L2
      capabilities. Future series will add the rest of the modules and enhance
      the L2 functionality.
      
      Ths patch series is constructed of the following patches:
      qed:  Add module with basic common support
      qed:  Add basic L2 interface
      qede: Add basic Network driver
      qed:  Add slowpath L2 support
      qede: Add basic network device support
      qede: Add classification configuration
      qed:  Add link support
      qede: Add support for link
      qed:  Add statistics support
      qede: Add basic ethtool support
      
      This project is a team effort, thanks go to Yuval Mintz, Dmitry Kravkov,
      Michal Kalderon, Tomer Tayar, Manish Chopra, Sudarsana Kalluru,
      Rajesh Borundia, Sony Chacko, Artum Zolotushko, Harish Patil, Rasesh Mody,
      Sergey Ukhterov and Elad Manela, as well as former team members,
      Eilon Greenstein and Shmulik Ravid.
      
      Changes from previos version:
      -----------------------------
      
      From Version 7:
        - Various small fixes according to Dave's suggestions; Largest change
          [code-wise] - don't use tabs for indenting function arguments.
      
      From Version 6:
        - Reduced the number of arguments for functions with exceptionally
          high number of parameters.
      
      From Version 5:
        - Style change and fixes [mostly in 1, 4 and 7].
          Thanks go to Francois Romieu, a mere mortal. ;-)
      
      From Version 4:
        - Drop dependency for x86_64.
      
      From Version 3:
        - Limit support of initial submission to x86_64.
        - Fix endian problems appearing via sparse [although no BE support yet].
        - Fix small issues suggested by the kbuild test robot.
      
      From Version 2:
        - Removed U64_{HI,LO}; Using {upper,lower}_32_bits instead.
        - Use regular napi weight definition.
        - [We still use the __le variants for variables, since we didn't get
           a reply regarding the change into non-user API types].
      
      From Version 1:
        - Removed private license file; Instead revised comments at source headers.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6092db1a
    • Sudarsana Kalluru's avatar
      qede: Add basic ethtool support · 133fac0e
      Sudarsana Kalluru authored
      This adds basic ethtool operations to the qed driver, allowing support in:
       - Statistics gathering [ethtool -S]
       - Setting of debug level [ethtool -s <interface> msglvl]
       - Getting basic information [ethtool, ethtool -i]
      
      In addition it adds the ability to change the MTU.
      Signed-off-by: default avatarSudarsana Kalluru <Sudarsana.Kalluru@qlogic.com>
      Signed-off-by: default avatarYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: default avatarAriel Elior <Ariel.Elior@qlogic.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      133fac0e
    • Manish Chopra's avatar
      qed: Add statistics support · 9df2ed04
      Manish Chopra authored
      Device statistics can be gathered on-demand. This adds the qed support for
      reading the statistics [both function and port] from the device, and adds
      to the public API a method for requesting the current statistics.
      Signed-off-by: default avatarManish Chopra <Manish.Chopra@qlogic.com>
      Signed-off-by: default avatarYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: default avatarAriel Elior <Ariel.Elior@qlogic.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9df2ed04
    • Sudarsana Kalluru's avatar
      qede: Add support for link · a2ec6172
      Sudarsana Kalluru authored
      This adds basic link functionality to qede - driver still doesn't provide
      users with an API to change any link property, but it does request qed to
      initialize the link using default configuration, and registers a callback
      that allows it to get link notifications.
      
      This patch adds the ability of the driver to set the carrier as active and
      to enable traffic as a result of async. link notifications.
      Following this patch, driver should be capable of running traffic.
      Signed-off-by: default avatarSudarsana Kalluru <Sudarsana.Kalluru@qlogic.com>
      Signed-off-by: default avatarYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: default avatarAriel Elior <Ariel.Elior@qlogic.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a2ec6172
    • Yuval Mintz's avatar
      qed: Add link support · cc875c2e
      Yuval Mintz authored
      Physical link is handled by the management Firmware.
      This patch lays the infrastructure for attention handling in the driver,
      as link change notifications arrive via async. attentions,
      as well the handling of such notifications.
      
      This patch also extends the API with the protocol drivers by adding
      registered callbacks which the protocol driver passes to qed in order
      to be notified of async. events originating from the FW/HW.
      Signed-off-by: default avatarYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: default avatarAriel Elior <Ariel.Elior@qlogic.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      cc875c2e
    • Sudarsana Kalluru's avatar
      qede: classification configuration · 0d8e0aa0
      Sudarsana Kalluru authored
      Add the ability to configure basic classification in driver by
      implementing ndo_set_mac_address() and ndo_set_rx_mode().
      Signed-off-by: default avatarSudarsana Kalluru <Sudarsana.Kalluru@qlogic.com>
      Signed-off-by: default avatarYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: default avatarAriel Elior <Ariel.Elior@qlogic.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0d8e0aa0
    • Yuval Mintz's avatar
      qede: Add basic network device support · 2950219d
      Yuval Mintz authored
      This patch includes the basic Rx/Tx support for the driver [although
      carrier will still never be turned on].
      Following this patch the driver registers a network device, initializes
      it and prepares it for traffic.
      Signed-off-by: default avatarSudarsana Kalluru <Sudarsana.Kalluru@qlogic.com>
      Signed-off-by: default avatarYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: default avatarAriel Elior <Ariel.Elior@qlogic.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2950219d
    • Manish Chopra's avatar
      qed: Add slowpath L2 support · cee4d264
      Manish Chopra authored
      This patch adds to the qed the support to configure various L2 elements,
      such as channels and basic filtering conditions.
      It also enhances its public API to allow qede to later utilize this
      functionality.
      Signed-off-by: default avatarManish Chopra <Manish.Chopra@qlogic.com>
      Signed-off-by: default avatarYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: default avatarAriel Elior <Ariel.Elior@qlogic.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      cee4d264
    • Yuval Mintz's avatar
      qede: Add basic Network driver · e712d52b
      Yuval Mintz authored
      The Qlogic Everest Driver for Ethernet is the Ethernet specific module for
      QL4xxx ethernet products by Qlogic.
      
      This patch adds a very minimal PCI driver, one that doesn't yet register
      a network device, but one that does interact with qed and does a basic
      initialization of the HW.
      Signed-off-by: default avatarYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: default avatarAriel Elior <Ariel.Elior@qlogic.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e712d52b
    • Yuval Mintz's avatar
      qed: Add basic L2 interface · 25c089d7
      Yuval Mintz authored
      This patch adds a public API for a network driver to work on top of QED.
      The interface itself is very minimal - it's mostly infrastructure, as the
      only content it has after this patch is a query for HW-based information
      required for the creation of a network interface [I.e., no actual
      protocol-specific configurations are supported].
      Signed-off-by: default avatarManish Chopra <Manish.Chopra@qlogic.com>
      Signed-off-by: default avatarYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: default avatarAriel Elior <Ariel.Elior@qlogic.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      25c089d7
    • Yuval Mintz's avatar
      qed: Add module with basic common support · fe56b9e6
      Yuval Mintz authored
      The Qlogic Everest Driver is the backend module for the QL4xxx ethernet
      products by Qlogic.
      
      This module serves two main purposes:
       1. It's responsible to contain all the common code that will be shared
          between the various drivers that would be used with said line of
          products. Flows such as chip initialization and de-initialization
          fall under this category.
      
       2. It would abstract the protocol-specific HW & FW components, allowing
          the protocol drivers to have a clean APIs which is detached in its
          slowpath configuration from the actual HSI.
      
      This adds a very basic module without any protocol-specific bits.
      I.e., this adds a basic implementation that almost entirely falls under
      the first category.
      Signed-off-by: default avatarYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: default avatarAriel Elior <Ariel.Elior@qlogic.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      fe56b9e6
  2. 27 Oct, 2015 7 commits
  3. 26 Oct, 2015 11 commits
  4. 25 Oct, 2015 2 commits
  5. 24 Oct, 2015 9 commits
    • David S. Miller's avatar
      Merge branch 'tipc-next' · 687f079a
      David S. Miller authored
      Jon Maloy says:
      
      ====================
      tipc: improve broadcast implementation
      
      The TIPC broadcast link implementation is currently complex and hard to
      follow. It also incurs some amount of code and structure duplication,
      something that can be reduced significantly with a little effort.
      
      This commit series introduces a number of improvements which address
      both the locking structure, the code/structure duplication issue, and
      the overall readbility of the code.
      
      The series consists of three main parts:
      
      1-7: Adaptation to the new link structure, and preparation for the next
           step. In particular, we want the broadcast transmission link to
           have a life cycle that is longer than any of its potential (unicast
           and broadcast receive links) users. This eliminates the need to
           always test for the presence of this link before accessing it.
      
      8-10: This is what is really new in this series. Commit #9 is by far
            the largest and most important one, because it moves most of
            the broadcast functionality into link.c, partially reusing the
            fields and functionality of the unicast link. The removal of
            the "node_map" infrastructure in commit #10 is also an important
            achievement.
      
      11-16: Some improvements leveraging the changes made in the previous
             commits.
      
      The series needs commit 53387c4e ("tipc: extend broadcast link window size")
      and commit e5356794 ("tipc: conditionally expand buffer headroom over udp tunnel")
      which are both present in 'net' but not yet in 'net-next', to apply cleanly.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      687f079a
    • Jon Paul Maloy's avatar
      tipc: clean up unused code and structures · 2af5ae37
      Jon Paul Maloy authored
      After the previous changes in this series, we can now remove some
      unused code and structures, both in the broadcast, link aggregation
      and link code.
      
      There are no functional changes in this commit.
      Signed-off-by: default avatarJon Maloy <jon.maloy@ericsson.com>
      Reviewed-by: default avatarYing Xue <ying.xue@windriver.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2af5ae37
    • Jon Paul Maloy's avatar
      tipc: ensure binding table initial distribution is sent via first link · c49a0a84
      Jon Paul Maloy authored
      Correct synchronization of the broadcast link at first contact between
      two nodes is dependent on the assumption that the binding table "bulk"
      update passes via the same link as the initial broadcast syncronization
      message, i.e., via the first link that is established.
      
      This is not guaranteed in the current implementation. If two link
      come up very close to each other in time, the "bulk" may quite well
      pass via the second link, and hence void the guarantee of a correct
      initial synchronization before the broadcast link is opened.
      
      This commit makes two small changes to strengthen this guarantee.
      
      1) We let the second established link occupy slot 1 of the
         "active_links" array, while the first link will retain slot 0.
         (This is in reality a cosmetic change, we could just as well keep
          the current, opposite order)
      
      2) We let the name distributor always use link selector/slot 0 when
         it sends it binding table updates.
      
      The extra traffic bias on the first link caused by this change should
      be negligible, since binding table updates constitutes a very small
      fraction of the total traffic.
      Signed-off-by: default avatarJon Maloy <jon.maloy@ericsson.com>
      Reviewed-by: default avatarYing Xue <ying.xue@windriver.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c49a0a84
    • Jon Paul Maloy's avatar
      tipc: eliminate link's reference to owner node · c72fa872
      Jon Paul Maloy authored
      With the recent commit series, we have established a one-way dependency
      between the link aggregation (struct tipc_node) instances and their
      pertaining tipc_link instances. This has enabled quite significant code
      and structure simplifications.
      
      In this commit, we eliminate the field 'owner', which points to an
      instance of struct tipc_node, from struct tipc_link, and replace it with
      a pointer to struct net, which is the only external reference now needed
      by a link instance.
      Signed-off-by: default avatarJon Maloy <jon.maloy@ericsson.com>
      Reviewed-by: default avatarYing Xue <ying.xue@windriver.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c72fa872
    • Jon Paul Maloy's avatar
      tipc: eliminate redundant buffer cloning at transmission · 7214bcf8
      Jon Paul Maloy authored
      Since all packet transmitters (link, bcast, discovery) are now sending
      consumable buffer clones to the bearer layer, we can remove the
      redundant buffer cloning that is perfomed in the lower level functions
      tipc_l2_send_msg() and tipc_udp_send_msg().
      Signed-off-by: default avatarJon Maloy <jon.maloy@ericsson.com>
      Reviewed-by: default avatarYing Xue <ying.xue@windriver.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7214bcf8
    • Jon Paul Maloy's avatar
      tipc: let neighbor discoverer tranmsit consumable buffers · 60852d67
      Jon Paul Maloy authored
      The neighbor discovery function currently uses the function
      tipc_bearer_send() for transmitting packets, assuming that the
      sent buffers are not consumed by the called function.
      
      We want to change this, in order to avoid unnecessary buffer cloning
      elswhere in the code.
      
      This commit introduces a new function tipc_bearer_skb() which consumes
      the sent buffers, and let the discoverer functions use this new call
      instead. The discoverer does now itself perform the cloning when
      that is necessary.
      Signed-off-by: default avatarJon Maloy <jon.maloy@ericsson.com>
      Reviewed-by: default avatarYing Xue <ying.xue@windriver.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      60852d67
    • Jon Paul Maloy's avatar
      tipc: introduce jumbo frame support for broadcast · 959e1781
      Jon Paul Maloy authored
      Until now, we have only been supporting a fix MTU size of 1500 bytes
      for all broadcast media, irrespective of their actual capability.
      
      We now make the broadcast MTU adaptable to the carrying media, i.e.,
      we use the smallest MTU supported by any of the interfaces attached
      to TIPC.
      Signed-off-by: default avatarJon Maloy <jon.maloy@ericsson.com>
      Reviewed-by: default avatarYing Xue <ying.xue@windriver.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      959e1781
    • Jon Paul Maloy's avatar
      tipc: simplify bearer level broadcast · b06b281e
      Jon Paul Maloy authored
      Until now, we have been keeping track of the exact set of broadcast
      destinations though the help structure tipc_node_map. This leads us to
      have to maintain a whole infrastructure for supporting this, including
      a pseudo-bearer and a number of functions to manipulate both the bearers
      and the node map correctly. Apart from the complexity, this approach is
      also limiting, as struct tipc_node_map only can support cluster local
      broadcast if we want to avoid it becoming excessively large. We want to
      eliminate this limitation, in order to enable introduction of scoped
      multicast in the future.
      
      A closer analysis reveals that it is unnecessary maintaining this "full
      set" overview; it is sufficient to keep a counter per bearer, indicating
      how many nodes can be reached via this bearer at the moment. The protocol
      is now robust enough to handle transitional discrepancies between the
      nominal number of reachable destinations, as expected by the broadcast
      protocol itself, and the number which is actually reachable at the
      moment. The initial broadcast synchronization, in conjunction with the
      retransmission mechanism, ensures that all packets will eventually be
      acknowledged by the correct set of destinations.
      
      This commit introduces these changes.
      Signed-off-by: default avatarJon Maloy <jon.maloy@ericsson.com>
      Reviewed-by: default avatarYing Xue <ying.xue@windriver.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b06b281e
    • Jon Paul Maloy's avatar
      tipc: let broadcast packet reception use new link receive function · 52666986
      Jon Paul Maloy authored
      The code path for receiving broadcast packets is currently distinct
      from the unicast path. This leads to unnecessary code and data
      duplication, something that can be avoided with some effort.
      
      We now introduce separate per-peer tipc_link instances for handling
      broadcast packet reception. Each receive link keeps a pointer to the
      common, single, broadcast link instance, and can hence handle release
      and retransmission of send buffers as if they belonged to the own
      instance.
      
      Furthermore, we let each unicast link instance keep a reference to both
      the pertaining broadcast receive link, and to the common send link.
      This makes it possible for the unicast links to easily access data for
      broadcast link synchronization, as well as for carrying acknowledges for
      received broadcast packets.
      Signed-off-by: default avatarJon Maloy <jon.maloy@ericsson.com>
      Reviewed-by: default avatarYing Xue <ying.xue@windriver.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      52666986