mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-05-24 10:39:52 +00:00
RDMA/rxe: Distinguish between down links and disabled links
In ib_query_port(), use the netdev's IFF_UP flag to determine phys_state (flag set = down = POLLING, flag clear = disabled = DISABLED). Callers can then use the phys_state field to distinguish between links which have a dead partner, cable missing, etc., from links which are turned off on the local node. This is useful for HA and supportability. Signed-off-by: Andrew Boyer <andrew.boyer@dell.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
759ace7832
commit
5736c7c499
3 changed files with 11 additions and 4 deletions
|
@ -65,8 +65,9 @@
|
|||
*/
|
||||
#define RXE_UVERBS_ABI_VERSION 2
|
||||
|
||||
#define IB_PHYS_STATE_LINK_UP (5)
|
||||
#define IB_PHYS_STATE_LINK_DOWN (3)
|
||||
#define RDMA_LINK_PHYS_STATE_LINK_UP (5)
|
||||
#define RDMA_LINK_PHYS_STATE_DISABLED (3)
|
||||
#define RDMA_LINK_PHYS_STATE_POLLING (2)
|
||||
|
||||
#define RXE_ROCE_V2_SPORT (0xc000)
|
||||
|
||||
|
|
|
@ -607,7 +607,6 @@ void rxe_port_up(struct rxe_dev *rxe)
|
|||
|
||||
port = &rxe->port;
|
||||
port->attr.state = IB_PORT_ACTIVE;
|
||||
port->attr.phys_state = IB_PHYS_STATE_LINK_UP;
|
||||
|
||||
rxe_port_event(rxe, IB_EVENT_PORT_ACTIVE);
|
||||
dev_info(&rxe->ib_dev.dev, "set active\n");
|
||||
|
@ -620,7 +619,6 @@ void rxe_port_down(struct rxe_dev *rxe)
|
|||
|
||||
port = &rxe->port;
|
||||
port->attr.state = IB_PORT_DOWN;
|
||||
port->attr.phys_state = IB_PHYS_STATE_LINK_DOWN;
|
||||
|
||||
rxe_port_event(rxe, IB_EVENT_PORT_ERR);
|
||||
dev_info(&rxe->ib_dev.dev, "set down\n");
|
||||
|
|
|
@ -71,6 +71,14 @@ static int rxe_query_port(struct ib_device *dev,
|
|||
mutex_lock(&rxe->usdev_lock);
|
||||
rc = ib_get_eth_speed(dev, port_num, &attr->active_speed,
|
||||
&attr->active_width);
|
||||
|
||||
if (attr->state == IB_PORT_ACTIVE)
|
||||
attr->phys_state = RDMA_LINK_PHYS_STATE_LINK_UP;
|
||||
else if (dev_get_flags(rxe->ndev) & IFF_UP)
|
||||
attr->phys_state = RDMA_LINK_PHYS_STATE_POLLING;
|
||||
else
|
||||
attr->phys_state = RDMA_LINK_PHYS_STATE_DISABLED;
|
||||
|
||||
mutex_unlock(&rxe->usdev_lock);
|
||||
|
||||
out:
|
||||
|
|
Loading…
Add table
Reference in a new issue