Understand 802.11 PHY code in ns-2802.11 MAC code in NS-2 is an excellent guide on MAC code. Here I will extend it further to 802.11 PHY code in "ns2.33/mac/":
PHY::recv() - is the main handler of PHY interface. It can be called by Mac802_11::transmit() to send a packet via sendDown() with hdr->direction() DOWN. Or it can be scheduled by WirelessChannel::sendUP() to receive a packet via sendUP() with hdr->direction() UP.
WirelessPHY::sendDown() - called by Mac802_11::transmit() to put the packet into the PHY. It first check if the node is off the packet is discarded. If energy management is enabled "em()", transmission energy is deducted for this transmission action. Some parameters, e.g. antenna, transmit power, wavelength l, are stamped onto the node (for the calculation of reception in the receiving node). Then the packet is put onto channel_->recv(p, this).
Channel::recv() - simply calls Channel::sendUP(p, PhyHandler) to put the packet on the the channel.
WirelessChannel::sendUP() - it first change the hdr->direction() to UP. Then it goes through the list of all nodes sortLists() and pick a subset of nodes within communication range: getAffectedNodes(). Then it send a copy of the current packet (newp=p->copy()) to each affected node (rnode) by schedule a reception event to the receiving interface (rifp) of the affected node after a propagation delay (propdelay).
WirelessPHY::sendUP() - It first check if the node is off, sleep, or zero energy level. In these cases, the incoming packet is dropped. The receiving power Pr is calculated, via propagation_->Pr(), according to specified propagation model: such as free space, two-ray ground, and shadowing models (in ns-2.33/mobile/). If Pr is less than CSThresh_, the packet is undetected. If Pr is less than RXThresh_, the packet is received with error. There is a modulation_->BitError(Pr) facility trying to handle bit errors for various modulation mechanisms. However looking at the modulation.cc, it turns out to be a dummy: Pe=0 always! Next, if energy management is enabled "em()" receiving energy is deducted from the reception activity. I couldn't find how it send the packet up to MAC though...