30 Apr, 2009

12 commits


29 Apr, 2009

4 commits


28 Apr, 2009

16 commits

  • cacheable_memzero() is completely overkill for the clearing out the FCB
    block which is only 8-bytes. The compiler should easily optimize this
    with memset. Additionally, cacheable_memzero() only exists on ppc32 and
    thus breaks builds of gianfar on ppc64.

    Signed-off-by: Kumar Gala
    Signed-off-by: David S. Miller

    Kumar Gala
     
  • These are later assigned to other values without being used meanwhile.

    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: David S. Miller

    Arnaldo Carvalho de Melo
     
  • netif_tx_queue_stopped(txq) is most of the time false.

    Yet its cost is very expensive on SMP.

    static inline int netif_tx_queue_stopped(const struct netdev_queue *dev_queue)
    {
    return test_bit(__QUEUE_STATE_XOFF, &dev_queue->state);
    }

    I saw this on oprofile hunting and bnx2 driver bnx2_tx_int().

    We probably should split "struct netdev_queue" in two parts, one
    being read mostly.

    __netif_tx_lock() touches _xmit_lock & xmit_lock_owner, these
    deserve a separate cache line.

    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • Previous rework to ucc_geth.c to add of_mdio support (net: Rework
    ucc_geth driver to use of_mdio infrastructure) added a block of
    code which broke older openfirmware device trees which this case.

    This patch removes the offending blurb.

    Signed-off-by: Grant Likely
    Signed-off-by: David S. Miller

    Grant Likely
     
  • CONFIG_DUET doesn't exist anymore, remove all the code that exists to
    support it.

    [ Simplify fs_init() even further -DaveM ]

    Signed-off-by: Kumar Gala
    Signed-off-by: David S. Miller

    Kumar Gala
     
  • Ayyappan at VMware noticed that we're missing this check from ixgbe which
    is in our other drivers. The difference with this implementation from our
    other drivers is that this checks all the tx queues rather than just tx[0].

    Signed-off-by: Shannon Nelson
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Nelson, Shannon
     
  • Update the interrupt management to correctly handle greater
    than 16 queue vectors.

    Signed-off-by: Shannon Nelson
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Nelson, Shannon
     
  • This patch enables hardware receive side coalescing for 82599 hardware.
    82599 can merge multiple frames from the same TCP/IP flow into a single
    structure that can span one ore more descriptors. The accumulated data is
    arranged similar to how jumbo frames are arranged with the exception that
    other packets can be interlaced inbetween. To overcome this issue a next
    pointer is included in the written back descriptor which indicates the next
    descriptor in the writeback sequence.

    This feature sets the NETIF_F_LRO flag and clearing it via the ethtool set
    flags operation will also disable hardware RSC.

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

    Alexander Duyck
     
  • Inspired by: Vlad Yasevich

    This is the code to enable ixgbe for hardware offload support
    of CRC32c on both transmit and receive of SCTP traffic.

    only 82599 supports this offload, not 82598.

    Signed-off-by: Jesse Brandeburg
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Jesse Brandeburg
     
  • Originally from: Vlad Yasevich

    This patch, both the driver portion and the sctp code was
    modified by Jesse Brandeburg and is

    Copyright(c) 2009 Intel Corporation.

    Thanks go to Vlad for starting this work.

    Intel 82576 chipset supports SCTP checksum offloading. This
    patch enables this functionality in the driver. A new NETIF
    feature is introduced for SCTP checksum offload. If the driver
    supports CRC32c checksum, it can set this feature flag. The
    hardware can offload both transmit and receive.

    Signed-off-by: Jesse Brandeburg
    Signed-off-by: Vlad Yasevich
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Jesse Brandeburg
     
  • this is the sctp code to enable hardware crc32c offload for
    adapters that support it.

    Originally by: Vlad Yasevich

    modified by Jesse Brandeburg

    Signed-off-by: Jesse Brandeburg
    Signed-off-by: Vlad Yasevich
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Jesse Brandeburg
     
  • Both of these drivers do a check to verify ip_summed is set to
    CHECKSUM_UNNECESSARY prior to passing the packet to GRO. GRO itself
    already does such a check so it is redundant and can be removed as this
    will likely cause out of order issues when receiving a packet that didn't
    pass checksum validation.

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

    Alexander Duyck
     
  • The igb driver was being incorrectly setup to only allow disabling receive
    checksum if multiqueue was disabled. This change corrects that so that
    RXCSUM is configured regardless of queue configuration.

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

    Alexander Duyck
     
  • This change updates the timeout logic so that it is not possible to have a
    sucessful check for message and still return an error if countdown = 0.

    Signed-off-by: Alexander Duyck
    Reported-by: Juha Leppanen
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Alexander Duyck
     
  • This is V2 of the smsc911x fifo byteswap patch.

    The smsc911x hardware supports both big and little and endian
    hardware configurations, and the linux smsc911x driver currently
    detects word order.

    For correct operation on big endian platforms lacking swapped
    byte lanes the following patch is needed. Only fifo data is
    swapped, register data does not require any swapping.

    Signed-off-by: Magnus Damm
    Acked-by: Steve Glendinning
    Signed-off-by: David S. Miller

    Magnus Damm
     
  • Disable L1/L0s when link detected. We enable L1/L0s when link connected
    before, but there is some hareware error on some platform. So just diable
    this feature when link connected. This feature is about power saving.

    Signed-off-by: Jie Yang
    Signed-off-by: David S. Miller

    Jie Yang
     

