26 May, 2016

1 commit

  • Change struct ib_class_port_info to conform to IB Spec 1.3
    That in order to get specific capability mask from ClassPortInfo mad.

    >From the IB Spec, ClassPortInfo section:
    "CapabilityMask2 Bits 0-26: Additional class-specific capabilities...
    RespTimeValue the rest 5 bits"

    The new struct now has one field for capabilitymask2 (previously was the
    reserved field) and the resp_time field.

    And it fixes up qib and srpt, use of the field repurposed to be used as
    capabilitymask2:
    IB/qib: Change pma_get_classportinfo
    IB/srpt: Adjust the use of ib_class_port_info

    Signed-off-by: Erez Shitrit
    Reviewed-by: Leon Romanovsky
    Reviewed-by: Hal Rosenstock
    Signed-off-by: Doug Ledford

    Erez Shitrit
     

04 Mar, 2016

1 commit


20 Jan, 2016

1 commit


09 Dec, 2015

1 commit

  • Receipt of CM MAD with other than the Send method for an attribute
    other than the ClassPortInfo attribute is invalid.

    CM attributes other than ClassPortInfo only use the send method.

    The SRP initiator does not maintain a timeout policy for CM connect
    requests relies on the CM layer to do that. The result was that
    the SRP initiator hung as the connect request never completed.

    A new SRP target has been observed to respond to Send CM REQ
    with GetResp of CM REQ with bad status. This is non conformant
    with IBA spec but exposes a vulnerability in the current MAD/CM
    code which will respond to the incoming GetResp of CM REQ as if
    it was a valid incoming Send of CM REQ rather than tossing
    this on the floor. It also causes the MAD layer not to
    retransmit the original REQ even though it has not received a REP.

    Reviewed-by: Sagi Grimberg
    Signed-off-by: Hal Rosenstock
    Reviewed-by: Ira Weiny
    Signed-off-by: Doug Ledford

    Hal Rosenstock
     

04 Sep, 2015

2 commits

  • When the hfi1 driver was added these definitions were moved from the qib driver
    to ib_mad.h to be used by both qib and hfi1. They should have been moved to
    ib_smi.h instead.

    Fixes: d4ab347005fb ("IB/core: Add core header changes needed for OPA")
    Reviewed-by: Hal Rosenstock
    Signed-off-by: Ira Weiny
    Signed-off-by: Doug Ledford

    Ira Weiny
     
  • Remove the unused IB_NOTICE_REPRESS_* defines.

    When the hfi1 driver was added these definitions were moved from the qib driver
    to ib_mad.h. They should have been removed instead.

    Fixes: d4ab347005fb ("IB/core: Add core header changes needed for OPA")
    Signed-off-by: Ira Weiny
    Reviewed-by: Hal Rosenstock
    Signed-off-by: Doug Ledford

    Ira Weiny
     

31 Aug, 2015

1 commit


29 Aug, 2015

1 commit

  • This patch adds the value of the CNP opcode to the existing list of enumerated
    opcodes in ib_pack.h

    Add common OPA header definitions for driver
    build:
    - opa_port_info.h
    - opa_smi.h
    - hfi1_user.h

    Additionally, ib_mad.h, has additional definitions
    that are common to ib_drivers including:
    - trap support
    - cca support

    The qib driver has the duplication removed in favor
    those in ib_mad.h

    Reviewed-by: Mike Marciniszyn
    Reviewed-by: John, Jubin
    Signed-off-by: Ira Weiny
    Signed-off-by: Dennis Dalessandro
    Signed-off-by: Doug Ledford

    Dennis Dalessandro
     

13 Jun, 2015

