Skip to content
  1. Feb 20, 2017
    • Xin Long's avatar
      sctp: implement receiver-side procedures for the Outgoing SSN Reset Request Parameter · 81054476
      Xin Long authored
      
      
      This patch is to implement Receiver-Side Procedures for the Outgoing
      SSN Reset Request Parameter described in rfc6525 section 5.2.2.
      
      Note that some checks must be after request_seq check, as even those
      checks fail, strreset_inseq still has to be increase by 1.
      
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      81054476
    • Xin Long's avatar
      sctp: add support for generating stream ssn reset event notification · 35ea82d6
      Xin Long authored
      
      
      This patch is to add Stream Reset Event described in rfc6525
      section 6.1.1.
      
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      35ea82d6
    • Xin Long's avatar
      sctp: add support for generating stream reconf resp chunk · bd4b9f8b
      Xin Long authored
      
      
      This patch is to define Re-configuration Response Parameter described
      in rfc6525 section 4.4. As optional fields are only for SSN/TSN Reset
      Request Parameter, it uses another function to make that.
      
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bd4b9f8b
    • Jason Wang's avatar
      virtio-net: batch stats updating · 61845d20
      Jason Wang authored
      
      
      We already have counters for sent/recv packets and sent/recv bytes.
      Doing a batched update to reduce the number of
      u64_stats_update_begin/end().
      
      Take care not to bother with stats update when called
      speculatively.
      
      Cc: Willem de Bruijn <willemb@google.com>
      Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      61845d20
    • Eric Dumazet's avatar
      mlx4: fix potential divide by 0 in mlx4_en_auto_moderation() · f5a57723
      Eric Dumazet authored
      
      
      1) In the case where rate == priv->pkt_rate_low == priv->pkt_rate_high,
      mlx4_en_auto_moderation() does a divide by zero.
      
      2) We want to properly change the moderation parameters if rx_frames
      was changed (like in ethtool -C eth0 rx-frames 16)
      
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Reviewed-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f5a57723
    • Dmitry V. Levin's avatar
      uapi: fix linux/rds.h userspace compilation error · 1786dbf3
      Dmitry V. Levin authored
      
      
      On the kernel side, sockaddr_storage is #define'd to
      __kernel_sockaddr_storage.  Replacing struct sockaddr_storage with
      struct __kernel_sockaddr_storage defined by <linux/socket.h> fixes
      the following linux/rds.h userspace compilation error:
      
      /usr/include/linux/rds.h:226:26: error: field 'dest_addr' has incomplete type
        struct sockaddr_storage dest_addr;
      
      Signed-off-by: default avatarDmitry V. Levin <ldv@altlinux.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1786dbf3
    • Dmitry V. Levin's avatar
      uapi: fix linux/rds.h userspace compilation errors · feb0869d
      Dmitry V. Levin authored
      
      
      Consistently use types from linux/types.h to fix the following
      linux/rds.h userspace compilation errors:
      
      /usr/include/linux/rds.h:106:2: error: unknown type name 'uint8_t'
        uint8_t name[32];
      /usr/include/linux/rds.h:107:2: error: unknown type name 'uint64_t'
        uint64_t value;
      /usr/include/linux/rds.h:117:2: error: unknown type name 'uint64_t'
        uint64_t next_tx_seq;
      /usr/include/linux/rds.h:118:2: error: unknown type name 'uint64_t'
        uint64_t next_rx_seq;
      /usr/include/linux/rds.h:121:2: error: unknown type name 'uint8_t'
        uint8_t transport[TRANSNAMSIZ];  /* null term ascii */
      /usr/include/linux/rds.h:122:2: error: unknown type name 'uint8_t'
        uint8_t flags;
      /usr/include/linux/rds.h:129:2: error: unknown type name 'uint64_t'
        uint64_t seq;
      /usr/include/linux/rds.h:130:2: error: unknown type name 'uint32_t'
        uint32_t len;
      /usr/include/linux/rds.h:135:2: error: unknown type name 'uint8_t'
        uint8_t flags;
      /usr/include/linux/rds.h:139:2: error: unknown type name 'uint32_t'
        uint32_t sndbuf;
      /usr/include/linux/rds.h:144:2: error: unknown type name 'uint32_t'
        uint32_t rcvbuf;
      /usr/include/linux/rds.h:145:2: error: unknown type name 'uint64_t'
        uint64_t inum;
      /usr/include/linux/rds.h:153:2: error: unknown type name 'uint64_t'
        uint64_t       hdr_rem;
      /usr/include/linux/rds.h:154:2: error: unknown type name 'uint64_t'
        uint64_t       data_rem;
      /usr/include/linux/rds.h:155:2: error: unknown type name 'uint32_t'
        uint32_t       last_sent_nxt;
      /usr/include/linux/rds.h:156:2: error: unknown type name 'uint32_t'
        uint32_t       last_expected_una;
      /usr/include/linux/rds.h:157:2: error: unknown type name 'uint32_t'
        uint32_t       last_seen_una;
      /usr/include/linux/rds.h:164:2: error: unknown type name 'uint8_t'
        uint8_t  src_gid[RDS_IB_GID_LEN];
      /usr/include/linux/rds.h:165:2: error: unknown type name 'uint8_t'
        uint8_t  dst_gid[RDS_IB_GID_LEN];
      /usr/include/linux/rds.h:167:2: error: unknown type name 'uint32_t'
        uint32_t max_send_wr;
      /usr/include/linux/rds.h:168:2: error: unknown type name 'uint32_t'
        uint32_t max_recv_wr;
      /usr/include/linux/rds.h:169:2: error: unknown type name 'uint32_t'
        uint32_t max_send_sge;
      /usr/include/linux/rds.h:170:2: error: unknown type name 'uint32_t'
        uint32_t rdma_mr_max;
      /usr/include/linux/rds.h:171:2: error: unknown type name 'uint32_t'
        uint32_t rdma_mr_size;
      /usr/include/linux/rds.h:212:9: error: unknown type name 'uint64_t'
       typedef uint64_t rds_rdma_cookie_t;
      /usr/include/linux/rds.h:215:2: error: unknown type name 'uint64_t'
        uint64_t addr;
      /usr/include/linux/rds.h:216:2: error: unknown type name 'uint64_t'
        uint64_t bytes;
      /usr/include/linux/rds.h:221:2: error: unknown type name 'uint64_t'
        uint64_t cookie_addr;
      /usr/include/linux/rds.h:222:2: error: unknown type name 'uint64_t'
        uint64_t flags;
      /usr/include/linux/rds.h:228:2: error: unknown type name 'uint64_t'
        uint64_t  cookie_addr;
      /usr/include/linux/rds.h:229:2: error: unknown type name 'uint64_t'
        uint64_t  flags;
      /usr/include/linux/rds.h:234:2: error: unknown type name 'uint64_t'
        uint64_t flags;
      /usr/include/linux/rds.h:240:2: error: unknown type name 'uint64_t'
        uint64_t local_vec_addr;
      /usr/include/linux/rds.h:241:2: error: unknown type name 'uint64_t'
        uint64_t nr_local;
      /usr/include/linux/rds.h:242:2: error: unknown type name 'uint64_t'
        uint64_t flags;
      /usr/include/linux/rds.h:243:2: error: unknown type name 'uint64_t'
        uint64_t user_token;
      /usr/include/linux/rds.h:248:2: error: unknown type name 'uint64_t'
        uint64_t  local_addr;
      /usr/include/linux/rds.h:249:2: error: unknown type name 'uint64_t'
        uint64_t  remote_addr;
      /usr/include/linux/rds.h:252:4: error: unknown type name 'uint64_t'
          uint64_t compare;
      /usr/include/linux/rds.h:253:4: error: unknown type name 'uint64_t'
          uint64_t swap;
      /usr/include/linux/rds.h:256:4: error: unknown type name 'uint64_t'
          uint64_t add;
      /usr/include/linux/rds.h:259:4: error: unknown type name 'uint64_t'
          uint64_t compare;
      /usr/include/linux/rds.h:260:4: error: unknown type name 'uint64_t'
          uint64_t swap;
      /usr/include/linux/rds.h:261:4: error: unknown type name 'uint64_t'
          uint64_t compare_mask;
      /usr/include/linux/rds.h:262:4: error: unknown type name 'uint64_t'
          uint64_t swap_mask;
      /usr/include/linux/rds.h:265:4: error: unknown type name 'uint64_t'
          uint64_t add;
      /usr/include/linux/rds.h:266:4: error: unknown type name 'uint64_t'
          uint64_t nocarry_mask;
      /usr/include/linux/rds.h:269:2: error: unknown type name 'uint64_t'
        uint64_t flags;
      /usr/include/linux/rds.h:270:2: error: unknown type name 'uint64_t'
        uint64_t user_token;
      /usr/include/linux/rds.h:274:2: error: unknown type name 'uint64_t'
        uint64_t user_token;
      /usr/include/linux/rds.h:275:2: error: unknown type name 'int32_t'
        int32_t  status;
      
      Signed-off-by: default avatarDmitry V. Levin <ldv@altlinux.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      feb0869d
    • Dmitry V. Levin's avatar
      uapi: fix linux/mroute.h userspace compilation errors · bcb41c6b
      Dmitry V. Levin authored
      
      
      Include <linux/in.h> to fix the following linux/mroute.h userspace
      compilation errors:
      
      /usr/include/linux/mroute.h:58:18: error: field 'vifc_lcl_addr' has incomplete type
        struct in_addr vifc_lcl_addr;     /* Local interface address */
      /usr/include/linux/mroute.h:61:17: error: field 'vifc_rmt_addr' has incomplete type
        struct in_addr vifc_rmt_addr; /* IPIP tunnel addr */
      /usr/include/linux/mroute.h:72:17: error: field 'mfcc_origin' has incomplete type
        struct in_addr mfcc_origin;  /* Origin of mcast */
      /usr/include/linux/mroute.h:73:17: error: field 'mfcc_mcastgrp' has incomplete type
        struct in_addr mfcc_mcastgrp;  /* Group in question */
      /usr/include/linux/mroute.h:84:17: error: field 'src' has incomplete type
        struct in_addr src;
      /usr/include/linux/mroute.h:85:17: error: field 'grp' has incomplete type
        struct in_addr grp;
      /usr/include/linux/mroute.h:109:17: error: field 'im_src' has incomplete type
        struct in_addr im_src,im_dst;
      /usr/include/linux/mroute.h:109:24: error: field 'im_dst' has incomplete type
        struct in_addr im_src,im_dst;
      
      Signed-off-by: default avatarDmitry V. Levin <ldv@altlinux.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bcb41c6b
    • Dmitry V. Levin's avatar
      uapi: fix linux/mroute6.h userspace compilation errors · 72aa107d
      Dmitry V. Levin authored
      
      
      Include <linux/in6.h> to fix the following linux/mroute6.h userspace
      compilation errors:
      
      /usr/include/linux/mroute6.h:80:22: error: field 'mf6cc_origin' has incomplete type
        struct sockaddr_in6 mf6cc_origin;  /* Origin of mcast */
      /usr/include/linux/mroute6.h:81:22: error: field 'mf6cc_mcastgrp' has incomplete type
        struct sockaddr_in6 mf6cc_mcastgrp;  /* Group in question */
      /usr/include/linux/mroute6.h:91:22: error: field 'src' has incomplete type
        struct sockaddr_in6 src;
      /usr/include/linux/mroute6.h:92:22: error: field 'grp' has incomplete type
        struct sockaddr_in6 grp;
      /usr/include/linux/mroute6.h:132:18: error: field 'im6_src' has incomplete type
        struct in6_addr im6_src, im6_dst;
      /usr/include/linux/mroute6.h:132:27: error: field 'im6_dst' has incomplete type
        struct in6_addr im6_src, im6_dst;
      
      Signed-off-by: default avatarDmitry V. Levin <ldv@altlinux.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      72aa107d
    • Dmitry V. Levin's avatar
      uapi: fix linux/ipv6_route.h userspace compilation errors · 6c07ec0f
      Dmitry V. Levin authored
      
      
      Include <linux/in6.h> to fix the following linux/ipv6_route.h userspace
      compilation errors:
      
      /usr/include/linux/ipv6_route.h:42:19: error: field 'rtmsg_dst' has incomplete type
        struct in6_addr  rtmsg_dst;
      /usr/include/linux/ipv6_route.h:43:19: error: field 'rtmsg_src' has incomplete type
        struct in6_addr  rtmsg_src;
      /ust/include/linux/ipv6_route.h:44:19: error: field 'rtmsg_gateway' has incomplete type
        struct in6_addr  rtmsg_gateway;
      
      Signed-off-by: default avatarDmitry V. Levin <ldv@altlinux.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6c07ec0f
    • Thomas Falcon's avatar
      ibmvnic: Make CRQ interrupt tasklet wait for all capabilities crqs · 249168ad
      Thomas Falcon authored
      
      
      After sending device capability queries and requests to the vNIC Server,
      an interrupt is triggered and the responses are written to the driver's
      CRQ response buffer. Since the interrupt can be triggered before all
      responses are written and visible to the partition, there is a danger
      that the interrupt handler or tasklet can terminate before all responses
      are read, resulting in a failure to initialize the device.
      
      To avoid this scenario, when capability commands are sent, we set
      a flag that will be checked in the following interrupt tasklet that
      will handle the capability responses from the server. Once all
      responses have been handled, the flag is disabled; and the tasklet
      is allowed to terminate.
      
      Signed-off-by: default avatarThomas Falcon <tlfalcon@linux.vnet.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      249168ad
    • Thomas Falcon's avatar
      ibmvnic: Use common counter for capabilities checks · 901e040a
      Thomas Falcon authored
      
      
      Two different counters were being used for capabilities
      requests and queries. These commands are not called
      at the same time so there is no reason a single counter
      cannot be used.
      
      Signed-off-by: default avatarThomas Falcon <tlfalcon@linux.vnet.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      901e040a
    • Thomas Falcon's avatar
      ibmvnic: Handle processing of CRQ messages in a tasklet · 6c267b3d
      Thomas Falcon authored
      
      
      Create a tasklet to process queued commands or messages received from
      firmware instead of processing them in the interrupt handler. Note that
      this handler does not process network traffic, but communications related
      to resource allocation and device settings.
      
      Signed-off-by: default avatarThomas Falcon <tlfalcon@linux.vnet.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6c267b3d
    • Arun Easi's avatar
      qed: Add support for hardware offloaded FCoE. · 1e128c81
      Arun Easi authored
      
      
      This adds the backbone required for the various HW initalizations
      which are necessary for the FCoE driver (qedf) for QLogic FastLinQ
      4xxxx line of adapters - FW notification, resource initializations, etc.
      
      Signed-off-by: default avatarArun Easi <arun.easi@cavium.com>
      Signed-off-by: default avatarYuval Mintz <yuval.mintz@cavium.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1e128c81
    • David S. Miller's avatar
  2. Feb 19, 2017
  3. Feb 18, 2017