exthdrs_offload.c 711 B

12345678910111213141516171819202122232425262728293031323334353637
  1. // SPDX-License-Identifier: GPL-2.0-or-later
  2. /*
  3. * IPV6 GSO/GRO offload support
  4. * Linux INET6 implementation
  5. *
  6. * IPV6 Extension Header GSO/GRO support
  7. */
  8. #include <net/protocol.h>
  9. #include "ip6_offload.h"
  10. static const struct net_offload rthdr_offload = {
  11. .flags = INET6_PROTO_GSO_EXTHDR,
  12. };
  13. static const struct net_offload dstopt_offload = {
  14. .flags = INET6_PROTO_GSO_EXTHDR,
  15. };
  16. int __init ipv6_exthdrs_offload_init(void)
  17. {
  18. int ret;
  19. ret = inet6_add_offload(&rthdr_offload, IPPROTO_ROUTING);
  20. if (ret)
  21. goto out;
  22. ret = inet6_add_offload(&dstopt_offload, IPPROTO_DSTOPTS);
  23. if (ret)
  24. goto out_rt;
  25. out:
  26. return ret;
  27. out_rt:
  28. inet6_del_offload(&rthdr_offload, IPPROTO_ROUTING);
  29. goto out;
  30. }