1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /* Copyright (c) 2013-2018, The Linux Foundation. All rights reserved.
8 struct rmnet_map_control_command
{
18 __be16 flow_control_seq_num
;
25 enum rmnet_map_commands
{
26 RMNET_MAP_COMMAND_NONE
,
27 RMNET_MAP_COMMAND_FLOW_DISABLE
,
28 RMNET_MAP_COMMAND_FLOW_ENABLE
,
29 /* These should always be the last 2 elements */
30 RMNET_MAP_COMMAND_UNKNOWN
,
31 RMNET_MAP_COMMAND_ENUM_LENGTH
34 struct rmnet_map_header
{
42 struct rmnet_map_dl_csum_trailer
{
46 u16 csum_start_offset
;
51 struct rmnet_map_ul_csum_header
{
52 __be16 csum_start_offset
;
53 u16 csum_insert_offset
:14;
58 #define RMNET_MAP_GET_MUX_ID(Y) (((struct rmnet_map_header *) \
60 #define RMNET_MAP_GET_CD_BIT(Y) (((struct rmnet_map_header *) \
62 #define RMNET_MAP_GET_PAD(Y) (((struct rmnet_map_header *) \
64 #define RMNET_MAP_GET_CMD_START(Y) ((struct rmnet_map_control_command *) \
66 sizeof(struct rmnet_map_header)))
67 #define RMNET_MAP_GET_LENGTH(Y) (ntohs(((struct rmnet_map_header *) \
70 #define RMNET_MAP_COMMAND_REQUEST 0
71 #define RMNET_MAP_COMMAND_ACK 1
72 #define RMNET_MAP_COMMAND_UNSUPPORTED 2
73 #define RMNET_MAP_COMMAND_INVALID 3
75 #define RMNET_MAP_NO_PAD_BYTES 0
76 #define RMNET_MAP_ADD_PAD_BYTES 1
78 struct sk_buff
*rmnet_map_deaggregate(struct sk_buff
*skb
,
79 struct rmnet_port
*port
);
80 struct rmnet_map_header
*rmnet_map_add_map_header(struct sk_buff
*skb
,
82 void rmnet_map_command(struct sk_buff
*skb
, struct rmnet_port
*port
);
83 int rmnet_map_checksum_downlink_packet(struct sk_buff
*skb
, u16 len
);
84 void rmnet_map_checksum_uplink_packet(struct sk_buff
*skb
,
85 struct net_device
*orig_dev
);
87 #endif /* _RMNET_MAP_H_ */