aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel/i40evf/i40e_adminq.c
diff options
context:
space:
mode:
authorShannon Nelson <shannon.nelson@intel.com>2014-07-10 03:58:20 -0400
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2014-08-27 03:40:14 -0400
commitf905dd62be8853644357044a455f83e63e8c68ef (patch)
tree8c6f216fbeb85c6b7a66e6b513edb94f5620c7cd /drivers/net/ethernet/intel/i40evf/i40e_adminq.c
parent7b592f6168e3091bc0868812b6a4a3126be5b82d (diff)
i40e/i40evf: add max buf len to aq debug print helper
There is at least one case in the Firmware API where the response to a command changes the buffer size field in the AQ descriptor to a larger number than what the request's buffer size started as. This is in addition to setting an error flag and is in order to tell the requester how much larger a buffer is required for the answer. We need to be sure not to use that number when dumping the contents of the data buffer because it can send us into the weeds and generate an invalid pointer exception. This patch adds a max buffer size parameter to the print helper to be sure the code knows when to stop. Change-ID: Ib84f7ed72140fe9d600086d8f2002fc5d8753092 Signed-off-by: Shannon Nelson <shannon.nelson@intel.com> Tested-by: Jim Young <jamesx.m.young@intel.com> Tested-by: Sibai Li <sibai.li@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net/ethernet/intel/i40evf/i40e_adminq.c')
-rw-r--r--drivers/net/ethernet/intel/i40evf/i40e_adminq.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/net/ethernet/intel/i40evf/i40e_adminq.c b/drivers/net/ethernet/intel/i40evf/i40e_adminq.c
index 003006033614..f206be917842 100644
--- a/drivers/net/ethernet/intel/i40evf/i40e_adminq.c
+++ b/drivers/net/ethernet/intel/i40evf/i40e_adminq.c
@@ -788,7 +788,8 @@ i40e_status i40evf_asq_send_command(struct i40e_hw *hw,
788 788
789 /* bump the tail */ 789 /* bump the tail */
790 i40e_debug(hw, I40E_DEBUG_AQ_MESSAGE, "AQTX: desc and buffer:\n"); 790 i40e_debug(hw, I40E_DEBUG_AQ_MESSAGE, "AQTX: desc and buffer:\n");
791 i40evf_debug_aq(hw, I40E_DEBUG_AQ_COMMAND, (void *)desc_on_ring, buff); 791 i40evf_debug_aq(hw, I40E_DEBUG_AQ_COMMAND, (void *)desc_on_ring,
792 buff, buff_size);
792 (hw->aq.asq.next_to_use)++; 793 (hw->aq.asq.next_to_use)++;
793 if (hw->aq.asq.next_to_use == hw->aq.asq.count) 794 if (hw->aq.asq.next_to_use == hw->aq.asq.count)
794 hw->aq.asq.next_to_use = 0; 795 hw->aq.asq.next_to_use = 0;
@@ -842,7 +843,8 @@ i40e_status i40evf_asq_send_command(struct i40e_hw *hw,
842 843
843 i40e_debug(hw, I40E_DEBUG_AQ_MESSAGE, 844 i40e_debug(hw, I40E_DEBUG_AQ_MESSAGE,
844 "AQTX: desc and buffer writeback:\n"); 845 "AQTX: desc and buffer writeback:\n");
845 i40evf_debug_aq(hw, I40E_DEBUG_AQ_COMMAND, (void *)desc, buff); 846 i40evf_debug_aq(hw, I40E_DEBUG_AQ_COMMAND, (void *)desc, buff,
847 buff_size);
846 848
847 /* update the error if time out occurred */ 849 /* update the error if time out occurred */
848 if ((!cmd_completed) && 850 if ((!cmd_completed) &&
@@ -938,7 +940,8 @@ i40e_status i40evf_clean_arq_element(struct i40e_hw *hw,
938 hw->aq.nvm_busy = false; 940 hw->aq.nvm_busy = false;
939 941
940 i40e_debug(hw, I40E_DEBUG_AQ_MESSAGE, "AQRX: desc and buffer:\n"); 942 i40e_debug(hw, I40E_DEBUG_AQ_MESSAGE, "AQRX: desc and buffer:\n");
941 i40evf_debug_aq(hw, I40E_DEBUG_AQ_COMMAND, (void *)desc, e->msg_buf); 943 i40evf_debug_aq(hw, I40E_DEBUG_AQ_COMMAND, (void *)desc, e->msg_buf,
944 hw->aq.arq_buf_size);
942 945
943 /* Restore the original datalen and buffer address in the desc, 946 /* Restore the original datalen and buffer address in the desc,
944 * FW updates datalen to indicate the event message 947 * FW updates datalen to indicate the event message