diff options
author | Michael Brown <mcb30@etherboot.org> | 2009-08-12 00:40:26 +0100 |
---|---|---|
committer | Michael Brown <mcb30@etherboot.org> | 2009-08-12 00:54:29 +0100 |
commit | a7290a970c0d4e28600c29c12d8fa486c5a82b97 (patch) | |
tree | 5ebe248492a8f52802cb90b3d74727bf232a74c4 | |
parent | 2310c30d1c87fbb3f854f7521b91392c3cad17d3 (diff) | |
download | ipxe-a7290a970c0d4e28600c29c12d8fa486c5a82b97.tar.gz |
[802.11] Support multicast hashing
802.11 multicast hashing is the same as standard Ethernet hashing, so
just expose and use eth_mc_hash().
Signed-off-by: Joshua Oreman <oremanj@rwcr.net>
-rw-r--r-- | src/include/gpxe/ethernet.h | 2 | ||||
-rw-r--r-- | src/net/80211/net80211.c | 21 | ||||
-rw-r--r-- | src/net/ethernet.c | 3 |
3 files changed, 4 insertions, 22 deletions
diff --git a/src/include/gpxe/ethernet.h b/src/include/gpxe/ethernet.h index bb82e0a4e..8cf6b1be7 100644 --- a/src/include/gpxe/ethernet.h +++ b/src/include/gpxe/ethernet.h @@ -13,6 +13,8 @@ FILE_LICENCE ( GPL2_OR_LATER ); extern void eth_init_addr ( const void *hw_addr, void *ll_addr ); extern const char * eth_ntoa ( const void *ll_addr ); +extern int eth_mc_hash ( unsigned int af, const void *net_addr, + void *ll_addr ); extern struct net_device * alloc_etherdev ( size_t priv_size ); #endif /* _GPXE_ETHERNET_H */ diff --git a/src/net/80211/net80211.c b/src/net/80211/net80211.c index 91609d904..1fc983a01 100644 --- a/src/net/80211/net80211.c +++ b/src/net/80211/net80211.c @@ -160,8 +160,6 @@ static int net80211_ll_push ( struct net_device *netdev, static int net80211_ll_pull ( struct net_device *netdev, struct io_buffer *iobuf, const void **ll_dest, const void **ll_source, uint16_t * net_proto ); -static int net80211_ll_mc_hash ( unsigned int af, const void *net_addr, - void *ll_addr ); /** @} */ /** @@ -580,23 +578,6 @@ static int net80211_ll_pull ( struct net_device *netdev __unused, return 0; } -/** - * Hash 802.11 multicast address - * - * @v af Address family - * @v net_addr Network-layer address - * @ret ll_addr Filled link-layer address - * @ret rc Return status code - * - * Currently unimplemented. - */ -static int net80211_ll_mc_hash ( unsigned int af __unused, - const void *net_addr __unused, - void *ll_addr __unused ) -{ - return -ENOTSUP; -} - /** 802.11 link-layer protocol */ static struct ll_protocol net80211_ll_protocol __ll_protocol = { .name = "802.11", @@ -604,7 +585,7 @@ static struct ll_protocol net80211_ll_protocol __ll_protocol = { .pull = net80211_ll_pull, .init_addr = eth_init_addr, .ntoa = eth_ntoa, - .mc_hash = net80211_ll_mc_hash, + .mc_hash = eth_mc_hash, .ll_proto = htons ( ARPHRD_ETHER ), /* "encapsulated Ethernet" */ .hw_addr_len = ETH_ALEN, .ll_addr_len = ETH_ALEN, diff --git a/src/net/ethernet.c b/src/net/ethernet.c index dfeba7cd7..e8daf9f90 100644 --- a/src/net/ethernet.c +++ b/src/net/ethernet.c @@ -130,8 +130,7 @@ const char * eth_ntoa ( const void *ll_addr ) { * @v ll_addr Link-layer address to fill in * @ret rc Return status code */ -static int eth_mc_hash ( unsigned int af, const void *net_addr, - void *ll_addr ) { +int eth_mc_hash ( unsigned int af, const void *net_addr, void *ll_addr ) { const uint8_t *net_addr_bytes = net_addr; uint8_t *ll_addr_bytes = ll_addr; |