4 commits

  • For devices which support OPA MADs

    1) Use previously defined SMP support functions.

    2) Pass correct base version to ib_create_send_mad when processing OPA MADs.

    3) Process out_mad_key_index returned by agents for a response. This is
    necessary because OPA SMP packets must carry a valid pkey.

    4) Carry the correct segment size (OPA vs IBTA) of RMPP messages within
    ib_mad_recv_wc.

    5) Handle variable length OPA MADs by:

    * Adjusting the 'fake' WC for locally routed SMP's to represent the
    proper incoming byte_len
    * out_mad_size is used from the local HCA agents
    1) when sending agent responses on the wire
    2) when passing responses through the local_completions
    function

    NOTE: wc.byte_len includes the GRH length and therefore is different
    from the in_mad_size specified to the local HCA agents.
    out_mad_size should _not_ include the GRH length as it is added

    Signed-off-by: Ira Weiny
    Signed-off-by: Doug Ledford

    Ira Weiny
     
  • This patch is the first of 3 which adds processing of OPA MADs

    1) Add Intel Omni-Path Architecture defines
    2) Increase max management version to accommodate OPA
    3) update ib_create_send_mad
    If the device supports OPA MADs and the MAD being sent is the OPA base
    version alter the MAD size and sg lengths as appropriate

    Signed-off-by: Ira Weiny
    Signed-off-by: Doug Ledford

    Ira Weiny
     
  • Add max MAD size to the device immutable data set and have all drivers that
    support MADs report the current IB MAD size (IB_MGMT_MAD_SIZE) to the core.

    Verify MAD size data in both the MAD core and when reading the immutable data.

    OPA drivers will report alternate MAD sizes in subsequent patches.

    Signed-off-by: Ira Weiny
    Signed-off-by: Doug Ledford

    Ira Weiny
     
  • In preparation to support the new OPA MAD Base version, add a base version
    parameter to ib_create_send_mad and set it to IB_MGMT_BASE_VERSION for current
    users.

    Definition of the new base version and it's processing will occur in later
    patches.

    Signed-off-by: Ira Weiny
    Signed-off-by: Doug Ledford

    Ira Weiny
     

21 May, 2015

2 commits


11 Aug, 2014

2 commits


19 May, 2012

1 commit


26 Feb, 2012

1 commit


25 Mar, 2009

1 commit


28 Feb, 2009

1 commit

  • Fix ib_set_rmpp_flags() to use the correct bit mask for RRespTime. In
    the 8-bit field of the RMPP header, the first 5 bits are RRespTime and
    next 3 bits are RMPPFlags. Hence to retain the first 5 bits, the mask
    should be 0xF8 instead of 0xF1.

    ack_recv()-->format_ack() calls ib_set_rmpp_flags() and due to the
    incorrect ANDing with 0xF1, RRespTime got changed incorrectly and RMPP
    Acks sent back always had a RRespTime of 0x1E (30) which caused the
    other end to consider the time outs to be approximately 4297 seconds
    (i.e. in the order of 4*2^30) instead of the usual ~4 seconds (order
    of 4*2^20).

    Signed-off-by: Ramachandra K
    Acked-by: Sean Hefty
    Signed-off-by: Roland Dreier

    Ramachandra K
     

18 Jan, 2009

1 commit

  • The base versions handle constant folding just fine, use them
    directly. The replacements are OK in the include/ files as they are
    not exported to userspace so we don't need the __ prefixed versions.

    This patch does not affect code generation at all.

    Signed-off-by: Harvey Harrison
    Signed-off-by: Roland Dreier

    Harvey Harrison
     

15 Jul, 2008

1 commit


26 Jan, 2008

1 commit

  • To allow ULPs to tune timeout values and capture retry statistics,
    report the number of times that a mad send operation was retried.

    For RMPP mads, report the total number of times that the any portion
    (send window) of the send operation was retried.

    Signed-off-by: Sean Hefty
    Signed-off-by: Roland Dreier

    Sean Hefty
     

04 Aug, 2007

1 commit


11 Jul, 2007

1 commit

  • MADs sent to the SA should use the the default P_Key (0x7fff/0xffff).
    There's no requirement that the default P_Key is stored at index 0 in
    the local P_Key table, so add code to the sa_query module to look up
    the index of the default P_Key when creating an address handle for the
    SA (which is done any time the P_Key table might change), and use this
    index for all SA queries.

    Signed-off-by: Sean Hefty
    Signed-off-by: Roland Dreier

    Sean Hefty
     

03 May, 2007

