mirror of https://github.com/ipxe/ipxe.git
[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>pull/1/head
parent
2310c30d1c
commit
a7290a970c
|
@ -13,6 +13,8 @@ FILE_LICENCE ( GPL2_OR_LATER );
|
||||||
|
|
||||||
extern void eth_init_addr ( const void *hw_addr, void *ll_addr );
|
extern void eth_init_addr ( const void *hw_addr, void *ll_addr );
|
||||||
extern const char * eth_ntoa ( const 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 );
|
extern struct net_device * alloc_etherdev ( size_t priv_size );
|
||||||
|
|
||||||
#endif /* _GPXE_ETHERNET_H */
|
#endif /* _GPXE_ETHERNET_H */
|
||||||
|
|
|
@ -160,8 +160,6 @@ static int net80211_ll_push ( struct net_device *netdev,
|
||||||
static int net80211_ll_pull ( struct net_device *netdev,
|
static int net80211_ll_pull ( struct net_device *netdev,
|
||||||
struct io_buffer *iobuf, const void **ll_dest,
|
struct io_buffer *iobuf, const void **ll_dest,
|
||||||
const void **ll_source, uint16_t * net_proto );
|
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;
|
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 */
|
/** 802.11 link-layer protocol */
|
||||||
static struct ll_protocol net80211_ll_protocol __ll_protocol = {
|
static struct ll_protocol net80211_ll_protocol __ll_protocol = {
|
||||||
.name = "802.11",
|
.name = "802.11",
|
||||||
|
@ -604,7 +585,7 @@ static struct ll_protocol net80211_ll_protocol __ll_protocol = {
|
||||||
.pull = net80211_ll_pull,
|
.pull = net80211_ll_pull,
|
||||||
.init_addr = eth_init_addr,
|
.init_addr = eth_init_addr,
|
||||||
.ntoa = eth_ntoa,
|
.ntoa = eth_ntoa,
|
||||||
.mc_hash = net80211_ll_mc_hash,
|
.mc_hash = eth_mc_hash,
|
||||||
.ll_proto = htons ( ARPHRD_ETHER ), /* "encapsulated Ethernet" */
|
.ll_proto = htons ( ARPHRD_ETHER ), /* "encapsulated Ethernet" */
|
||||||
.hw_addr_len = ETH_ALEN,
|
.hw_addr_len = ETH_ALEN,
|
||||||
.ll_addr_len = ETH_ALEN,
|
.ll_addr_len = ETH_ALEN,
|
||||||
|
|
|
@ -130,8 +130,7 @@ const char * eth_ntoa ( const void *ll_addr ) {
|
||||||
* @v ll_addr Link-layer address to fill in
|
* @v ll_addr Link-layer address to fill in
|
||||||
* @ret rc Return status code
|
* @ret rc Return status code
|
||||||
*/
|
*/
|
||||||
static int eth_mc_hash ( unsigned int af, const void *net_addr,
|
int eth_mc_hash ( unsigned int af, const void *net_addr, void *ll_addr ) {
|
||||||
void *ll_addr ) {
|
|
||||||
const uint8_t *net_addr_bytes = net_addr;
|
const uint8_t *net_addr_bytes = net_addr;
|
||||||
uint8_t *ll_addr_bytes = ll_addr;
|
uint8_t *ll_addr_bytes = ll_addr;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue