static uint8_t gb_control_connected(struct gb_operation *operation) { int retval; struct gb_control_connected_request *request = gb_operation_get_request_payload(operation); if (gb_operation_get_request_payload_size(operation) < sizeof(*request)) { gb_error("dropping short message\n"); return GB_OP_INVALID; } retval = gb_listen(le16_to_cpu(request->cport_id)); if (retval) { gb_error("Can not connect cport %d: error %d\n", le16_to_cpu(request->cport_id), retval); return GB_OP_INVALID; } retval = gb_notify(le16_to_cpu(request->cport_id), GB_EVT_CONNECTED); if (retval) goto error_notify; return GB_OP_SUCCESS; error_notify: gb_stop_listening(le16_to_cpu(request->cport_id)); return gb_errno_to_op_result(retval); }
void gb_control_register(int cport, int bundle) { gb_register_driver(cport, bundle, &control_driver); unipro_attr_local_write(T_CPORTFLAGS, CPORT_FLAGS_CSV_N | CPORT_FLAGS_CSD_N | CPORT_FLAGS_E2EFC, cport); unipro_enable_fct_tx_flow(cport); gb_listen(cport); }
static uint8_t gb_control_connected(struct gb_operation *operation) { int retval; struct gb_control_connected_request *request = gb_operation_get_request_payload(operation); if (gb_operation_get_request_payload_size(operation) < sizeof(*request)) { gb_error("dropping short message\n"); return GB_OP_INVALID; } retval = gb_listen(le16_to_cpu(request->cport_id)); if (retval) { gb_error("Can not connect cport %d: error %d\n", le16_to_cpu(request->cport_id), retval); return GB_OP_INVALID; } return GB_OP_SUCCESS; }
void gb_control_register(int cport) { gb_register_driver(cport, &control_driver); gb_listen(cport); }