diff options
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/usb/cdc_ncm.h | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/include/linux/usb/cdc_ncm.h b/include/linux/usb/cdc_ncm.h index 55b6feead93b..8c5e38819828 100644 --- a/include/linux/usb/cdc_ncm.h +++ b/include/linux/usb/cdc_ncm.h | |||
| @@ -52,6 +52,10 @@ | |||
| 52 | #define CDC_NCM_NTB_MAX_SIZE_TX 32768 /* bytes */ | 52 | #define CDC_NCM_NTB_MAX_SIZE_TX 32768 /* bytes */ |
| 53 | #define CDC_NCM_NTB_MAX_SIZE_RX 32768 /* bytes */ | 53 | #define CDC_NCM_NTB_MAX_SIZE_RX 32768 /* bytes */ |
| 54 | 54 | ||
| 55 | /* Initial NTB length */ | ||
| 56 | #define CDC_NCM_NTB_DEF_SIZE_TX 16384 /* bytes */ | ||
| 57 | #define CDC_NCM_NTB_DEF_SIZE_RX 16384 /* bytes */ | ||
| 58 | |||
| 55 | /* Minimum value for MaxDatagramSize, ch. 6.2.9 */ | 59 | /* Minimum value for MaxDatagramSize, ch. 6.2.9 */ |
| 56 | #define CDC_NCM_MIN_DATAGRAM_SIZE 1514 /* bytes */ | 60 | #define CDC_NCM_MIN_DATAGRAM_SIZE 1514 /* bytes */ |
| 57 | 61 | ||
| @@ -72,16 +76,9 @@ | |||
| 72 | /* Restart the timer, if amount of datagrams is less than given value */ | 76 | /* Restart the timer, if amount of datagrams is less than given value */ |
| 73 | #define CDC_NCM_RESTART_TIMER_DATAGRAM_CNT 3 | 77 | #define CDC_NCM_RESTART_TIMER_DATAGRAM_CNT 3 |
| 74 | #define CDC_NCM_TIMER_PENDING_CNT 2 | 78 | #define CDC_NCM_TIMER_PENDING_CNT 2 |
| 75 | #define CDC_NCM_TIMER_INTERVAL (400UL * NSEC_PER_USEC) | 79 | #define CDC_NCM_TIMER_INTERVAL_USEC 400UL |
| 76 | 80 | #define CDC_NCM_TIMER_INTERVAL_MIN 5UL | |
| 77 | /* The following macro defines the minimum header space */ | 81 | #define CDC_NCM_TIMER_INTERVAL_MAX (15UL * USEC_PER_SEC) |
| 78 | #define CDC_NCM_MIN_HDR_SIZE \ | ||
| 79 | (sizeof(struct usb_cdc_ncm_nth16) + sizeof(struct usb_cdc_ncm_ndp16) + \ | ||
| 80 | (CDC_NCM_DPT_DATAGRAMS_MAX + 1) * sizeof(struct usb_cdc_ncm_dpe16)) | ||
| 81 | |||
| 82 | #define CDC_NCM_NDP_SIZE \ | ||
| 83 | (sizeof(struct usb_cdc_ncm_ndp16) + \ | ||
| 84 | (CDC_NCM_DPT_DATAGRAMS_MAX + 1) * sizeof(struct usb_cdc_ncm_dpe16)) | ||
| 85 | 82 | ||
| 86 | #define cdc_ncm_comm_intf_is_mbim(x) ((x)->desc.bInterfaceSubClass == USB_CDC_SUBCLASS_MBIM && \ | 83 | #define cdc_ncm_comm_intf_is_mbim(x) ((x)->desc.bInterfaceSubClass == USB_CDC_SUBCLASS_MBIM && \ |
| 87 | (x)->desc.bInterfaceProtocol == USB_CDC_PROTO_NONE) | 84 | (x)->desc.bInterfaceProtocol == USB_CDC_PROTO_NONE) |
| @@ -107,6 +104,9 @@ struct cdc_ncm_ctx { | |||
| 107 | spinlock_t mtx; | 104 | spinlock_t mtx; |
| 108 | atomic_t stop; | 105 | atomic_t stop; |
| 109 | 106 | ||
| 107 | u64 timer_interval; | ||
| 108 | u32 max_ndp_size; | ||
| 109 | |||
| 110 | u32 tx_timer_pending; | 110 | u32 tx_timer_pending; |
| 111 | u32 tx_curr_frame_num; | 111 | u32 tx_curr_frame_num; |
| 112 | u32 rx_max; | 112 | u32 rx_max; |
| @@ -118,7 +118,18 @@ struct cdc_ncm_ctx { | |||
| 118 | u16 tx_ndp_modulus; | 118 | u16 tx_ndp_modulus; |
| 119 | u16 tx_seq; | 119 | u16 tx_seq; |
| 120 | u16 rx_seq; | 120 | u16 rx_seq; |
| 121 | u16 connected; | 121 | u16 min_tx_pkt; |
| 122 | |||
| 123 | /* statistics */ | ||
| 124 | u32 tx_curr_frame_payload; | ||
| 125 | u32 tx_reason_ntb_full; | ||
| 126 | u32 tx_reason_ndp_full; | ||
| 127 | u32 tx_reason_timeout; | ||
| 128 | u32 tx_reason_max_datagram; | ||
| 129 | u64 tx_overhead; | ||
| 130 | u64 tx_ntbs; | ||
| 131 | u64 rx_overhead; | ||
| 132 | u64 rx_ntbs; | ||
| 122 | }; | 133 | }; |
| 123 | 134 | ||
| 124 | u8 cdc_ncm_select_altsetting(struct usb_interface *intf); | 135 | u8 cdc_ncm_select_altsetting(struct usb_interface *intf); |
