| From foo@baz Thu Dec 21 09:02:40 CET 2017 |
| From: Jacob Keller <jacob.e.keller@intel.com> |
| Date: Mon, 2 Oct 2017 07:17:50 -0700 |
| Subject: fm10k: ensure we process SM mbx when processing VF mbx |
| |
| From: Jacob Keller <jacob.e.keller@intel.com> |
| |
| |
| [ Upstream commit 17a91809942ca32c70026d2d5ba3348a2c4fdf8f ] |
| |
| When we process VF mailboxes, the driver is likely going to also queue |
| up messages to the switch manager. This process merely queues up the |
| FIFO, but doesn't actually begin the transmission process. Because we |
| hold the mailbox lock during this VF processing, the PF<->SM mailbox is |
| not getting processed at this time. Ensure that we actually process the |
| PF<->SM mailbox in between each PF<->VF mailbox. |
| |
| This should ensure prompt transmission of the messages queued up after |
| each VF message is received and handled. |
| |
| Signed-off-by: Jacob Keller <jacob.e.keller@intel.com> |
| Tested-by: Krishneil Singh <krishneil.k.singh@intel.com> |
| Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> |
| Signed-off-by: Sasha Levin <alexander.levin@verizon.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/ethernet/intel/fm10k/fm10k_iov.c | 3 +++ |
| 1 file changed, 3 insertions(+) |
| |
| --- a/drivers/net/ethernet/intel/fm10k/fm10k_iov.c |
| +++ b/drivers/net/ethernet/intel/fm10k/fm10k_iov.c |
| @@ -126,6 +126,9 @@ process_mbx: |
| struct fm10k_mbx_info *mbx = &vf_info->mbx; |
| u16 glort = vf_info->glort; |
| |
| + /* process the SM mailbox first to drain outgoing messages */ |
| + hw->mbx.ops.process(hw, &hw->mbx); |
| + |
| /* verify port mapping is valid, if not reset port */ |
| if (vf_info->vf_flags && !fm10k_glort_valid_pf(hw, glort)) |
| hw->iov.ops.reset_lport(hw, vf_info); |