cfg80211/mac80211: make ieee80211_send_layer2_update a public function
Make ieee80211_send_layer2_update() a common function so other drivers can re-use it. Signed-off-by: Dedy Lansky <dlansky@codeaurora.org> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:

committed by
Johannes Berg

parent
f404c3ecc4
commit
30ca1aa536
@@ -1893,3 +1893,48 @@ EXPORT_SYMBOL(rfc1042_header);
|
||||
const unsigned char bridge_tunnel_header[] __aligned(2) =
|
||||
{ 0xaa, 0xaa, 0x03, 0x00, 0x00, 0xf8 };
|
||||
EXPORT_SYMBOL(bridge_tunnel_header);
|
||||
|
||||
/* Layer 2 Update frame (802.2 Type 1 LLC XID Update response) */
|
||||
struct iapp_layer2_update {
|
||||
u8 da[ETH_ALEN]; /* broadcast */
|
||||
u8 sa[ETH_ALEN]; /* STA addr */
|
||||
__be16 len; /* 6 */
|
||||
u8 dsap; /* 0 */
|
||||
u8 ssap; /* 0 */
|
||||
u8 control;
|
||||
u8 xid_info[3];
|
||||
} __packed;
|
||||
|
||||
void cfg80211_send_layer2_update(struct net_device *dev, const u8 *addr)
|
||||
{
|
||||
struct iapp_layer2_update *msg;
|
||||
struct sk_buff *skb;
|
||||
|
||||
/* Send Level 2 Update Frame to update forwarding tables in layer 2
|
||||
* bridge devices */
|
||||
|
||||
skb = dev_alloc_skb(sizeof(*msg));
|
||||
if (!skb)
|
||||
return;
|
||||
msg = skb_put(skb, sizeof(*msg));
|
||||
|
||||
/* 802.2 Type 1 Logical Link Control (LLC) Exchange Identifier (XID)
|
||||
* Update response frame; IEEE Std 802.2-1998, 5.4.1.2.1 */
|
||||
|
||||
eth_broadcast_addr(msg->da);
|
||||
ether_addr_copy(msg->sa, addr);
|
||||
msg->len = htons(6);
|
||||
msg->dsap = 0;
|
||||
msg->ssap = 0x01; /* NULL LSAP, CR Bit: Response */
|
||||
msg->control = 0xaf; /* XID response lsb.1111F101.
|
||||
* F=0 (no poll command; unsolicited frame) */
|
||||
msg->xid_info[0] = 0x81; /* XID format identifier */
|
||||
msg->xid_info[1] = 1; /* LLC types/classes: Type 1 LLC */
|
||||
msg->xid_info[2] = 0; /* XID sender's receive window size (RW) */
|
||||
|
||||
skb->dev = dev;
|
||||
skb->protocol = eth_type_trans(skb, dev);
|
||||
memset(skb->cb, 0, sizeof(skb->cb));
|
||||
netif_rx_ni(skb);
|
||||
}
|
||||
EXPORT_SYMBOL(cfg80211_send_layer2_update);
|
||||
|
Reference in New Issue
Block a user