diff options
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/etherdevice.h | 14 | ||||
| -rw-r--r-- | include/linux/netdevice.h | 6 |
2 files changed, 20 insertions, 0 deletions
diff --git a/include/linux/etherdevice.h b/include/linux/etherdevice.h index 3d7a6687d247..848480bc2bf9 100644 --- a/include/linux/etherdevice.h +++ b/include/linux/etherdevice.h | |||
| @@ -127,6 +127,20 @@ static inline void random_ether_addr(u8 *addr) | |||
| 127 | } | 127 | } |
| 128 | 128 | ||
| 129 | /** | 129 | /** |
| 130 | * dev_hw_addr_random - Create random MAC and set device flag | ||
| 131 | * @dev: pointer to net_device structure | ||
| 132 | * @addr: Pointer to a six-byte array containing the Ethernet address | ||
| 133 | * | ||
| 134 | * Generate random MAC to be used by a device and set addr_assign_type | ||
| 135 | * so the state can be read by sysfs and be used by udev. | ||
| 136 | */ | ||
| 137 | static inline void dev_hw_addr_random(struct net_device *dev, u8 *hwaddr) | ||
| 138 | { | ||
| 139 | dev->addr_assign_type |= NET_ADDR_RANDOM; | ||
| 140 | random_ether_addr(hwaddr); | ||
| 141 | } | ||
| 142 | |||
| 143 | /** | ||
| 130 | * compare_ether_addr - Compare two Ethernet addresses | 144 | * compare_ether_addr - Compare two Ethernet addresses |
| 131 | * @addr1: Pointer to a six-byte array containing the Ethernet address | 145 | * @addr1: Pointer to a six-byte array containing the Ethernet address |
| 132 | * @addr2: Pointer other six-byte array containing the Ethernet address | 146 | * @addr2: Pointer other six-byte array containing the Ethernet address |
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index b6262898ece0..1bca6171b1aa 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
| @@ -66,6 +66,11 @@ struct wireless_dev; | |||
| 66 | #define HAVE_FREE_NETDEV /* free_netdev() */ | 66 | #define HAVE_FREE_NETDEV /* free_netdev() */ |
| 67 | #define HAVE_NETDEV_PRIV /* netdev_priv() */ | 67 | #define HAVE_NETDEV_PRIV /* netdev_priv() */ |
| 68 | 68 | ||
| 69 | /* hardware address assignment types */ | ||
| 70 | #define NET_ADDR_PERM 0 /* address is permanent (default) */ | ||
| 71 | #define NET_ADDR_RANDOM 1 /* address is generated randomly */ | ||
| 72 | #define NET_ADDR_STOLEN 2 /* address is stolen from other device */ | ||
| 73 | |||
| 69 | /* Backlog congestion levels */ | 74 | /* Backlog congestion levels */ |
| 70 | #define NET_RX_SUCCESS 0 /* keep 'em coming, baby */ | 75 | #define NET_RX_SUCCESS 0 /* keep 'em coming, baby */ |
| 71 | #define NET_RX_DROP 1 /* packet dropped */ | 76 | #define NET_RX_DROP 1 /* packet dropped */ |
| @@ -919,6 +924,7 @@ struct net_device { | |||
| 919 | 924 | ||
| 920 | /* Interface address info. */ | 925 | /* Interface address info. */ |
| 921 | unsigned char perm_addr[MAX_ADDR_LEN]; /* permanent hw address */ | 926 | unsigned char perm_addr[MAX_ADDR_LEN]; /* permanent hw address */ |
| 927 | unsigned char addr_assign_type; /* hw address assignment type */ | ||
| 922 | unsigned char addr_len; /* hardware address length */ | 928 | unsigned char addr_len; /* hardware address length */ |
| 923 | unsigned short dev_id; /* for shared network cards */ | 929 | unsigned short dev_id; /* for shared network cards */ |
| 924 | 930 | ||