1 commit

  • I noticed that many source files include while they do
    not appear to need it. Here is an attempt to clean it all up.

    In order to find all possibly affected files, I searched for all
    files including but without any other occurence of "pci"
    or "PCI". I removed the include statement from all of these, then I
    compiled an allmodconfig kernel on both i386 and x86_64 and fixed the
    false positives manually.

    My tests covered 66% of the affected files, so there could be false
    positives remaining. Untested files are:

    arch/alpha/kernel/err_common.c
    arch/alpha/kernel/err_ev6.c
    arch/alpha/kernel/err_ev7.c
    arch/ia64/sn/kernel/huberror.c
    arch/ia64/sn/kernel/xpnet.c
    arch/m68knommu/kernel/dma.c
    arch/mips/lib/iomap.c
    arch/powerpc/platforms/pseries/ras.c
    arch/ppc/8260_io/enet.c
    arch/ppc/8260_io/fcc_enet.c
    arch/ppc/8xx_io/enet.c
    arch/ppc/syslib/ppc4xx_sgdma.c
    arch/sh64/mach-cayman/iomap.c
    arch/xtensa/kernel/xtensa_ksyms.c
    arch/xtensa/platform-iss/setup.c
    drivers/i2c/busses/i2c-at91.c
    drivers/i2c/busses/i2c-mpc.c
    drivers/media/video/saa711x.c
    drivers/misc/hdpuftrs/hdpu_cpustate.c
    drivers/misc/hdpuftrs/hdpu_nexus.c
    drivers/net/au1000_eth.c
    drivers/net/fec_8xx/fec_main.c
    drivers/net/fec_8xx/fec_mii.c
    drivers/net/fs_enet/fs_enet-main.c
    drivers/net/fs_enet/mac-fcc.c
    drivers/net/fs_enet/mac-fec.c
    drivers/net/fs_enet/mac-scc.c
    drivers/net/fs_enet/mii-bitbang.c
    drivers/net/fs_enet/mii-fec.c
    drivers/net/ibm_emac/ibm_emac_core.c
    drivers/net/lasi_82596.c
    drivers/parisc/hppb.c
    drivers/sbus/sbus.c
    drivers/video/g364fb.c
    drivers/video/platinumfb.c
    drivers/video/stifb.c
    drivers/video/valkyriefb.c
    include/asm-arm/arch-ixp4xx/dma.h
    sound/oss/au1550_ac97.c

    I would welcome test reports for these files. I am fine with removing
    the untested files from the patch if the general opinion is that these
    changes aren't safe. The tested part would still be nice to have.

    Note that this patch depends on another header fixup patch I submitted
    to LKML yesterday:
    [PATCH] scatterlist.h needs types.h
    http://lkml.org/lkml/2007/3/01/141

    Signed-off-by: Jean Delvare
    Cc: Badari Pulavarty
    Signed-off-by: Greg Kroah-Hartman

    Jean Delvare
     

25 Jul, 2006

1 commit

  • Validate MADs sent by userspace clients for spec compliance with
    C13-18.1.1 (prevent duplicate requests and responses sent on the
    same port). Without this, RMPP transactions get aborted because
    of duplicate packets.

    This patch is similar to that provided by Jack Morgenstein.

    Signed-off-by: Sean Hefty
    Signed-off-by: Michael S. Tsirkin
    Signed-off-by: Jack Morgenstein
    Signed-off-by: Roland Dreier

    Sean Hefty
     

30 Mar, 2006

1 commit


21 Mar, 2006

1 commit

  • Add support for sending and receiving large RMPP transfers. The old
    code supports transfers only as large as a single contiguous kernel
    memory allocation. This patch uses linked list of memory buffers when
    sending and receiving data to avoid needing contiguous pages for
    larger transfers.

    Receive side: copy the arriving MADs in chunks instead of coalescing
    to one large buffer in kernel space.

    Send side: split a multipacket MAD buffer to a list of segments,
    (multipacket_list) and send these using a gather list of size 2.
    Also, save pointer to last sent segment, and retrieve requested
    segments by walking list starting at last sent segment. Finally,
    save pointer to last-acked segment. When retrying, retrieve
    segments for resending relative to this pointer. When updating last
    ack, start at this pointer.

    Signed-off-by: Jack Morgenstein
    Signed-off-by: Sean Hefty
    Signed-off-by: Roland Dreier

    Jack Morgenstein
     

26 Oct, 2005

1 commit

  • The MAD layer was violating the DMA API by touching data buffers used
    for sends after the DMA mapping was done. This causes problems on
    non-cache-coherent architectures, because the device doing DMA won't
    see updates to the payload buffers that exist only in the CPU cache.

    Fix this by having all MAD consumers use ib_create_send_mad() to
    allocate their send buffers, and moving the DMA mapping into the MAD
    layer so it can be done just before calling send (and after any
    modifications of the send buffer by the MAD layer).

    Tested on a non-cache-coherent PowerPC 440SPe system.

    Signed-off-by: Sean Hefty
    Signed-off-by: Roland Dreier

    Sean Hefty
     

09 Oct, 2005

1 commit

  • - added typedef unsigned int __nocast gfp_t;

    - replaced __nocast uses for gfp flags with gfp_t - it gives exactly
    the same warnings as far as sparse is concerned, doesn't change
    generated code (from gcc point of view we replaced unsigned int with
    typedef) and documents what's going on far better.

    Signed-off-by: Al Viro
    Signed-off-by: Linus Torvalds

    Al Viro
     

22 Sep, 2005

1 commit


10 Sep, 2005

1 commit


27 Aug, 2005

1 commit