net.h 671 B

12345678910111213141516171819202122232425262728
  1. /*
  2. * net.h - misc Blackfin network helpers
  3. *
  4. * Copyright (c) 2008-2009 Analog Devices Inc.
  5. *
  6. * Licensed under the GPL-2 or later.
  7. */
  8. #ifndef __ASM_BFIN_RAND_MAC__
  9. #define __ASM_BFIN_RAND_MAC__
  10. /* If the board does not have a real MAC assigned to it, then generate a
  11. * locally administrated pseudo-random one based on CYCLES and compile date.
  12. */
  13. static inline void bfin_gen_rand_mac(uchar *mac_addr)
  14. {
  15. /* make something up */
  16. const char s[] = __DATE__;
  17. size_t i;
  18. u32 cycles;
  19. for (i = 0; i < 6; ++i) {
  20. asm("%0 = CYCLES;" : "=r" (cycles));
  21. mac_addr[i] = cycles ^ s[i];
  22. }
  23. mac_addr[0] = (mac_addr[0] | 0x02) & ~0x01; /* make it local unicast */
  24. }
  25. #endif