• Russell King's avatar
    net: sfp: read eeprom in maximum 16 byte increments · 28e74a7c
    Russell King authored
    Some SFP modules do not like reads longer than 16 bytes, so read the
    EEPROM in chunks of 16 bytes at a time.  This behaviour is not specified
    in the SFP MSAs, which specifies:
    
     "The serial interface uses the 2-wire serial CMOS E2PROM protocol
      defined for the ATMEL AT24C01A/02/04 family of components."
    
    and
    
     "As long as the SFP+ receives an acknowledge, it shall serially clock
      out sequential data words. The sequence is terminated when the host
      responds with a NACK and a STOP instead of an acknowledge."
    
    We must avoid breaking a read across a 16-bit quantity in the diagnostic
    page, thankfully all 16-bit quantities in that page are naturally
    aligned.
    Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
    Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    28e74a7c
sfp.c 43.9 KB