stmmac解读

static inline void stmmac_rx_refill(struct stmmac_priv *priv)
{
unsigned int rxsize = priv->dma_rx_size;
int bfsize = priv->dma_buf_sz;
struct dma_desc *p = priv->dma_rx;


for (; priv->cur_rx - priv->dirty_rx > 0; priv->dirty_rx++) {
unsigned int entry = priv->dirty_rx % rxsize;
if (likely(priv->rx_skbuff[entry] == NULL)) {
struct sk_buff *skb;


skb = __skb_dequeue(&priv->rx_recycle);//从队列中取一个空的skb
if (skb == NULL)//如果没有空的,则申请
skb = netdev_alloc_skb_ip_align(priv->dev,
bfsize);


if (unlikely(skb == NULL))//申请失败
break;


priv->rx_skbuff[entry] = skb;
priv->rx_skbuff_dma[entry] =
   dma_map_single(priv->device, skb->data, bfsize,
  DMA_FROM_DEVICE);


(p + entry)->des2 = priv->rx_skbuff_dma[entry];//????


if (unlikely(priv->plat->has_gmac))
priv->hw->ring->refill_desc3(bfsize, p + entry); //???


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值