fm10k/base: fix mailbox phantom messages
authorWang Xiao W <xiao.w.wang@intel.com>
Thu, 10 Sep 2015 04:38:29 +0000 (12:38 +0800)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Wed, 7 Oct 2015 11:25:07 +0000 (13:25 +0200)
commit00b18e3de18aa97e5ebca7759db344663e899c66
tree9de128e5fabc2a2653752d9bcf99cd7d30740e5c
parent63cfcf90fe02ebd75bb148d6817ccecaa91c0a1f
fm10k/base: fix mailbox phantom messages

The phantom messages were a result of incorrectly forgetting to drop
already transmitted messages. We would reset pulled, and tail_len but
left the head/tail pointers alone.

The correct fix is to loop through pulled and drop messages until we've
dropped at least as many bytes as we pulled (possibly dropping a message
we've only partially transmitted. However, we also have to account for
tail_len variable and the 'ack' value as in mbx_pull_head. This means
that we need to re-read the HEAD field of the mailbox header.

Based on testing, this resolves the phantom messages issue, as well as
correctly keeping messages which have yet to be transmitted at all in
the Tx FIFO. Thus, we will begin re-transmission once we have
re-connected.

Signed-off-by: Wang Xiao W <xiao.w.wang@intel.com>
drivers/net/fm10k/base/fm10k_mbx.c