/* WUSB has an extra bExplicit field - we assume always explicit negotiation so this field is set. The command expected by the device is thus larger than the one prepared by the driver so we need to reallocate memory to accommodate this. We trust the driver to send us the correct data so no checking is done on incoming data - evn though it is variable length.  */
static int hwarc_filter_cmd_set_drp_ie_WUSB_0100(struct uwb_rc *rc, struct uwb_rccb **header, size_t *size)
/* WUSB has an extra bExplicit field - we assume always explicit negotiation so this field is set. The command expected by the device is thus larger than the one prepared by the driver so we need to reallocate memory to accommodate this. We trust the driver to send us the correct data so no checking is done on incoming data - evn though it is variable length.  */
static int hwarc_filter_cmd_set_drp_ie_WUSB_0100(struct uwb_rc *rc, struct uwb_rccb **header, size_t *size)
{
	struct uwb_rc_cmd_set_drp_ie *orgcmd;
	struct uwb_rc_cmd_set_drp_ie_WUSB_0100 *cmd;
	size_t ielength;
	orgcmd = container_of(*header, struct uwb_rc_cmd_set_drp_ie, rccb);
	ielength = le16_to_cpu(orgcmd->wIELength);
	cmd = kzalloc(sizeof(*cmd) + ielength, GFP_KERNEL);
	if (cmd == NULL)
		return -ENOMEM;
	cmd->rccb = orgcmd->rccb;
	cmd->bExplicit = 0;
	cmd->wIELength = orgcmd->wIELength;
	memcpy(cmd->IEData, orgcmd->IEData, ielength);
	*header = &cmd->rccb;
	*size = sizeof(*cmd) + ielength;
	return 1;
}