cvmx-packet.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /***********************license start***************
  2. * Author: Cavium Networks
  3. *
  4. * Contact: support@caviumnetworks.com
  5. * This file is part of the OCTEON SDK
  6. *
  7. * Copyright (c) 2003-2008 Cavium Networks
  8. *
  9. * This file is free software; you can redistribute it and/or modify
  10. * it under the terms of the GNU General Public License, Version 2, as
  11. * published by the Free Software Foundation.
  12. *
  13. * This file is distributed in the hope that it will be useful, but
  14. * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty
  15. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or
  16. * NONINFRINGEMENT. See the GNU General Public License for more
  17. * details.
  18. *
  19. * You should have received a copy of the GNU General Public License
  20. * along with this file; if not, write to the Free Software
  21. * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  22. * or visit http://www.gnu.org/licenses/.
  23. *
  24. * This file may also be available under a different license from Cavium.
  25. * Contact Cavium Networks for more information
  26. ***********************license end**************************************/
  27. /**
  28. *
  29. * Packet buffer defines.
  30. */
  31. #ifndef __CVMX_PACKET_H__
  32. #define __CVMX_PACKET_H__
  33. /**
  34. * This structure defines a buffer pointer on Octeon
  35. */
  36. union cvmx_buf_ptr {
  37. void *ptr;
  38. uint64_t u64;
  39. struct {
  40. /*
  41. * if set, invert the "free" pick of the overall
  42. * packet. HW always sets this bit to 0 on inbound
  43. * packet
  44. */
  45. uint64_t i:1;
  46. /*
  47. * Indicates the amount to back up to get to the
  48. * buffer start in cache lines. In most cases this is
  49. * less than one complete cache line, so the value is
  50. * zero.
  51. */
  52. uint64_t back:4;
  53. /* The pool that the buffer came from / goes to */
  54. uint64_t pool:3;
  55. /* The size of the segment pointed to by addr (in bytes) */
  56. uint64_t size:16;
  57. /* Pointer to the first byte of the data, NOT buffer */
  58. uint64_t addr:40;
  59. } s;
  60. };
  61. #endif /* __CVMX_PACKET_H__ */