|
iPXE
|
Functions | |
| static int | net80211_ll_push (struct net_device *netdev, struct io_buffer *iobuf, const void *ll_dest, const void *ll_source, uint16_t net_proto) |
| Add 802.11 link-layer header. | |
| 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, unsigned int *flags) |
|
static |
Add 802.11 link-layer header.
| netdev | Wrapping network device |
| iobuf | I/O buffer |
| ll_dest | Link-layer destination address |
| ll_source | Link-layer source address |
| net_proto | Network-layer protocol, in network byte order |
| rc | Return status code |
This adds both the 802.11 frame header and the 802.2 LLC/SNAP header used on data packets.
We also check here for state of the link that would make it invalid to send a data packet; every data packet must pass through here, and no non-data packet (e.g. management frame) should.
Definition at line 484 of file net80211.c.
References net80211_device::assoc_rc, net80211_device::bssid, ieee80211_llc_snap_header::ctrl, ieee80211_llc_snap_header::dsap, ENETUNREACH, ETH_ALEN, ieee80211_llc_snap_header::ethertype, hdr, IEEE80211_FC_TODS, IEEE80211_LLC_CTRL, IEEE80211_LLC_DSAP, IEEE80211_LLC_HEADER_LEN, IEEE80211_LLC_SSAP, IEEE80211_MAKESEQ, IEEE80211_STYPE_DATA, IEEE80211_THIS_VERSION, IEEE80211_TYP_FRAME_HEADER_LEN, IEEE80211_TYPE_DATA, iob_push, net80211_device::last_tx_seqnr, memcpy(), memset(), NET80211_ASSOCIATED, net80211_duration(), netdev, ieee80211_llc_snap_header::oui, net80211_device::rate, net80211_device::rates, ieee80211_llc_snap_header::ssap, and net80211_device::state.