aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/qlogic/qed/qed_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet/qlogic/qed/qed_main.c')
-rw-r--r--drivers/net/ethernet/qlogic/qed/qed_main.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/net/ethernet/qlogic/qed/qed_main.c b/drivers/net/ethernet/qlogic/qed/qed_main.c
index 0cbc74d6ca8b..158944aa6097 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_main.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_main.c
@@ -2102,6 +2102,28 @@ out:
2102 return status; 2102 return status;
2103} 2103}
2104 2104
2105static int qed_read_module_eeprom(struct qed_dev *cdev, char *buf,
2106 u8 dev_addr, u32 offset, u32 len)
2107{
2108 struct qed_hwfn *hwfn = QED_LEADING_HWFN(cdev);
2109 struct qed_ptt *ptt;
2110 int rc = 0;
2111
2112 if (IS_VF(cdev))
2113 return 0;
2114
2115 ptt = qed_ptt_acquire(hwfn);
2116 if (!ptt)
2117 return -EAGAIN;
2118
2119 rc = qed_mcp_phy_sfp_read(hwfn, ptt, MFW_PORT(hwfn), dev_addr,
2120 offset, len, buf);
2121
2122 qed_ptt_release(hwfn, ptt);
2123
2124 return rc;
2125}
2126
2105static struct qed_selftest_ops qed_selftest_ops_pass = { 2127static struct qed_selftest_ops qed_selftest_ops_pass = {
2106 .selftest_memory = &qed_selftest_memory, 2128 .selftest_memory = &qed_selftest_memory,
2107 .selftest_interrupt = &qed_selftest_interrupt, 2129 .selftest_interrupt = &qed_selftest_interrupt,
@@ -2144,6 +2166,7 @@ const struct qed_common_ops qed_common_ops_pass = {
2144 .update_mac = &qed_update_mac, 2166 .update_mac = &qed_update_mac,
2145 .update_mtu = &qed_update_mtu, 2167 .update_mtu = &qed_update_mtu,
2146 .update_wol = &qed_update_wol, 2168 .update_wol = &qed_update_wol,
2169 .read_module_eeprom = &qed_read_module_eeprom,
2147}; 2170};
2148 2171
2149void qed_get_protocol_stats(struct qed_dev *cdev, 2172void qed_get_protocol_stats(struct qed_dev *cdev,