devlink: implement line card active state
Allow driver to mark a line card as active. Expose this state to the userspace over devlink netlink interface with proper notifications. 'active' state means that line card was plugged in after being provisioned. Signed-off-by: Jiri Pirko <jiri@nvidia.com> Signed-off-by: Ido Schimmel <idosch@nvidia.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
fcdc8ce23a
commit
fc9f50d5b3
@@ -10331,6 +10331,47 @@ void devlink_linecard_provision_fail(struct devlink_linecard *linecard)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(devlink_linecard_provision_fail);
|
||||
|
||||
/**
|
||||
* devlink_linecard_activate - Set linecard active
|
||||
*
|
||||
* @linecard: devlink linecard
|
||||
*/
|
||||
void devlink_linecard_activate(struct devlink_linecard *linecard)
|
||||
{
|
||||
mutex_lock(&linecard->state_lock);
|
||||
WARN_ON(linecard->state != DEVLINK_LINECARD_STATE_PROVISIONED);
|
||||
linecard->state = DEVLINK_LINECARD_STATE_ACTIVE;
|
||||
devlink_linecard_notify(linecard, DEVLINK_CMD_LINECARD_NEW);
|
||||
mutex_unlock(&linecard->state_lock);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(devlink_linecard_activate);
|
||||
|
||||
/**
|
||||
* devlink_linecard_deactivate - Set linecard inactive
|
||||
*
|
||||
* @linecard: devlink linecard
|
||||
*/
|
||||
void devlink_linecard_deactivate(struct devlink_linecard *linecard)
|
||||
{
|
||||
mutex_lock(&linecard->state_lock);
|
||||
switch (linecard->state) {
|
||||
case DEVLINK_LINECARD_STATE_ACTIVE:
|
||||
linecard->state = DEVLINK_LINECARD_STATE_PROVISIONED;
|
||||
devlink_linecard_notify(linecard, DEVLINK_CMD_LINECARD_NEW);
|
||||
break;
|
||||
case DEVLINK_LINECARD_STATE_UNPROVISIONING:
|
||||
/* Line card is being deactivated as part
|
||||
* of unprovisioning flow.
|
||||
*/
|
||||
break;
|
||||
default:
|
||||
WARN_ON(1);
|
||||
break;
|
||||
}
|
||||
mutex_unlock(&linecard->state_lock);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(devlink_linecard_deactivate);
|
||||
|
||||
int devlink_sb_register(struct devlink *devlink, unsigned int sb_index,
|
||||
u32 size, u16 ingress_pools_count,
|
||||
u16 egress_pools_count, u16 ingress_tc_count,
|
||||
|
||||
Reference in New Issue
Block a user