11 | | There is a considerable amount of shared code among different upper-level MAC implementations. The MAC High Framework is the collection of these shared operations. |
| 11 | There is a considerable amount of shared code among different upper-level MAC implementations. The MAC High Framework is the collection of these shared operations. The interaction between an upper-level MAC and this framework can be broken down into 4 broad categories: |
| 12 | |
| 13 | == Wireless Receptions == |
| 14 | |
| 15 | The MAC High Framework notifies the upper-level MAC of a wireless reception via a callback that is registered at boot. Within the framework, wireless receptions are handled via an interrupt attached to the inter-processor mailbox that connects the high and low processors. |
| 16 | |
| 17 | == Wireless Transmissions == |
| 18 | |
| 19 | When the upper-level MAC wants to transmit a packet wirelessly, there are a few steps: |
| 20 | |
| 21 | 1. The upper-level MAC enqueues a packet into any of a number of outgoing wireless transmission queues. It performs this step by calling a function in the MAC High Framework. |
| 22 | 2. Because the process by which a transmit queue is emptied depends on the upper-level MAC, the upper-level MAC owns the code responsible for this. As such, the upper-level MAC calls its own function for processing any currently-filled transmit queues. In addition, the framework itself is capable of calling this function via a registered callback. It will call this function whenever the lower-level MAC has finished sending an MPDU. |
| 23 | 3. Finally, the upper-level MAC is notified whenever the lower-level MAC has finished sending an MPDU via a registered callback. |
| 24 | |
| 25 | == Wired Receptions == |
| 26 | |
| 27 | Whenever the framework received a wired Ethernet frame, it [wiki:./MACHighFramework/EthEncap encapsulates] |
| 28 | |
| 29 | == Wired Transmissions == |
| 30 | |