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 */
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 );
/** @} */
/**
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",
.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,
* @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;