linux/drivers/infiniband/hw/nes
Faisal Latif 5962c2c803 RDMA/nes: Fix nes_nic_cm_xmit() error handling
We are getting crash or hung situation when we are running network
cable pull tests during RDMA traffic.

In schedule_nes_timer(), we return an error if nes_nic_cm_xmit()
returns failure.  This is changed to success as skb is being put on
the timer routines to be processed later.  In send_syn() case, we are
indicating connect failure once from nes_connect() and the other when
the rexmit retries expires.

The other issue is skb->users which we are incrementing before calling
nes_nic_cm_xmit() which calls dev_queue_xmit() but in case of failure
we are decrementing the skb->users at the same time putting the skb on
the rexmit path.  Even if dev_queue_xmit() fails, the skb->users is
decremented already.  We are removing the decrement of skb->users in
case of failure from both schedule_nes_timer() as well as from
nes_cm_timer_tick().

There is also extra check in nes_cm_timer_tick() for rexmit failure
which does a break from the loop is removed.  This causes problem as
the other nodes have their cm_node->ref_count incremented and are not
processed.

Signed-off-by: Faisal Latif <faisal.latif@intel.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
2009-04-08 14:23:55 -07:00
..
Kconfig
Makefile
nes_cm.c RDMA/nes: Fix nes_nic_cm_xmit() error handling 2009-04-08 14:23:55 -07:00
nes_cm.h RDMA/nes: Fix error handling issues 2009-04-08 14:22:20 -07:00
nes_context.h RDMA/nes: Update copyright to new legal entity and year 2009-03-06 15:12:10 -08:00
nes_hw.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 2009-03-26 15:54:36 -07:00
nes_hw.h RDMA/nes: Remove LLTX 2009-03-06 15:12:11 -08:00
nes_nic.c RDMA/nes: Fix mis-merge 2009-03-26 17:00:25 -07:00
nes_user.h RDMA/nes: Update copyright to new legal entity and year 2009-03-06 15:12:10 -08:00
nes_utils.c RDMA/nes: Update copyright to new legal entity and year 2009-03-06 15:12:10 -08:00
nes_verbs.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband 2009-03-26 15:47:08 -07:00
nes_verbs.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband 2009-03-26 15:47:08 -07:00
nes.c RDMA/nes: Update copyright to new legal entity and year 2009-03-06 15:12:10 -08:00
nes.h RDMA/nes: Fix incorrect casts on 32-bit architectures 2009-04-08 14:21:02 -07:00