staging/rdma/hfi1: Workaround to prevent corruption during packet delivery
authorMark F. Brown <mark.f.brown@intel.com>
Tue, 10 Nov 2015 00:18:20 +0000 (19:18 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 20 Nov 2015 00:58:14 +0000 (16:58 -0800)
commit46b010d3eeb8eb29c740c4ef09c666485f5c07e6
treee615acff8a9edd3d1d285a8db63230ab7b32459f
parentd7b8ba5121e874fddd09e2e953f09646594a24a8
staging/rdma/hfi1: Workaround to prevent corruption during packet delivery

Disabling one receive context when RX_DMA is receiving a packet can cause
incorrect packet delivery for a subsequent packet on another receive
context.

This is resolved by doing the following:
1. Programming dummy tail address for every receive context
   before enabling it
2. While deallocating receive context resetting tail address
   to dummy address
3. Leaving the dummy address in when disabling tail update
4. When disabling receive context leaving tail update enabled

Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Reviewed-by: Mitko Haralanov <mitko.haralanov@intel.com>
Signed-off-by: Mark F. Brown <mark.f.brown@intel.com>
Signed-off-by: Jubin John <jubin.john@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/rdma/hfi1/chip.c
drivers/staging/rdma/hfi1/hfi.h
drivers/staging/rdma/hfi1/init.c