i40e: (ptp) warn when PF_ID does not match in PRTTSYN_CTL0
authorJacob Keller <jacob.e.keller@intel.com>
Wed, 9 Jul 2014 07:46:11 +0000 (07:46 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Wed, 16 Jul 2014 21:06:44 +0000 (14:06 -0700)
Display a verbose warning message when the incorrect PF attempts to
control timestamping for a port to which it was not assigned. This
shouldn't display except in the case of multiple PFs per port. The
primary intent of this message is to help debugging the reason why the
SIOCSHWTSTAMP ioctl has failed, and to help narrow the cause of the
issue.

Change-ID: Ic98798e0c844d98389d4c20e7160ba256f2bc7e8
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Tested-by: Jim Young <jamesx.m.young@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/i40e/i40e_ptp.c

index 582704a642ae5af84748780154196ccba84ae2f1..bb7fe98b3a6cd7bd3c99d7454186f19451e84f1d 100644 (file)
@@ -447,8 +447,12 @@ static int i40e_ptp_set_timestamp_mode(struct i40e_pf *pf,
        /* Confirm that 1588 is supported on this PF. */
        pf_id = (rd32(hw, I40E_PRTTSYN_CTL0) & I40E_PRTTSYN_CTL0_PF_ID_MASK) >>
                I40E_PRTTSYN_CTL0_PF_ID_SHIFT;
-       if (hw->pf_id != pf_id)
-               return -EINVAL;
+       if (hw->pf_id != pf_id) {
+               dev_err(&pf->pdev->dev,
+                       "PF %d attempted to control timestamp mode on port %d, which is owned by PF %d\n",
+                       hw->pf_id, hw->port, pf_id);
+               return -EPERM;
+       }
 
        switch (config->tx_type) {
        case HWTSTAMP_TX_OFF: