Steven Stallion wrote:
> Garrett D'Amore wrote:
>   
>> Steven Stallion wrote:
>>     
>>> All,
>>>
>>> What is the expected contents of an mblk_t which is passed to mac_rx ? I
>>> would have assumed it would be the destination address, source address,
>>> and payload - however snoop does not seem to be showing these packets.
>>>
>>> For example:
>>>
>>> mblk_t *bp = allocb(len, 0);
>>>
>>> /* src contains a 6 byte dest addr,
>>>    a 6 byte source addr, and the payload */
>>> bcopy(src, bp->b_rptr, len);
>>>
>>> mac_rx(mac_handle, NULL, bp);
>>>
>>> ...
>>>
>>> snoop -d re0 shows no packets received (I have verified that promisc is
>>> working correctly; the packets are being accepted by the rx filters, and
>>> is being passed down to mac_rx).
>>>
>>> Any ideas?
>>>
>>>   
>>>       
>> The above code is missing an important step, which is to advance the
>> b_wptr by len bytes.
>>
>>    -- Garrett
>>     
>
> Hmm. I suppose I would have expected b_wptr to not be used for mblk_t's
> delivered to mac_ether; is this step just to avoid corruption by wayward
> users of the mblk?
>   

No, b_wptr determines the end of the data.  If it isn't advanced, then 
mac_rx() will think that the mblk has no data in it.

    -- Garrett


_______________________________________________
networking-discuss mailing list
[email protected]

Reply via email to