net: txgbe: distinguish module types by checking identifier
Rework txgbe_identify_module() to validate module identifiers through
explicit type checks instead of relying on transceiver_type heuristics.
When using the SFP module, transceiver_type could be a random value,
because it was read from an invalid register.
Fixes: 57d39faed4 ("net: txgbe: improve functions of AML 40G devices")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
Link: https://patch.msgid.link/20260608070842.36504-3-jiawenwu@trustnetic.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
0487cfca46
commit
f2df54ddbf
1 changed files with 8 additions and 10 deletions
|
|
@ -357,18 +357,16 @@ int txgbe_identify_module(struct wx *wx)
|
|||
}
|
||||
|
||||
id = &buffer.id;
|
||||
if (id->identifier != TXGBE_SFF_IDENTIFIER_SFP &&
|
||||
id->identifier != TXGBE_SFF_IDENTIFIER_QSFP &&
|
||||
id->identifier != TXGBE_SFF_IDENTIFIER_QSFP_PLUS &&
|
||||
id->identifier != TXGBE_SFF_IDENTIFIER_QSFP28) {
|
||||
wx_err(wx, "Invalid module\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
if (id->transceiver_type == 0xFF)
|
||||
if (id->identifier == TXGBE_SFF_IDENTIFIER_SFP)
|
||||
return txgbe_sfp_to_linkmodes(wx, id);
|
||||
|
||||
return txgbe_qsfp_to_linkmodes(wx, id);
|
||||
if (id->identifier == TXGBE_SFF_IDENTIFIER_QSFP ||
|
||||
id->identifier == TXGBE_SFF_IDENTIFIER_QSFP_PLUS ||
|
||||
id->identifier == TXGBE_SFF_IDENTIFIER_QSFP28)
|
||||
return txgbe_qsfp_to_linkmodes(wx, id);
|
||||
|
||||
wx_err(wx, "Invalid module\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
void txgbe_setup_link(struct wx *wx)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue