On 8/29/19 4:10 PM, Jakub Kicinski wrote:
On Thu, 29 Aug 2019 11:27:15 -0700, Shannon Nelson wrote:
+static int ionic_get_module_eeprom(struct net_device *netdev,
+                                  struct ethtool_eeprom *ee,
+                                  u8 *data)
+{
+       struct ionic_lif *lif = netdev_priv(netdev);
+       struct ionic_dev *idev = &lif->ionic->idev;
+       struct ionic_xcvr_status *xcvr;
+       char tbuf[sizeof(xcvr->sprom)];
+       int count = 10;
+       u32 len;
+
+       /* The NIC keeps the module prom up-to-date in the DMA space
+        * so we can simply copy the module bytes into the data buffer.
+        */
+       xcvr = &idev->port_info->status.xcvr;
+       len = min_t(u32, sizeof(xcvr->sprom), ee->len);
+
+       do {
+               memcpy(data, xcvr->sprom, len);
+               memcpy(tbuf, xcvr->sprom, len);
+
+               /* Let's make sure we got a consistent copy */
+               if (!memcmp(data, tbuf, len))
+                       break;
+
+       } while (--count);
Should this return an error if the image was never consistent?

Sure, how about -EBUSY?

sln


Reply via email to