26 Jun, 2014

1 commit

  • There's no need for a full 32x32 matrix, when rows before the last are
    just shifted copies of the rows after them.

    There's still room for improvement (especially on X86 processors with
    CRC32 and PCLMUL instructions), but this is a large step in the
    right direction [which is in particular useful for its current user,
    namely SCTP checksumming over multiple skb frags[] entries, i.e. in
    IPVS balancing when other CRC32 offloads are not available].

    The internal primitive is now called crc32_generic_shift and takes one
    less argument; the XOR with crc2 is done in inline wrappers.

    Signed-off-by: George Spelvin
    Signed-off-by: Daniel Borkmann
    Signed-off-by: David S. Miller

    George Spelvin
     

25 Jun, 2014

1 commit

  • Hi,
    This patch fixes warnings generated by sparse as pointed out by kbuild test
    robot, please apply to net-next. Applies on top of
    commit 79631c89ed70643fd0579a65834b227795b251ee ("trivial: net/irda/irlmp.c:
    Fix closing brace followed by if")
    -Anish

    v2: cleanup submission as per davem's feedback

    Fixes: 76bcb31efc06 ("cxgb4 : Add DCBx support codebase and dcbnl_ops")
    Signed-off-by: Anish Bhatt
    Signed-off-by: David S. Miller

    Anish Bhatt
     

24 Jun, 2014

11 commits

  • Signed-off-by: Rasmus Villemoes
    Signed-off-by: David S. Miller

    Rasmus Villemoes
     
  • Signed-off-by: David S. Miller

    David S. Miller
     
  • Govindarajulu Varadarajan says:

    ====================
    enic updates

    This series fixes minor bugs and adds new features like Accelerated RFS,
    busy_poll, tx clean-up in napi_poll.

    v3:
    * While doing tx cleanup in napi, ignore budget and clean up all desc possible.

    v2:
    * Fix #ifdef coding style issue in '[PATCH 4/8] enic: alloc/free rx_cpu_rmap'
    And [PATCH 5/8] enic: Add Accelerated RFS support'
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Till now enic had been doing tx clean in isr.

    Using napi infrastructure to move the tx clean up out of isr to softirq.
    Now, wq isr schedules napi poll. In enic_poll_msix_wq we clean up the tx queus.

    This is applicable only on MSIX. In INTx and MSI we use single napi to clean
    both rx & tx queues.

    Signed-off-by: Govindarajulu Varadarajan
    Signed-off-by: David S. Miller

    Govindarajulu Varadarajan
     
  • This patch adds support for low latency busy_poll.

    * Introduce drivers ndo_busy_poll function enic_busy_poll, which is called by
    socket waiting for data.

    * Introduce locking between napi_poll nad busy_poll

    * enic_busy_poll cleans up all the rx pkts possible. While in busy_poll, rq
    holds the state ENIC_POLL_STATE_POLL. While in napi_poll, rq holds the state
    ENIC_POLL_STATE_NAPI.

    * in napi_poll we return if we are in busy_poll. Incase of INTx & msix, we just
    service wq and return if busy_poll is going on.

    Signed-off-by: Govindarajulu Varadarajan
    Signed-off-by: David S. Miller

    Govindarajulu Varadarajan
     
  • We were experiencing occasional "BUG: scheduling while atomic" splats
    in our testing. Enabling DEBUG_SPINLOCK and DEBUG_LOCKDEP in the kernel
    exposed a lockdep in the enic driver.

    enic 0000:0b:00.0 eth2: Link UP

    ======================================================
    [ INFO: SOFTIRQ-safe -> SOFTIRQ-unsafe lock order detected ]
    3.12.0-rc1.x86_64-dbg+ #2 Tainted: GF W
    ------------------------------------------------------
    NetworkManager/4209 [HC0[0]:SC0[2]:HE1:SE0] is trying to acquire:
    (&(&enic->devcmd_lock)->rlock){+.+...}, at: [] enic_dev_packet_filter+0x44/0x90 [enic]

    The fix was to replace spin_lock with spin_lock_bh for the enic
    devcmd_lock, so that soft irqs would be disabled while the lock
    is held.

    Signed-off-by: Sujith Sankar
    Signed-off-by: Tony Camuso
    Signed-off-by: Govindarajulu Varadarajan
    Signed-off-by: David S. Miller

    Tony Camuso
     
  • This patch adds supports for Accelerated Receive Flow Steering.

    When the desired rx is different from current rq, for a flow, kernel calls the
    driver function enic_rx_flow_steer(). enic_rx_flow_steer adds a IP-TCP/UDP
    hardware filter.

    Driver registers a timer function enic_flow_may_expire. This function is called
    every HZ/4 seconds. In this function we check if the added filter has expired
    by calling rps_may_expire_flow(). If the flow has expired, it removes the hw
    filter.

    As of now adaptor supports only IPv4 - TCP/UDP filters.

    Signed-off-by: Govindarajulu Varadarajan
    Signed-off-by: David S. Miller

    Govindarajulu Varadarajan
     
  • rx_cpu_rmap provides the reverse irq cpu affinity. This patch allocates and
    sets drivers netdev->rx_cpu_rmap accordingly.

    rx_cpu_rmap is set in enic_request_intr() which is called by enic_open and
    rx_cpu_rmap is freed in enic_free_intr() which is called by enic_stop.

    This is used by Accelerated RFS.

    Signed-off-by: Govindarajulu Varadarajan
    Signed-off-by: David S. Miller

    Govindarajulu Varadarajan
     
  • This patch adds interface to add and delete IP 5 tuple filter. This interface
    is used by Accelerated RFS code to steer a flow to corresponding receive
    queue.

    As of now adaptor supports only ipv4 + tcp/udp packet steering.

    Signed-off-by: Govindarajulu Varadarajan
    Signed-off-by: David S. Miller

    Govindarajulu Varadarajan
     
  • Hardware (in readq(&devcmd->args[0])) returns positive number in case of error.
    But _vnic_dev_cmd should return a negative value in case of error.

    Signed-off-by: Govindarajulu Varadarajan
    Signed-off-by: David S. Miller

    Govindarajulu Varadarajan
     
  • skb_flow_dissect() dissects only transport header type in ip_proto. It dose not
    give any information about IPv4 or IPv6.

    This patch adds new member, n_proto, to struct flow_keys. Which records the
    IP layer type. i.e IPv4 or IPv6.

    This can be used in netdev->ndo_rx_flow_steer driver function to dissect flow.

    Adding new member to flow_keys increases the struct size by around 4 bytes.
    This causes BUILD_BUG_ON(sizeof(qcb->data) < sz); to fail in
    qdisc_cb_private_validate()

    So increase data size by 4

    Signed-off-by: Govindarajulu Varadarajan
    Signed-off-by: David S. Miller

    Govindarajulu Varadarajan
     

23 Jun, 2014

11 commits


22 Jun, 2014

3 commits

  • tcf_ematch is allocated by kzalloc in function tcf_em_tree_validate(),
    so cm_old is always NULL.

    Signed-off-by: Duan Jiong
    Signed-off-by: David S. Miller

    Duan Jiong
     
  • use list_for_each_entry_continue_reverse to rollback in fdb_add_hw
    when add address failed

    Signed-off-by: Li RongQing
    Signed-off-by: David S. Miller

    Li RongQing
     
  • Jeff Kirsher says:

    ====================
    Intel Wired LAN Driver Updates 2014-06-20

    This series contains updates to i40e and i40evf.

    Anjali provides an update to the registers to handle the updates from the
    hardware. Also provides a fix so that we do not try to access the rings
    through the qvectors at the time of freeing the qvectors.

    Jesse provides a workaround for some older NVM versions where the NVM
    was not filling in the GLQF_HKEY register, so made sure that the
    critical register is initialized.

    Michal provides a fix to reset the head and tail on admin queue
    initialization where head and tail are not reset by the hardware.

    Neerav adds a helper routine that would wait for the Rx/Tx queue to reach
    the enable or disable state that is requested. Also provides a fix
    to the debugfs command "lldp get remote" which was dumping the local
    LLDPDU instead of the peer's LLDPDU. Fixed a bug when all the Tx hang
    recovery mechanisms have failed and the driver tries to bring down the
    interface in the interrupt context.

    Shannon provides a patch to clear the Virtual Ethernet Bridge (VEB) stats
    when the PF stats are cleared. Also cleans the service tasks so that
    they do not run while a reset is in progress.

    Mitch fixes an issue in i40evf_get_rxfh() where only fifteen registers
    were being read instead of all sixteen.

    Carolyn provides a change to the RSS configuration to set table size and
    write to the hardware to confirm the RSS table size being used.

    Kamil makes a change to the admin queue debug prints so that they will not
    cause segmentation faults in some of our tool applications.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     

20 Jun, 2014

13 commits