-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
CDC: common parser for extra headers
CDC drivers all implement their own parser for the extra headers. This patch fixes the code duplication introducing a single common parser in usbnet. Signed-off-by: Oliver Neukum <oneukum@suse.com> Signed-off-by: David S. Miller <davem@davemloft.net>
- Loading branch information
Oliver Neukum
authored and
David S. Miller
committed
Sep 15, 2015
1 parent
1d147cc
commit c40a2c8
Showing
2 changed files
with
185 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
/* | ||
* USB CDC common helpers | ||
* | ||
* Copyright (c) 2015 Oliver Neukum <oneukum@suse.com> | ||
* | ||
* This program is free software; you can redistribute it and/or | ||
* modify it under the terms of the GNU General Public License | ||
* version 2 as published by the Free Software Foundation. | ||
*/ | ||
|
||
#include <uapi/linux/usb/cdc.h> | ||
|
||
/* | ||
* inofficial magic numbers | ||
*/ | ||
|
||
#define CDC_PHONET_MAGIC_NUMBER 0xAB | ||
|
||
/* | ||
* parsing CDC headers | ||
*/ | ||
|
||
struct usb_cdc_parsed_header { | ||
struct usb_cdc_union_desc *usb_cdc_union_desc; | ||
struct usb_cdc_header_desc *usb_cdc_header_desc; | ||
|
||
struct usb_cdc_call_mgmt_descriptor *usb_cdc_call_mgmt_descriptor; | ||
struct usb_cdc_acm_descriptor *usb_cdc_acm_descriptor; | ||
struct usb_cdc_country_functional_desc *usb_cdc_country_functional_desc; | ||
struct usb_cdc_network_terminal_desc *usb_cdc_network_terminal_desc; | ||
struct usb_cdc_ether_desc *usb_cdc_ether_desc; | ||
struct usb_cdc_dmm_desc *usb_cdc_dmm_desc; | ||
struct usb_cdc_mdlm_desc *usb_cdc_mdlm_desc; | ||
struct usb_cdc_mdlm_detail_desc *usb_cdc_mdlm_detail_desc; | ||
struct usb_cdc_obex_desc *usb_cdc_obex_desc; | ||
struct usb_cdc_ncm_desc *usb_cdc_ncm_desc; | ||
struct usb_cdc_mbim_desc *usb_cdc_mbim_desc; | ||
struct usb_cdc_mbim_extended_desc *usb_cdc_mbim_extended_desc; | ||
|
||
bool phonet_magic_present; | ||
}; | ||
|
||
|
||
int cdc_parse_cdc_header(struct usb_cdc_parsed_header *hdr, | ||
struct usb_interface *intf, | ||
u8 *buffer, | ||
int buflen); |