Exemplo n.º 1
0
def is_sfp_plus(eeprom):
    # Determine by exclusion.
    # Byte 0 = 0x03 can be SFP, SFP+, SFP28
    if read_eeprom_byte(eeprom, media_eeprom_address(offset=0)) != 0x03:
        return False

    # If rj45, can only be sfp or sfp+
    if read_eeprom_byte(eeprom, media_eeprom_address(offset=2)) == 0x22:
        return not is_sfp(eeprom)
    return not is_sfp(eeprom) and not is_sfp28(eeprom)
Exemplo n.º 2
0
def is_sfp28(eeprom):
    # Byte 0: bits 0-7: Identifier     = 0x03              -> Still ambiguous
    # Byte 36: bits 0-7: Extended Spec Compliance has to be in set (0x01, 0x02, 0x03,0x04, 0x08, 0x0B, 0x0C,0x0D,0x18, 0x19)

    if read_eeprom_byte(eeprom, media_eeprom_address(offset=0)) != 0x03:
        return False
    if read_eeprom_byte(eeprom, media_eeprom_address(offset=36)) not in [0x01, 0x02, 0x03,0x04, 0x08, 0x0B, 0x0C,0x0D,0x18, 0x19]:
        return False
    if read_eeprom_byte(eeprom, media_eeprom_address(offset=2)) == 0x22:
        return False
    return True
Exemplo n.º 3
0
def is_qsfp28_dd(eeprom):
    if read_eeprom_byte(eeprom, media_eeprom_address(offset=0)) != 0x18:
        return False

    # Ideally 200G should not be coded with ver 3.0
    if get_cmis_version(eeprom) >= 0x30:
        return False
    return True
Exemplo n.º 4
0
def is_sfp(eeprom):
    # Conditions:
    # Byte 0: bits 0-7: Identifier     = 0x03, 0x0B              -> Still ambiguous
    # Byte 3: bits 4-7: 10G Compliance = 0                 -> Still ambiguous
    # Max FC Speed <= 1200mbps                             -> Still ambiguous
    # Byte 6: 1G Eth Compliance  != 0

    if read_eeprom_byte(eeprom, media_eeprom_address(offset=0)) != 0x03:
        return False

    if read_eeprom_byte(eeprom, media_eeprom_address(offset=3)) & set_bits([4,5,6,7]):
        return False
    
    if get_max_fc_speed(read_eeprom_byte(eeprom, media_eeprom_address(offset=10))) > 1200:
        return False

    if read_eeprom_byte(eeprom, media_eeprom_address(offset=6)) == 0:
        return False

    return True
Exemplo n.º 5
0
def is_sfp56_dd(eeprom):
    if read_eeprom_byte(eeprom, media_eeprom_address(offset=0)) != 0x1A:
        return False
    return True
Exemplo n.º 6
0
def is_qsfp56_dd(eeprom):
    if read_eeprom_byte(eeprom, media_eeprom_address(offset=0)) != 0x18:
        return False
    return not is_qsfp28_dd(eeprom)
Exemplo n.º 7
0
def is_qsfp28(eeprom):
    if read_eeprom_byte(eeprom, media_eeprom_address(offset=0)) != 0x11:
        return False
    return True
Exemplo n.º 8
0
def is_qsfp_plus(eeprom):
    if read_eeprom_byte(eeprom, media_eeprom_address(offset=0)) not in [0x0C, 0x0D, 0x1E]:
        return False
    return True