aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYuval Mintz <Yuval.Mintz@qlogic.com>2016-04-22 01:41:02 -0400
committerDavid S. Miller <davem@davemloft.net>2016-04-25 15:59:15 -0400
commitf3e72109f04c36ee45e62c0e6e1323179287c3e4 (patch)
tree2ad02e9de8224f2c4ae89aae9acb994bbe19c3d5
parentd4967cf38fbd62467b8fb5cab63d7da1f5907ed7 (diff)
qede: Add support for ethtool private flags
Adds a getter for the interfaces private flags. The only parameter currently supported is whether the interface is a coupled function [required for supporting 100g]. Signed-off-by: Yuval Mintz <Yuval.Mintz@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/qlogic/qede/qede_ethtool.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/net/ethernet/qlogic/qede/qede_ethtool.c b/drivers/net/ethernet/qlogic/qede/qede_ethtool.c
index f87e83b41d5d..2ac98d44c1e1 100644
--- a/drivers/net/ethernet/qlogic/qede/qede_ethtool.c
+++ b/drivers/net/ethernet/qlogic/qede/qede_ethtool.c
@@ -116,6 +116,15 @@ static const struct {
116 116
117#define QEDE_NUM_STATS ARRAY_SIZE(qede_stats_arr) 117#define QEDE_NUM_STATS ARRAY_SIZE(qede_stats_arr)
118 118
119enum {
120 QEDE_PRI_FLAG_CMT,
121 QEDE_PRI_FLAG_LEN,
122};
123
124static const char qede_private_arr[QEDE_PRI_FLAG_LEN][ETH_GSTRING_LEN] = {
125 "Coupled-Function",
126};
127
119static void qede_get_strings_stats(struct qede_dev *edev, u8 *buf) 128static void qede_get_strings_stats(struct qede_dev *edev, u8 *buf)
120{ 129{
121 int i, j, k; 130 int i, j, k;
@@ -139,6 +148,10 @@ static void qede_get_strings(struct net_device *dev, u32 stringset, u8 *buf)
139 case ETH_SS_STATS: 148 case ETH_SS_STATS:
140 qede_get_strings_stats(edev, buf); 149 qede_get_strings_stats(edev, buf);
141 break; 150 break;
151 case ETH_SS_PRIV_FLAGS:
152 memcpy(buf, qede_private_arr,
153 ETH_GSTRING_LEN * QEDE_PRI_FLAG_LEN);
154 break;
142 default: 155 default:
143 DP_VERBOSE(edev, QED_MSG_DEBUG, 156 DP_VERBOSE(edev, QED_MSG_DEBUG,
144 "Unsupported stringset 0x%08x\n", stringset); 157 "Unsupported stringset 0x%08x\n", stringset);
@@ -177,6 +190,8 @@ static int qede_get_sset_count(struct net_device *dev, int stringset)
177 switch (stringset) { 190 switch (stringset) {
178 case ETH_SS_STATS: 191 case ETH_SS_STATS:
179 return num_stats + QEDE_NUM_RQSTATS; 192 return num_stats + QEDE_NUM_RQSTATS;
193 case ETH_SS_PRIV_FLAGS:
194 return QEDE_PRI_FLAG_LEN;
180 195
181 default: 196 default:
182 DP_VERBOSE(edev, QED_MSG_DEBUG, 197 DP_VERBOSE(edev, QED_MSG_DEBUG,
@@ -185,6 +200,13 @@ static int qede_get_sset_count(struct net_device *dev, int stringset)
185 } 200 }
186} 201}
187 202
203static u32 qede_get_priv_flags(struct net_device *dev)
204{
205 struct qede_dev *edev = netdev_priv(dev);
206
207 return (!!(edev->dev_info.common.num_hwfns > 1)) << QEDE_PRI_FLAG_CMT;
208}
209
188static int qede_get_settings(struct net_device *dev, struct ethtool_cmd *cmd) 210static int qede_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
189{ 211{
190 struct qede_dev *edev = netdev_priv(dev); 212 struct qede_dev *edev = netdev_priv(dev);
@@ -814,6 +836,7 @@ static const struct ethtool_ops qede_ethtool_ops = {
814 .get_strings = qede_get_strings, 836 .get_strings = qede_get_strings,
815 .set_phys_id = qede_set_phys_id, 837 .set_phys_id = qede_set_phys_id,
816 .get_ethtool_stats = qede_get_ethtool_stats, 838 .get_ethtool_stats = qede_get_ethtool_stats,
839 .get_priv_flags = qede_get_priv_flags,
817 .get_sset_count = qede_get_sset_count, 840 .get_sset_count = qede_get_sset_count,
818 .get_rxnfc = qede_get_rxnfc, 841 .get_rxnfc = qede_get_rxnfc,
819 .set_rxnfc = qede_set_rxnfc, 842 .set_rxnfc = qede_set_rxnfc,