diff options
author | Mitch Williams <mitch.a.williams@intel.com> | 2014-10-16 23:14:53 -0400 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2014-11-03 07:35:35 -0500 |
commit | 2089ad03b200fca3b2193a2f6f9779c38f62f9d6 (patch) | |
tree | e141bb7b640add8b698d634ec9aedd449f98b041 /drivers/net/ethernet/intel/i40e/i40e_main.c | |
parent | 7a28d8857ddc3986b62ae1a41dc551453718b4b3 (diff) |
i40e: properly parse MDET registers
Fix a few problems with our parsing of the MDET registers:
* Queue IDs are longer than 8 bits
* Queue IDs are absolute for the device and the base queue must be
subtracted out.
* VF IDs are longer than 8 bits
* Use the MASK define to mask the event value, instead of the SHIFT
define.
Change-ID: I3dc7237f480c02e1192a2a8ea782f8a02ab2a8b7
Reported-by: Marc Neustadter <marc.neustadter@intel.com>
Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Signed-off-by: Patrick Lu <patrick.lu@intel.com>
Tested-by: Jim Young <jamesx.m.young@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net/ethernet/intel/i40e/i40e_main.c')
-rw-r--r-- | drivers/net/ethernet/intel/i40e/i40e_main.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c index 1b0c437dae21..1a98e2384b3b 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_main.c +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c | |||
@@ -6174,12 +6174,13 @@ static void i40e_handle_mdd_event(struct i40e_pf *pf) | |||
6174 | if (reg & I40E_GL_MDET_TX_VALID_MASK) { | 6174 | if (reg & I40E_GL_MDET_TX_VALID_MASK) { |
6175 | u8 pf_num = (reg & I40E_GL_MDET_TX_PF_NUM_MASK) >> | 6175 | u8 pf_num = (reg & I40E_GL_MDET_TX_PF_NUM_MASK) >> |
6176 | I40E_GL_MDET_TX_PF_NUM_SHIFT; | 6176 | I40E_GL_MDET_TX_PF_NUM_SHIFT; |
6177 | u8 vf_num = (reg & I40E_GL_MDET_TX_VF_NUM_MASK) >> | 6177 | u16 vf_num = (reg & I40E_GL_MDET_TX_VF_NUM_MASK) >> |
6178 | I40E_GL_MDET_TX_VF_NUM_SHIFT; | 6178 | I40E_GL_MDET_TX_VF_NUM_SHIFT; |
6179 | u8 event = (reg & I40E_GL_MDET_TX_EVENT_MASK) >> | 6179 | u8 event = (reg & I40E_GL_MDET_TX_EVENT_MASK) >> |
6180 | I40E_GL_MDET_TX_EVENT_SHIFT; | 6180 | I40E_GL_MDET_TX_EVENT_SHIFT; |
6181 | u8 queue = (reg & I40E_GL_MDET_TX_QUEUE_MASK) >> | 6181 | u16 queue = ((reg & I40E_GL_MDET_TX_QUEUE_MASK) >> |
6182 | I40E_GL_MDET_TX_QUEUE_SHIFT; | 6182 | I40E_GL_MDET_TX_QUEUE_SHIFT) - |
6183 | pf->hw.func_caps.base_queue; | ||
6183 | if (netif_msg_tx_err(pf)) | 6184 | if (netif_msg_tx_err(pf)) |
6184 | dev_info(&pf->pdev->dev, "Malicious Driver Detection event 0x%02x on TX queue %d pf number 0x%02x vf number 0x%02x\n", | 6185 | dev_info(&pf->pdev->dev, "Malicious Driver Detection event 0x%02x on TX queue %d pf number 0x%02x vf number 0x%02x\n", |
6185 | event, queue, pf_num, vf_num); | 6186 | event, queue, pf_num, vf_num); |
@@ -6192,8 +6193,9 @@ static void i40e_handle_mdd_event(struct i40e_pf *pf) | |||
6192 | I40E_GL_MDET_RX_FUNCTION_SHIFT; | 6193 | I40E_GL_MDET_RX_FUNCTION_SHIFT; |
6193 | u8 event = (reg & I40E_GL_MDET_RX_EVENT_MASK) >> | 6194 | u8 event = (reg & I40E_GL_MDET_RX_EVENT_MASK) >> |
6194 | I40E_GL_MDET_RX_EVENT_SHIFT; | 6195 | I40E_GL_MDET_RX_EVENT_SHIFT; |
6195 | u8 queue = (reg & I40E_GL_MDET_RX_QUEUE_MASK) >> | 6196 | u16 queue = ((reg & I40E_GL_MDET_RX_QUEUE_MASK) >> |
6196 | I40E_GL_MDET_RX_QUEUE_SHIFT; | 6197 | I40E_GL_MDET_RX_QUEUE_SHIFT) - |
6198 | pf->hw.func_caps.base_queue; | ||
6197 | if (netif_msg_rx_err(pf)) | 6199 | if (netif_msg_rx_err(pf)) |
6198 | dev_info(&pf->pdev->dev, "Malicious Driver Detection event 0x%02x on RX queue %d of function 0x%02x\n", | 6200 | dev_info(&pf->pdev->dev, "Malicious Driver Detection event 0x%02x on RX queue %d of function 0x%02x\n", |
6199 | event, queue, func); | 6201 | event, queue, func); |