rmnet_map.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /* Copyright (c) 2013-2018, 2021, The Linux Foundation. All rights reserved.
  3. */
  4. #ifndef _RMNET_MAP_H_
  5. #define _RMNET_MAP_H_
  6. #include <linux/if_rmnet.h>
  7. struct rmnet_map_control_command {
  8. u8 command_name;
  9. u8 cmd_type:2;
  10. u8 reserved:6;
  11. u16 reserved2;
  12. u32 transaction_id;
  13. union {
  14. struct {
  15. u16 ip_family:2;
  16. u16 reserved:14;
  17. __be16 flow_control_seq_num;
  18. __be32 qos_id;
  19. } flow_control;
  20. DECLARE_FLEX_ARRAY(u8, data);
  21. };
  22. } __aligned(1);
  23. enum rmnet_map_commands {
  24. RMNET_MAP_COMMAND_NONE,
  25. RMNET_MAP_COMMAND_FLOW_DISABLE,
  26. RMNET_MAP_COMMAND_FLOW_ENABLE,
  27. /* These should always be the last 2 elements */
  28. RMNET_MAP_COMMAND_UNKNOWN,
  29. RMNET_MAP_COMMAND_ENUM_LENGTH
  30. };
  31. #define RMNET_MAP_COMMAND_REQUEST 0
  32. #define RMNET_MAP_COMMAND_ACK 1
  33. #define RMNET_MAP_COMMAND_UNSUPPORTED 2
  34. #define RMNET_MAP_COMMAND_INVALID 3
  35. #define RMNET_MAP_NO_PAD_BYTES 0
  36. #define RMNET_MAP_ADD_PAD_BYTES 1
  37. struct sk_buff *rmnet_map_deaggregate(struct sk_buff *skb,
  38. struct rmnet_port *port);
  39. struct rmnet_map_header *rmnet_map_add_map_header(struct sk_buff *skb,
  40. int hdrlen,
  41. struct rmnet_port *port,
  42. int pad);
  43. void rmnet_map_command(struct sk_buff *skb, struct rmnet_port *port);
  44. int rmnet_map_checksum_downlink_packet(struct sk_buff *skb, u16 len);
  45. void rmnet_map_checksum_uplink_packet(struct sk_buff *skb,
  46. struct rmnet_port *port,
  47. struct net_device *orig_dev,
  48. int csum_type);
  49. int rmnet_map_process_next_hdr_packet(struct sk_buff *skb, u16 len);
  50. unsigned int rmnet_map_tx_aggregate(struct sk_buff *skb, struct rmnet_port *port,
  51. struct net_device *orig_dev);
  52. void rmnet_map_tx_aggregate_init(struct rmnet_port *port);
  53. void rmnet_map_tx_aggregate_exit(struct rmnet_port *port);
  54. void rmnet_map_update_ul_agg_config(struct rmnet_port *port, u32 size,
  55. u32 count, u32 time);
  56. #endif /* _RMNET_MAP_H_ */