From 057e4ade3814e3ae41a4226c63e76cc36c8147bf Mon Sep 17 00:00:00 2001 From: Chris Leech Date: Wed, 19 Dec 2012 21:28:18 -0800 Subject: iscsiuio 0.7.6.1 --- README | 4 ++-- RELEASE.TXT | 34 ++++++++++++++++++++++++++++++++-- configure | 18 +++++++++--------- configure.ac | 4 ++-- docs/iscsiuio.8 | 4 ++-- src/uip/uip_arp.c | 1 - src/unix/libs/bnx2x.c | 19 ++++++++++++++++--- src/unix/libs/bnx2x.h | 8 +++++++- src/unix/nic.c | 3 ++- src/unix/nic_nl.c | 2 +- 10 files changed, 73 insertions(+), 24 deletions(-) diff --git a/README b/README index a716263..e5ee23f 100644 --- a/README +++ b/README @@ -1,6 +1,6 @@ iscsiuio Userspace Tool -Version 0.7.4.3 -Aug 16, 2012 +Version 0.7.6.1 +Oct 09, 2012 ------------------------------------------------------ This tool is to be used in conjunction with the Broadcom NetXtreme II Linux diff --git a/RELEASE.TXT b/RELEASE.TXT index cb1d470..0e7665c 100644 --- a/RELEASE.TXT +++ b/RELEASE.TXT @@ -1,7 +1,7 @@ Release Notes Broadcom uIP Linux Driver - Version 0.7.4.3 - 08/16/2012 + Version 0.7.6.1 + 10/15/2012 Broadcom Corporation 5300 California Avenue, @@ -11,6 +11,36 @@ All rights reserved +uIP v0.7.6.1 (Oct 15, 2012) +======================================================= + Fixes + ----- + 1. Problem: Cont00065690 - Vconfig method of connecting over + tagged vlan with IPv6 failed + Cause: The new net param support changes has prevented + the old vconfig method from execising the IPv6 + acquisition engine properly + Change: Ensure that this old vconfig method to run the IPv6 + acquisition engine properly and to its entirety + Impact: IPv6 + VLAN using the network VLAN configuration + method + + 2. Problem: Cont00065768 - RHEL5.X iscsiuio segfault possible + if there is a specific 1024 byte size broadcast + packet + Cause: This is a corner case where the packet size is + exactly 1024 bytes + padding that exceeded the + DMA rx buffer. This has been there since day 1. + Change: Ensure that the packet size + padding do not + exceed this limit. + Impact: 10G only. 1G already has the guard against it. + + Enhancements + ------------ + 1. Change: Added support for 10G 57840 4x10 and 2x20 + Impact: 10G 57840 + + uIP v0.7.4.3 (Aug 16, 2012) ======================================================= Fixes diff --git a/configure b/configure index 6ff2e68..0b2abc4 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59 for iscsiuio 0.7.4.3. +# Generated by GNU Autoconf 2.59 for iscsiuio 0.7.6.1. # # Report bugs to . # @@ -423,8 +423,8 @@ SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='iscsiuio' PACKAGE_TARNAME='iscsiuio' -PACKAGE_VERSION='0.7.4.3' -PACKAGE_STRING='iscsiuio 0.7.4.3' +PACKAGE_VERSION='0.7.6.1' +PACKAGE_STRING='iscsiuio 0.7.6.1' PACKAGE_BUGREPORT='eddie.wai@broadcom.com' # Factoring default headers for most tests. @@ -954,7 +954,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures iscsiuio 0.7.4.3 to adapt to many kinds of systems. +\`configure' configures iscsiuio 0.7.6.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1020,7 +1020,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of iscsiuio 0.7.4.3:";; + short | recursive ) echo "Configuration of iscsiuio 0.7.6.1:";; esac cat <<\_ACEOF @@ -1161,7 +1161,7 @@ fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF -iscsiuio configure 0.7.4.3 +iscsiuio configure 0.7.6.1 generated by GNU Autoconf 2.59 Copyright (C) 2003 Free Software Foundation, Inc. @@ -1175,7 +1175,7 @@ cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by iscsiuio $as_me 0.7.4.3, which was +It was created by iscsiuio $as_me 0.7.6.1, which was generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ @@ -21726,7 +21726,7 @@ _ASBOX } >&5 cat >&5 <<_CSEOF -This file was extended by iscsiuio $as_me 0.7.4.3, which was +This file was extended by iscsiuio $as_me 0.7.6.1, which was generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -21789,7 +21789,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -iscsiuio config.status 0.7.4.3 +iscsiuio config.status 0.7.6.1 configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" diff --git a/configure.ac b/configure.ac index 0b1e7f1..1045a80 100644 --- a/configure.ac +++ b/configure.ac @@ -11,9 +11,9 @@ dnl Maintained by: Eddie Wai (eddie.wai@broadcom.com) dnl PACKAGE=iscsiuio -VERSION=0.7.4.3 +VERSION=0.7.6.1 -AC_INIT(iscsiuio, 0.7.4.3, eddie.wai@broadcom.com) +AC_INIT(iscsiuio, 0.7.6.1, eddie.wai@broadcom.com) AM_INIT_AUTOMAKE($PACKAGE, $VERSION) AC_CONFIG_HEADER(config.h) diff --git a/docs/iscsiuio.8 b/docs/iscsiuio.8 index 4bf26df..d107327 100644 --- a/docs/iscsiuio.8 +++ b/docs/iscsiuio.8 @@ -3,9 +3,9 @@ .\" modify it under the terms of the GNU General Public License as .\" published by the Free Software Foundation. .\" -.\" bnx2.4,v 0.7.4.3 +.\" bnx2.4,v 0.7.6.1 .\" -.TH iscsiuio 8 "08/16/2012" "Broadcom Corporation" +.TH iscsiuio 8 "10/09/2012" "Broadcom Corporation" .\" .\" NAME part .\" diff --git a/src/uip/uip_arp.c b/src/uip/uip_arp.c index 3ef3b07..9dd02a1 100644 --- a/src/uip/uip_arp.c +++ b/src/uip/uip_arp.c @@ -273,7 +273,6 @@ uip_arp_arpin(nic_interface_t * nic_iface, pkt->buf_size = sizeof(*arp) + sizeof(struct uip_vlan_eth_hdr); } - pkt->buf_size = sizeof(*arp) + sizeof(*eth); } break; case const_htons(ARP_REPLY): diff --git a/src/unix/libs/bnx2x.c b/src/unix/libs/bnx2x.c index 5e33420..70e85c0 100644 --- a/src/unix/libs/bnx2x.c +++ b/src/unix/libs/bnx2x.c @@ -103,6 +103,10 @@ static const char brcm_57840_MF[] = "Broadcom NetXtreme II BCM57840 MF " "10-Gigabit"; static const char brcm_57840_VF[] = "Broadcom NetXtreme II BCM57840 VF " "10-Gigabit"; +static const char brcm_57840_4_10[] = "Broadcom NetXtreme II BCM57840 4x" + "10-Gigabit"; +static const char brcm_57840_2_20[] = "Broadcom NetXtreme II BCM57840 2x" + "20-Gigabit"; /******************************************************************************* * PCI ID constants @@ -123,6 +127,8 @@ static const char brcm_57840_VF[] = "Broadcom NetXtreme II BCM57840 VF " #define PCI_DEVICE_ID_NX2_57840 0x168d #define PCI_DEVICE_ID_NX2_57840_MF 0x16ab #define PCI_DEVICE_ID_NX2_57840_VF 0x16ad +#define PCI_DEVICE_ID_NX2_57840_4_10 0x16a1 +#define PCI_DEVICE_ID_NX2_57840_2_20 0x16a2 #define PCI_ANY_ID (~0) /* This is the table used to match PCI vendor and device ID's to the @@ -158,6 +164,10 @@ static const struct pci_device_id bnx2x_pci_tbl[] = { PCI_ANY_ID, PCI_ANY_ID, brcm_57840_MF}, {PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_57840_VF, PCI_ANY_ID, PCI_ANY_ID, brcm_57840_VF}, + {PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_57840_4_10, + PCI_ANY_ID, PCI_ANY_ID, brcm_57840_4_10}, + {PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_57840_2_20, + PCI_ANY_ID, PCI_ANY_ID, brcm_57840_2_20}, }; static struct iro e1_iro[2] = { @@ -1401,7 +1411,7 @@ static int bnx2x_read(nic_t * nic, packet_t * pkt) union eth_rx_cqe *cqe; __u8 cqe_fp_flags; void *rx_pkt; - int len, pad, cqe_size; + int len, pad, cqe_size, max_len; rc = 1; if (bnx2x_is_ver70(bp)) { @@ -1427,10 +1437,13 @@ static int bnx2x_read(nic_t * nic, packet_t * pkt) /* Doto query MTU size of physical device */ /* Ensure len is valid */ - if (len > pkt->max_buf_size) + max_len = pkt->max_buf_size < bp->rx_buffer_size ? + pkt->max_buf_size : bp->rx_buffer_size; + if (len > max_len) { LOG_DEBUG(PFX "%s: bad BD length: %d", nic->log_name, len); - + len = max_len; + } if (len > 0) { msync(rx_pkt, len, MS_SYNC); /* Copy the data */ diff --git a/src/unix/libs/bnx2x.h b/src/unix/libs/bnx2x.h index b758179..1f47011 100644 --- a/src/unix/libs/bnx2x.h +++ b/src/unix/libs/bnx2x.h @@ -430,6 +430,8 @@ struct client_init_general_data { #define CHIP_NUM_57800 0x168a #define CHIP_NUM_57810 0x168e #define CHIP_NUM_57840 0x168d +#define CHIP_NUM_57840_4_10 0x16a1 +#define CHIP_NUM_57840_2_20 0x16a2 #define CHIP_IS_E1(bp) (BNX2X_CHIP_NUM(bp) == CHIP_NUM_57710) #define CHIP_IS_57711(bp) (BNX2X_CHIP_NUM(bp) == CHIP_NUM_57711) @@ -438,7 +440,11 @@ struct client_init_general_data { #define CHIP_IS_57712E(bp) (BNX2X_CHIP_NUM(bp) == CHIP_NUM_57712E) #define CHIP_IS_57800(bp) (BNX2X_CHIP_NUM(bp) == CHIP_NUM_57800) #define CHIP_IS_57810(bp) (BNX2X_CHIP_NUM(bp) == CHIP_NUM_57810) -#define CHIP_IS_57840(bp) (BNX2X_CHIP_NUM(bp) == CHIP_NUM_57840) +#define CHIP_IS_57840_4_10(bp) (BNX2X_CHIP_NUM(bp) == CHIP_NUM_57840_4_10) +#define CHIP_IS_57840_2_20(bp) (BNX2X_CHIP_NUM(bp) == CHIP_NUM_57840_2_20) +#define CHIP_IS_57840(bp) (BNX2X_CHIP_NUM(bp) == CHIP_NUM_57840 || \ + CHIP_IS_57840_4_10(bp) || \ + CHIP_IS_57840_2_20(bp)) #define CHIP_IS_E1H(bp) (CHIP_IS_57711(bp) || \ CHIP_IS_57711E(bp)) #define CHIP_IS_E2(bp) (CHIP_IS_57712(bp) || \ diff --git a/src/unix/nic.c b/src/unix/nic.c index 0b3c538..72afff0 100644 --- a/src/unix/nic.c +++ b/src/unix/nic.c @@ -460,6 +460,7 @@ int nic_remove(nic_t * nic) rc = stat(nic->uio_device_name, &file_stat); if ((rc == 0) && (nic->ops)) nic->ops->close(nic, 0); + pthread_mutex_unlock(&nic->nic_mutex); nic->state = NIC_EXIT; @@ -910,7 +911,7 @@ int do_timers_per_nic_iface(nic_t *nic, nic_interface_t *nic_iface, if (pkt == NULL) return -EIO; - if (nic_iface->ustack.ip_config == AF_INET) { + if (nic_iface->protocol == AF_INET) { for (i = 0; i < UIP_UDP_CONNS; i++) { prepare_ustack(nic, nic_iface, ustack, pkt); diff --git a/src/unix/nic_nl.c b/src/unix/nic_nl.c index 34e2062..8afd9ae 100644 --- a/src/unix/nic_nl.c +++ b/src/unix/nic_nl.c @@ -408,7 +408,7 @@ static int ctldev_handle(char *data, nic_t *nic) persist_all_nic_iface(nic); nic_iface = vlan_iface; - + nic_iface->flags |= NIC_IFACE_ACQUIRE; pthread_mutex_unlock(&nic->nic_mutex); /* nic_disable but not going down */ -- 1.7.11.7