|
@@ -1195,6 +1195,10 @@ enum wiphy_flags {
|
|
|
WIPHY_FLAG_4ADDR_STATION = BIT(6),
|
|
|
};
|
|
|
|
|
|
+struct mac_address {
|
|
|
+ u8 addr[ETH_ALEN];
|
|
|
+};
|
|
|
+
|
|
|
/**
|
|
|
* struct wiphy - wireless hardware description
|
|
|
* @idx: the wiphy index assigned to this item
|
|
@@ -1213,12 +1217,28 @@ enum wiphy_flags {
|
|
|
* -1 = fragmentation disabled, only odd values >= 256 used
|
|
|
* @rts_threshold: RTS threshold (dot11RTSThreshold); -1 = RTS/CTS disabled
|
|
|
* @net: the network namespace this wiphy currently lives in
|
|
|
+ * @perm_addr: permanent MAC address of this device
|
|
|
+ * @addr_mask: If the device supports multiple MAC addresses by masking,
|
|
|
+ * set this to a mask with variable bits set to 1, e.g. if the last
|
|
|
+ * four bits are variable then set it to 00:...:00:0f. The actual
|
|
|
+ * variable bits shall be determined by the interfaces added, with
|
|
|
+ * interfaces not matching the mask being rejected to be brought up.
|
|
|
+ * @n_addresses: number of addresses in @addresses.
|
|
|
+ * @addresses: If the device has more than one address, set this pointer
|
|
|
+ * to a list of addresses (6 bytes each). The first one will be used
|
|
|
+ * by default for perm_addr. In this case, the mask should be set to
|
|
|
+ * all-zeroes. In this case it is assumed that the device can handle
|
|
|
+ * the same number of arbitrary MAC addresses.
|
|
|
*/
|
|
|
struct wiphy {
|
|
|
/* assign these fields before you register the wiphy */
|
|
|
|
|
|
- /* permanent MAC address */
|
|
|
+ /* permanent MAC address(es) */
|
|
|
u8 perm_addr[ETH_ALEN];
|
|
|
+ u8 addr_mask[ETH_ALEN];
|
|
|
+
|
|
|
+ u16 n_addresses;
|
|
|
+ struct mac_address *addresses;
|
|
|
|
|
|
/* Supported interface modes, OR together BIT(NL80211_IFTYPE_...) */
|
|
|
u16 interface_modes;
|