11 Jan, 2011

12 commits


10 Jan, 2011

28 commits

  • This change fixes several issues found in ntuple filtering while I was
    doing the ATR refactor.

    Specifically I updated the masks to work correctly with the latest version
    of ethtool, I cleaned up the exception handling and added detailed error
    output when a filter is rejected, and corrected several bits that were set
    incorrectly in ixgbe_type.h.

    The previous version of this patch included a printk that was left over from
    me fixing the filter setup. This patch does not include that printk.

    Signed-off-by: Alexander Duyck
    Tested-by: Stephen Ko
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Alexander Duyck
     
  • This change adds a compressed input type for atr signature hash
    computation. It also drops the use of the set functions when setting up
    the ATR input since we can then directly setup the hash input as two dwords
    that can be stored and passed as registers.

    With these changes the cost of computing the has is low enough that we can
    perform a hash computation on each TCP SYN flagged packet allowing us to
    drop the number of flow director misses considerably in tests such as
    netperf TCP_CRR.

    Signed-off-by: Alexander Duyck
    Tested-by: Stephen Ko
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Alexander Duyck
     
  • This change cleans up the layout of the flow director data, and the
    algorithm used to calculate the hash resulting in a 35x / 3500% performance
    increase versus the old flow director hash computation. The overall effect
    is only a 1% increase in transactions per second though due to the fact
    that only 1 packet in 20 are actually hashed upon.

    TCP_RR before:
    Socket Size Request Resp. Elapsed Trans.
    Send Recv Size Size Time Rate
    bytes Bytes bytes bytes secs. per sec

    16384 87380 1 1 60.00 23059.27
    16384 87380

    TCP_RR after:
    Socket Size Request Resp. Elapsed Trans.
    Send Recv Size Size Time Rate
    bytes Bytes bytes bytes secs. per sec

    16384 87380 1 1 60.00 23239.98
    16384 87380

    Signed-off-by: Alexander Duyck
    Tested-by: Stephen Ko
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Alexander Duyck
     
  • When disable the Rx logic globally, we would also want to disable the per Rx
    queue receive logic by per queue Rx control register RXDCTL so no more DMA is
    happening from the packet buffer to the receive buffer associated with the Rx
    ring, before we start unmapping Rx ring receive buffer. The hardware may take
    max of 100us before the corresponding Rx queue is really disabled. Added
    ixgbe_disable_rx_queue() for this purpose.

    Signed-off-by: Yi Zou
    Tested-by: Stephen Ko
    Tested-by: Ross Brattain
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Yi Zou
     
  • This patch adds support for the gigabit phys present on the CE4100 reference
    platforms.

    Signed-off-by: Dirk Brandewie
    Tested-by: Jeff Pieper
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Dirk Brandewie
     
  • 82574 needs to configure Low Power Link Up (or LPLU) differently than
    the other parts in the 8257x family supported by the driver.

    Signed-off-by: Bruce Allan
    Tested-by: Emil Tantilov
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Bruce Allan
     
  • Some Phys supported by the driver do not remain powered off across a reset
    of the device when the interface is down, e.g. on 82571, but not on 82574.
    This patch powers down (only when WoL is disabled) the PHY after a reset if
    the interface is down and the ethtool diagnostics are not currently running.

    The ethtool diagnostic function required a minor re-factor as a result, and
    the e1000_[get|put]_hw_control() functions are renamed since they are no
    longer static to netdev.c as they are needed by the ethtool diagnostics.
    A couple minor whitespace issues were cleaned up, too.

    Reported-by: Arthur Jones
    Signed-off-by: Bruce Allan
    Tested-by: Jeff Pieper
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Bruce Allan
     
  • For the 82579 jumbo frame workaround, there is no need to re-write the CRC
    calculation functionality already found in the kernel's ether_crc_le().

    Signed-off-by: Bruce Allan
    Tested-by: Jeff Pieper
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Bruce Allan
     
  • Use string functions with bounds checking rather than their non-bounds
    checking counterparts, and do not hard code these boundaries.

    Signed-off-by: Bruce Allan
    Tested-by: Emil Tantilov
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Bruce Allan
     
  • Cleans up the code a bit by using the driver-specific e1e_rphy and
    e1e_wphy macros instead of the full function pointer variants. Fix
    a couple whitespace issue with two already existing calls to e1e_wphy.

    Signed-off-by: Bruce Allan
    Tested-by: Jeff Pieper
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Bruce Allan
     
  • The ICR register is clear on read and we don't care what the returned value
    is when resetting the hardware so the icr variable(s) can be removed. We
    should not ignore the return from e1000_lv_jumbo_workaround_ich8lan() and
    from e1000_get_phy_id_82571() (dump a debug message when it fails and when
    an unknown Phy id is returned).

    Signed-off-by: Bruce Allan
    Tested-by: Emil Tantilov
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Bruce Allan
     
  • In order to compute the features for other offloads (primarily
    scatter/gather), we need to first check the ability of the NIC to
    offload the checksum for the packet. Since we have already computed
    this, we can directly use the result instead of figuring it out
    again.

    Signed-off-by: Jesse Gross
    Signed-off-by: David S. Miller

    Jesse Gross
     
  • This switches skb_need_linearize() to use the features that have
    been centrally computed. In doing so, this fixes a problem where
    scatter/gather should not be used because the card does not support
    checksum offloading on that type of packet. On device registration
    we only check that some form of checksum offloading is available if
    scatter/gatther is enabled but we must also check at transmission
    time. Examples of this include IPv6 or vlan packets on a NIC that
    only supports IPv4 offloading.

    Signed-off-by: Jesse Gross
    Signed-off-by: David S. Miller

    Jesse Gross
     
  • This switches dev_gso_segment() to use the device features computed
    by the centralized routine. In doing so, it fixes a problem where
    it would always use dev->features, instead of those appropriate
    to the number of vlan tags if any are present.

    Signed-off-by: Jesse Gross
    Signed-off-by: David S. Miller

    Jesse Gross
     
  • Now that there is a single function that can compute the device
    features relevant to a packet, we don't want to run it for each
    offload. This converts netif_needs_gso() to take the features
    of the device, rather than computing them itself.

    Signed-off-by: Jesse Gross
    Signed-off-by: David S. Miller

    Jesse Gross
     
  • netif_get_vlan_features() is currently only used by netif_needs_gso(),
    so it only concerns itself with GSO features. However, several other
    places also should take into account the contents of the packet when
    deciding whether to offload to hardware. This generalizes the function
    to return features about all of the various forms of offloading. Since
    offloads tend to be linked together, this avoids duplicating the logic
    in each location (i.e. the scatter/gather code also needs the checksum
    logic).

    Suggested-by: Michał Mirosław
    Signed-off-by: Jesse Gross
    Signed-off-by: David S. Miller

    Jesse Gross
     
  • We currently only have software fallback for one type of checksum: the
    TCP/UDP one's complement. This means that a protocol that uses hardware
    offloading for a different type of checksum (FCoE, SCTP) must directly
    check the device's features and do the right thing ahead of time. By
    the time we get to dev_can_checksum(), we're only deciding whether to
    apply the one algorithm in software or hardware. NETIF_F_HW_CSUM has the
    same capabilities as the software version, so we should always use it if
    present. The primary advantage of this is multiply tagged vlans can use
    hardware checksumming.

    Signed-off-by: Jesse Gross
    Signed-off-by: David S. Miller

    Jesse Gross
     
  • It workarounds the 60s firmware load failure timeout for the
    non-modular case.

    Signed-off-by: Francois Romieu
    Signed-off-by: David S. Miller

    françois romieu
     
  • Fix new kernel-doc notation warning in net/core/filter.c:

    Warning(net/core/filter.c:172): No description found for parameter 'fentry'
    Warning(net/core/filter.c:172): Excess function parameter 'filter' description in 'sk_run_filter'

    Signed-off-by: Randy Dunlap
    Signed-off-by: David S. Miller

    Randy Dunlap
     
  • Fix new kernel-doc notation warning in sock.h by annotating skc_dontcopy_*
    as private fields.

    Warning(include/net/sock.h:163): No description found for parameter 'skc_dontcopy_end[0]'

    Signed-off-by: Randy Dunlap
    Signed-off-by: David S. Miller

    Randy Dunlap
     
  • Due to NLM_F_DUMP is composed of two bits, NLM_F_ROOT | NLM_F_MATCH,
    when doing "if (x & NLM_F_DUMP)", it tests for _either_ of the bits
    being set. Because NLM_F_MATCH's value overlaps with NLM_F_EXCL,
    non-dump requests with NLM_F_EXCL set are mistaken as dump requests.

    Substitute the condition to test for _all_ bits being set.

    Signed-off-by: Jan Engelhardt
    Acked-by: Pablo Neira Ayuso
    Signed-off-by: David S. Miller

    Jan Engelhardt
     
  • The forcedeth driver uses the legacy PCI power management, so it has
    to do PCI-specific things in its ->suspend() and ->resume() callbacks
    and some of them are not done correctly.

    Convert forcedeth to the new PCI power management framework and make
    it let the PCI subsystem take care of all the PCI-specific aspects of
    device handling during system power transitions.

    Tested with nVidia Corporation MCP55 Ethernet (rev a2).

    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: David S. Miller

    Rafael J. Wysocki
     
  • David S. Miller
     
  • This converts sky2 to new VLAN offload flags control via ethtool.
    It also allows for transmit offload of vlan tagged frames which
    was not possible before.

    Signed-off-by: Stephen Hemminger
    Reviewed-by: Jesse Gross
    Signed-off-by: David S. Miller

    Stephen Hemminger
     
  • The sky2 driver would always try all possible supported speeds even
    if the user only asked for a limited set of speed/duplex combinations.

    Reported-by: Mohsen Hariri
    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Stephen Hemminger
     
  • Fix the race on bp->stats_pending between the timer and a LINK_UP event
    handler.

    Signed-off-by: Vladislav Zolotarov
    Signed-off-by: Eilon Greenstein
    Signed-off-by: David S. Miller

    Vladislav Zolotarov
     
  • Move to D0 before clearing MSI/MSI-X configuration. Otherwise MSI/MSI-X
    won't be cleared.

    Signed-off-by: Vladislav Zolotarov
    Signed-off-by: Eilon Greenstein
    Signed-off-by: David S. Miller

    Vladislav Zolotarov
     
  • Fixes in registers dump:
    - Properly calculate dump length for 57712.
    - Prevent HW blocks parity attentions when dumping registers in order to
    prevent false parity errors handling.
    - Update the bnx2x_dump.h file: old one had a few bugs that could cause
    fatal HW error as a result of a registers dump.

    Signed-off-by: Vladislav Zolotarov
    Signed-off-by: Eilon Greenstein
    Signed-off-by: David S. Miller

    Vladislav Zolotarov