greybus: ap: add svc_set_route_send() command and use it on a link up event
When the AP receives a link up event, request that the SVC set a route to the interface's device id (this device id has been previously reported to the AP). In the future, we may not always immediately set a route upon receiving a link up event but this is sufficient for the known use cases at this time. Signed-off-by: Matt Porter <mporter@linaro.org> Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
This commit is contained in:
parent
e390b193d6
commit
060b93ddbb
@ -103,6 +103,23 @@ static void svc_handshake(struct svc_function_handshake *handshake,
|
||||
svc_msg_send(svc_msg, hd);
|
||||
}
|
||||
|
||||
static void svc_set_route_send(struct gb_interface *interface,
|
||||
struct greybus_host_device *hd)
|
||||
{
|
||||
struct svc_msg *svc_msg;
|
||||
|
||||
svc_msg = svc_msg_alloc(SVC_FUNCTION_UNIPRO_NETWORK_MANAGEMENT);
|
||||
if (!svc_msg)
|
||||
return;
|
||||
|
||||
svc_msg->header.function_id = SVC_FUNCTION_UNIPRO_NETWORK_MANAGEMENT;
|
||||
svc_msg->header.message_type = SVC_MSG_DATA;
|
||||
svc_msg->header.payload_length =
|
||||
cpu_to_le16(sizeof(struct svc_function_unipro_set_route));
|
||||
svc_msg->management.set_route.device_id = interface->device_id;
|
||||
svc_msg_send(svc_msg, hd);
|
||||
}
|
||||
|
||||
static void svc_management(struct svc_function_unipro_management *management,
|
||||
int payload_length, struct greybus_host_device *hd)
|
||||
{
|
||||
@ -132,6 +149,7 @@ static void svc_management(struct svc_function_unipro_management *management,
|
||||
return;
|
||||
}
|
||||
interface->device_id = management->link_up.device_id;
|
||||
svc_set_route_send(interface, hd);
|
||||
break;
|
||||
case SVC_MANAGEMENT_AP_DEVICE_ID:
|
||||
hd->device_id = management->ap_device_id.device_id;
|
||||
|
Loading…
x
Reference in New Issue
Block a user