27 Apr, 2009

8 commits

  • On a brand new GRO skb, we cannot call ip_hdr since the header
    may lie in the non-linear area. This patch adds the helper
    skb_gro_network_header to handle this.

    Signed-off-by: Herbert Xu
    Signed-off-by: David S. Miller

    Herbert Xu
     
  • The skb_gro_* code fails to handle the case where a header starts
    in the linear area but ends in the frags area. Since the goal
    of skb_gro_* is to optimise the case of completely non-linear
    packets, we can simply bail out if we have anything in the linear
    area.

    Signed-off-by: Herbert Xu
    Signed-off-by: David S. Miller

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

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

    Vladislav Zolotarov
     
  • >From now on FW will be downloaded from the binary file using request_firmware.

    There will be different files for every supported chip. Currently 57710 (e1) and
    57711 (e1h).

    File names have the following format: bnx2x--.fw.
    ihex versions of current FW files are submitted in the next patch.

    Each binary file has a header in the following format:

    struct bnx2x_fw_file_section {
    __be32 len;
    __be32 offset;
    }

    struct bnx2x_fw_file_hdr {
    struct bnx2x_fw_file_section init_ops;
    struct bnx2x_fw_file_section init_ops_offsets;
    struct bnx2x_fw_file_section init_data;
    struct bnx2x_fw_file_section tsem_int_table_data;
    struct bnx2x_fw_file_section tsem_pram_data;
    struct bnx2x_fw_file_section usem_int_table_data;
    struct bnx2x_fw_file_section usem_pram_data;
    struct bnx2x_fw_file_section csem_int_table_data;
    struct bnx2x_fw_file_section csem_pram_data;
    struct bnx2x_fw_file_section xsem_int_table_data;
    struct bnx2x_fw_file_section xsem_pram_data;
    struct bnx2x_fw_file_section fw_version;
    }

    Each bnx2x_fw_file_section contains the length and the offset of the appropriate
    section in the binary file. Values are stored in the big endian format.

    Data types of arrays:

    init_data __be32
    init_ops_offsets __be16
    XXsem_pram_data u8
    XXsem_int_table_data u8
    init_ops struct raw_op {
    u8 op;
    __be24 offset;
    __be32 data;
    }
    fw_version u8

    >From now boundaries of a specific initialization stage are stored in
    init_ops_offsets array instead of being defined by separate macroes. The index
    in init_ops_offsets is calculated by BLOCK_OPS_IDX macro:

    #define BLOCK_OPS_IDX(block, stage, end) \
    (2*(((block)*STAGE_IDX_MAX) + (stage)) + (end))

    Security:

    In addition to sanity check of array boundaries bnx2x will check a FW version.
    Additional checks might be added in the future.

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

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

    Vladislav Zolotarov
     
  • When creating a certain types of VPN, NetworkManager will first attempt
    to find an available tun device by iterating through 'vpn%d' until it
    finds one that isn't already busy. Then it'll set that to be persistent
    and owned by the otherwise unprivileged user that the VPN dæmon itself
    runs as.

    There's a race condition here -- during the period where the vpn%d
    device is created and we're waiting for the VPN dæmon to actually
    connect and use it, if we try to create _another_ device we could end up
    re-using the same one -- because trying to open it again doesn't get
    -EBUSY as it would while it's _actually_ busy.

    So solve this, we add an IFF_TUN_EXCL flag which causes tun_set_iff() to
    fail if it would be opening an existing persistent tundevice -- so that
    we can make sure we're getting an entirely _new_ device.

    Signed-off-by: David Woodhouse
    Signed-off-by: David S. Miller

    David Woodhouse
     
  • Values of dB between -0.99 and -0.01 will be output with the wrong
    sign. This converts the negative value to positive and outputs it
    with a "-" prefix.

    Signed-off-by: Simon Arlott
    Signed-off-by: David S. Miller

    Simon Arlott