Skip to contentSkip to conversation

Add capability to retrieve plug-in module EEPROM

PATCH In review Stuart Hodgson 4 participants 5 messages Apr 19, 2012 – May 6, 2012

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/3 Add capability to retrieve plug-in module EEPROM

We want to support reading module (SFP+, XFP, ...) EEPROMs as well as NIC EEPROMs. They will need a different command number and driver operation, but the structure and arguments will be the same and so we can share most of the code here.

---
 net/core/ethtool.c |   24 +++++++++++++++++-------
 1 files changed, 17 insertions(+), 7 deletions(-)
net/core/ethtool.c +17 -7
index beacdd9..ca7698f 100644
@@ -751,18 +751,17 @@ static int ethtool_get_link(struct net_device *dev, char __user *useraddr)
 	return 0;
 }
 
-static int ethtool_get_eeprom(struct net_device *dev, void __user *useraddr)
+static int ethtool_get_any_eeprom(struct net_device *dev, void __user *useraddr,
+				  int (*getter)(struct net_device *,
+						struct ethtool_eeprom *, u8 *),
+				  u32 total_len)
 {
 	struct ethtool_eeprom eeprom;
-	const struct ethtool_ops *ops = dev->ethtool_ops;
 	void __user *userbuf = useraddr + sizeof(eeprom);
 	u32 bytes_remaining;
 	u8 *data;
 	int ret = 0;
 
-	if (!ops->get_eeprom || !ops->get_eeprom_len)
-		return -EOPNOTSUPP;
-
 	if (copy_from_user(&eeprom, useraddr, sizeof(eeprom)))
 		return -EFAULT;
 
@@ -771,7 +770,7 @@ static int ethtool_get_eeprom(struct net_device *dev, void __user *useraddr)
 		return -EINVAL;
 
 	/* Check for exceeding total eeprom len */
-	if (eeprom.offset + eeprom.len > ops->get_eeprom_len(dev))
+	if (eeprom.offset + eeprom.len > total_len)
 		return -EINVAL;
 
 	data = kmalloc(PAGE_SIZE, GFP_USER);
@@ -782,7 +781,7 @@ static int ethtool_get_eeprom(struct net_device *dev, void __user *useraddr)
 	while (bytes_remaining > 0) {
 		eeprom.len = min(bytes_remaining, (u32)PAGE_SIZE);
 
-		ret = ops->get_eeprom(dev, &eeprom, data);
+		ret = getter(dev, &eeprom, data);
 		if (ret)
 			break;
 		if (copy_to_user(userbuf, data, eeprom.len)) {
@@ -803,6 +802,17 @@ static int ethtool_get_eeprom(struct net_device *dev, void __user *useraddr)
 	return ret;
 }
 
+static int ethtool_get_eeprom(struct net_device *dev, void __user *useraddr)
+{
+	const struct ethtool_ops *ops = dev->ethtool_ops;
+
+	if (!ops->get_eeprom || !ops->get_eeprom_len)
+		return -EOPNOTSUPP;
+
+	return ethtool_get_any_eeprom(dev, useraddr, ops->get_eeprom,
+				      ops->get_eeprom_len(dev));
+}
+
 static int ethtool_set_eeprom(struct net_device *dev, void __user *useraddr)
 {
 	struct ethtool_eeprom eeprom;
Signature · 1 line
1.7.1
maintainer
#1 lore raw

You can't just submit three seperate patches each with the same exact Subject line.

Otherwise someone scanning the commit headers can't figure out what is different in each of these changes.

There also is no signoff from Ben for patches #2 or #3, did he review them? If so, why didn't he ACK or sign off on it? If not, why not?

#2 lore raw
Quoted 8 lines · David Miller

You can't just submit three seperate patches each with the same exact Subject line.

Otherwise someone scanning the commit headers can't figure out what is different in each of these changes.

There also is no signoff from Ben for patches #2 or #3, did he review them? If so, why didn't he ACK or sign off on it? If not, why not?

Sorry, I've been busy with another project. I'll reply to Stuart's patches faster next round.

Ben.

Signature · 3 lines
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
#3 lore raw
Quoted 7 lines · David Miller
Quoted 6 lines

You can't just submit three seperate patches each with the same exact Subject line.

Otherwise someone scanning the commit headers can't figure out what is different in each of these changes.

Quoted 7 lines
Quoted 2 lines

There also is no signoff from Ben for patches #2 or #3, did he review them? If so, why didn't he ACK or sign off on it? If not, why not?

Sorry, I've been busy with another project. I'll reply to Stuart's patches faster next round.

Ben.

Hi Stuart,
It's been 3 weeks since you sent the initial patch series which were not accepted. Please reply if you're going to resubmit fixed patches soon, otherwise I'll take over, and complete this task from where you left it.

Thanks much,
Yaniv

Quoted 10 lines

--
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job. They asked us to note that Solarflare product names are trademarked.

--
To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

#4 lore raw
Quoted 13 lines · Yaniv Rosner
Quoted 13 lines · David Miller
Quoted 8 lines

You can't just submit three seperate patches each with the same exact Subject line.

Otherwise someone scanning the commit headers can't figure out what is different in each of these changes.

There also is no signoff from Ben for patches #2 or #3, did he review them? If so, why didn't he ACK or sign off on it? If not, why not?

Sorry, I've been busy with another project. I'll reply to Stuart's patches faster next round.

Quoted 6 lines
Quoted 1 line

Ben.

Hi Stuart,
It's been 3 weeks since you sent the initial patch series which were not accepted. Please reply if you're going to resubmit fixed patches soon, otherwise I'll take over, and complete this task from where you left it.

I'll be making a pull request including Stuart's patches in the next few days.

Ben.

Signature · 3 lines
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.