diff options
| author | Harout Hedeshian <harouth@codeaurora.org> | 2013-10-04 12:22:33 -0600 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-22 11:04:59 -0700 |
| commit | 35a95f1d3f789e4aab36da8302e260581e58868f (patch) | |
| tree | a46a14242585ba2d6c074c97fe3677f1a245e358 /include/uapi/linux | |
| parent | 3a9fa2aa8025735dcbf413d02ac694fd636f21f5 (diff) | |
net: msm_rmnet.h: Fix IOCTL numbering for newly introduced IOCTLs
Fix IOCTLs with invalid numbers. Addresses limitation in network
IOCTL code which prevents more than 16 user defined IOCTLs. All new
IOCTLs have been multiplexed into a single user defined ioctl. Required
to support RmNet Data features.
CRs-Fixed: 554883
Change-Id: Ic33bdf068f7e4014272d3b47ed7b07f5d4a6be2c
Signed-off-by: Harout Hedeshian <harouth@codeaurora.org>
Diffstat (limited to 'include/uapi/linux')
| -rw-r--r-- | include/uapi/linux/msm_rmnet.h | 90 |
1 files changed, 56 insertions, 34 deletions
diff --git a/include/uapi/linux/msm_rmnet.h b/include/uapi/linux/msm_rmnet.h index c376993117a8..da0ae85d7211 100644 --- a/include/uapi/linux/msm_rmnet.h +++ b/include/uapi/linux/msm_rmnet.h @@ -27,30 +27,35 @@ enum rmnet_ioctl_cmds_e { RMNET_IOCTL_GET_OPMODE = 0x000089F7, /* Get operation mode */ RMNET_IOCTL_OPEN = 0x000089F8, /* Open transport port */ RMNET_IOCTL_CLOSE = 0x000089F9, /* Close transport port */ - RMNET_IOCTL_FLOW_ENABLE = 0x000089FA, /* Flow enable */ - RMNET_IOCTL_FLOW_DISABLE = 0x000089FB, /* Flow disable */ + RMNET_IOCTL_FLOW_ENABLE = 0x000089FA, /* Flow enable */ + RMNET_IOCTL_FLOW_DISABLE = 0x000089FB, /* Flow disable */ RMNET_IOCTL_FLOW_SET_HNDL = 0x000089FC, /* Set flow handle */ -/* RmNet Data Required IOCTLs */ - RMNET_IOCTL_GET_SUPPORTED_FEATURES = 0x00008A00, /* Get features */ - RMNET_IOCTL_SET_MRU = 0x00008A01, /* Set MRU */ - RMNET_IOCTL_GET_MRU = 0x00008A02, /* Get MRU */ - RMNET_IOCTL_GET_EPID = 0x00008A03, /* Get endpoint ID */ - RMNET_IOCTL_GET_DRIVER_NAME = 0x00008A04, /* Get driver name */ - RMNET_IOCTL_ADD_MUX_CHANNEL = 0x00008A05, /* Add MUX ID */ - RMNET_IOCTL_SET_EGRESS_DATA_FORMAT = 0x00008A06, /* Set EDF */ - RMNET_IOCTL_SET_INGRESS_DATA_FORMAT = 0x00008A07, /* Set IDF */ - RMNET_IOCTL_SET_AGGREGATION_COUNT = 0x00008A08, /* Set agg count */ - RMNET_IOCTL_GET_AGGREGATION_COUNT = 0x00008A09, /* Get agg count */ - RMNET_IOCTL_SET_AGGREGATION_SIZE = 0x00008A0A, /* Set agg size */ - RMNET_IOCTL_GET_AGGREGATION_SIZE = 0x00008A0B, /* Get agg size */ - RMNET_IOCTL_FLOW_CONTROL = 0x00008A0C, /* Do flow control */ - RMNET_IOCTL_GET_DFLT_CONTROL_CHANNEL = 0x00008A0D, /* For legacy use */ - RMNET_IOCTL_GET_HWSW_MAP = 0x00008A0E, /* Get HW/SW map */ - RMNET_IOCTL_SET_RX_HEADROOM = 0x00008A0F, /* RX Headroom */ - RMNET_IOCTL_GET_EP_PAIR = 0x00008A10, /* Endpoint pair */ + RMNET_IOCTL_EXTENDED = 0x000089FD, /* Extended IOCTLs */ RMNET_IOCTL_MAX }; +enum rmnet_ioctl_extended_cmds_e { +/* RmNet Data Required IOCTLs */ + RMNET_IOCTL_GET_SUPPORTED_FEATURES = 0x0000, /* Get features */ + RMNET_IOCTL_SET_MRU = 0x0001, /* Set MRU */ + RMNET_IOCTL_GET_MRU = 0x0002, /* Get MRU */ + RMNET_IOCTL_GET_EPID = 0x0003, /* Get endpoint ID */ + RMNET_IOCTL_GET_DRIVER_NAME = 0x0004, /* Get driver name */ + RMNET_IOCTL_ADD_MUX_CHANNEL = 0x0005, /* Add MUX ID */ + RMNET_IOCTL_SET_EGRESS_DATA_FORMAT = 0x0006, /* Set EDF */ + RMNET_IOCTL_SET_INGRESS_DATA_FORMAT = 0x0007, /* Set IDF */ + RMNET_IOCTL_SET_AGGREGATION_COUNT = 0x0008, /* Set agg count */ + RMNET_IOCTL_GET_AGGREGATION_COUNT = 0x0009, /* Get agg count */ + RMNET_IOCTL_SET_AGGREGATION_SIZE = 0x000A, /* Set agg size */ + RMNET_IOCTL_GET_AGGREGATION_SIZE = 0x000B, /* Get agg size */ + RMNET_IOCTL_FLOW_CONTROL = 0x000C, /* Do flow control */ + RMNET_IOCTL_GET_DFLT_CONTROL_CHANNEL = 0x000D, /* For legacy use */ + RMNET_IOCTL_GET_HWSW_MAP = 0x000E, /* Get HW/SW map */ + RMNET_IOCTL_SET_RX_HEADROOM = 0x000F, /* RX Headroom */ + RMNET_IOCTL_GET_EP_PAIR = 0x0010, /* Endpoint pair */ + RMNET_IOCTL_EXTENDED_MAX = 0x0011 +}; + /* Return values for the RMNET_IOCTL_GET_SUPPORTED_FEATURES IOCTL */ #define RMNET_IOCTL_FEAT_NOTIFY_MUX_CHANNEL (1<<0) #define RMNET_IOCTL_FEAT_SET_EGRESS_DATA_FORMAT (1<<1) @@ -75,22 +80,39 @@ enum rmnet_ioctl_cmds_e { #define RMNET_IOCTL_INGRESS_FORMAT_DEMUXING (1<<3) #define RMNET_IOCTL_INGRESS_FORMAT_CHECKSUM (1<<4) -/* Input values for the RMNET_IOCTL_ADD_MUX_CHANNEL IOCTL */ -struct rmnet_mux_val_s { - uint32_t mux_id; - const char *vchannel_name; -}; +/* User space may not have this defined. */ +#ifndef IFNAMSIZ +#define IFNAMSIZ 16 +#endif -/* Input values for the RMNET_IOCTL_FLOW_CONTROL IOCTL */ -struct flow_control_prop_s { - uint8_t flow_mode; - uint8_t mux_id; -}; +struct rmnet_ioctl_extended_s { + uint32_t extended_ioctl; + union { + uint32_t data; /* Generic data field for most extended IOCTLs */ + + /* Return values for + * RMNET_IOCTL_GET_DRIVER_NAME + * RMNET_IOCTL_GET_DFLT_CONTROL_CHANNEL */ + int8_t if_name[IFNAMSIZ]; + + /* Input values for the RMNET_IOCTL_ADD_MUX_CHANNEL IOCTL */ + struct { + uint32_t mux_id; + int8_t vchannel_name[IFNAMSIZ]; + } rmnet_mux_val; + + /* Input values for the RMNET_IOCTL_FLOW_CONTROL IOCTL */ + struct { + uint8_t flow_mode; + uint8_t mux_id; + } flow_control_prop; -/* Return values for RMNET_IOCTL_GET_EP_PAIR */ -struct ipa_ep_pair_s { - uint32_t consumer_pipe_num; - uint32_t producer_pipe_num; + /* Return values for RMNET_IOCTL_GET_EP_PAIR */ + struct { + uint32_t consumer_pipe_num; + uint32_t producer_pipe_num; + } ipa_ep_pair; + } u; }; /* QMI QoS header definition */ |
