Project

General

Profile

Actions

Bug #13433

closed

After cxgbe transceiver is reseated, link does not return to up state

Added by Paul Winder 4 months ago. Updated 3 months ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
-
Start date:
Due date:
% Done:

100%

Estimated time:
Difficulty:
Medium
Tags:
Gerrit CR:

Description

The problem seems to appear when a non-default FEC setting is applied to the link. When the transceiver is removed and then re-inserted the link does not come back up.

A work around is to change the FEC configuration and then change it back.

Before the transceiver was removed the link_cfg was:

> 0xfffffeb1fa794a80::print -t struct port_info link_cfg
struct link_config link_cfg = {
    fw_port_cap32_t link_cfg.pcaps = 0x118f007e
    fw_port_cap32_t link_cfg.def_acaps = 0x10870040
    fw_port_cap32_t link_cfg.acaps = 0x40
    fw_port_cap32_t link_cfg.lpacaps = 0x70000
    fw_port_cap32_t link_cfg.speed_caps = 0x40
    u32 link_cfg.speed = 0x186a0
    cc_pause_t link_cfg.requested_fc = 0x3
    cc_pause_t link_cfg.fc = 0x3
    cc_fec_t link_cfg.requested_fec = 0x4
    cc_fec_t link_cfg.fec = 0x4
    unsigned char link_cfg.autoneg = 0
    unsigned char link_cfg.link_ok = 0x1
    unsigned char link_cfg.link_down_rc = 0
    bool link_cfg.new_module = 0 (0)
    bool link_cfg.redo_l1cfg = 0 (0)

and after it was removed and re-inserted:

> 0xfffffeb1fa794a80::print -t struct port_info link_cfg
struct link_config link_cfg = {
    fw_port_cap32_t link_cfg.pcaps = 0x118f007e
    fw_port_cap32_t link_cfg.def_acaps = 0x870040
    fw_port_cap32_t link_cfg.acaps = 0x40
    fw_port_cap32_t link_cfg.lpacaps = 0x70000
    fw_port_cap32_t link_cfg.speed_caps = 0x40
    u32 link_cfg.speed = 0x186a0
    cc_pause_t link_cfg.requested_fc = 0x3
    cc_pause_t link_cfg.fc = 0x3
    cc_fec_t link_cfg.requested_fec = 0x4
    cc_fec_t link_cfg.fec = 0x1
    unsigned char link_cfg.autoneg = 0
    unsigned char link_cfg.link_ok = 0
    unsigned char link_cfg.link_down_rc = 0
    bool link_cfg.new_module = 0 (0)
    bool link_cfg.redo_l1cfg = 0 (0)
}

The link_cfg.fec fields differ, the value in link_cfg.requested_fec should be re-applied.

Actions #1

Updated by Paul Winder 4 months ago

  • Assignee set to Paul Winder
Actions #2

Updated by Paul Winder 4 months ago

Tested using ports with default and non-default FEC settings. In all case when the transceiver was removed and re-inserted the link came up.

Actions #3

Updated by Electric Monk 4 months ago

  • Gerrit CR set to 1153
Actions #4

Updated by Electric Monk 3 months ago

  • Status changed from In Progress to Closed
  • % Done changed from 0 to 100

git commit 592b68f9130dc6c5b980b90fbb93d13a5a4c3265

commit  592b68f9130dc6c5b980b90fbb93d13a5a4c3265
Author: Paul Winder <pwinder@racktopsystems.com>
Date:   2021-02-12T16:21:27.000Z

    13433 After cxgbe transceiver is reseated, link does not return to up state
    Reviewed by: Robert Mustacchi <rm@fingolfin.org>
    Reviewed by: Andy Fiddaman <andy@omnios.org>
    Reviewed by: Igor Kozhukhov <igor@dilos.org>
    Approved by: Garrett D'Amore <garrett@damore.org>

Actions

Also available in: Atom PDF