[BACK]Return to if_xennet_xenbus.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / arch / xen / xen

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/arch/xen/xen/if_xennet_xenbus.c between version 1.69 and 1.69.2.1

version 1.69, 2016/12/15 09:28:04 version 1.69.2.1, 2017/04/21 16:53:39
Line 1074  again:
Line 1074  again:
                 MCLAIM(m, &sc->sc_ethercom.ec_rx_mowner);                  MCLAIM(m, &sc->sc_ethercom.ec_rx_mowner);
   
                 m_set_rcvif(m, ifp);                  m_set_rcvif(m, ifp);
                 req->rxreq_va = (vaddr_t)pool_cache_get_paddr(                  if (rx->status <= MHLEN) {
                     if_xennetrxbuf_cache, PR_NOWAIT, &req->rxreq_pa);                          /* small packet; copy to mbuf data area */
                 if (__predict_false(req->rxreq_va == 0)) {                          m_copyback(m, 0, rx->status, pktp);
                         printf("%s: rx no buf\n", ifp->if_xname);                          KASSERT(m->m_pkthdr.len == rx->status);
                         ifp->if_ierrors++;                          KASSERT(m->m_len == rx->status);
                         req->rxreq_va = va;                  } else {
                         req->rxreq_pa = pa;                          /* large packet; attach buffer to mbuf */
                         xennet_rx_free_req(req);                          req->rxreq_va = (vaddr_t)pool_cache_get_paddr(
                         m_freem(m);                              if_xennetrxbuf_cache, PR_NOWAIT, &req->rxreq_pa);
                         continue;                          if (__predict_false(req->rxreq_va == 0)) {
                                   printf("%s: rx no buf\n", ifp->if_xname);
                                   ifp->if_ierrors++;
                                   req->rxreq_va = va;
                                   req->rxreq_pa = pa;
                                   xennet_rx_free_req(req);
                                   m_freem(m);
                                   continue;
                           }
                           m->m_len = m->m_pkthdr.len = rx->status;
                           MEXTADD(m, pktp, rx->status,
                               M_DEVBUF, xennet_rx_mbuf_free, NULL);
                           m->m_ext.ext_paddr = pa;
                           m->m_flags |= M_EXT_RW; /* we own the buffer */
                 }                  }
                 m->m_len = m->m_pkthdr.len = rx->status;  
                 MEXTADD(m, pktp, rx->status,  
                     M_DEVBUF, xennet_rx_mbuf_free, NULL);  
                 m->m_flags |= M_EXT_RW; /* we own the buffer */  
                 m->m_ext.ext_paddr = pa;  
                 if ((rx->flags & NETRXF_csum_blank) != 0) {                  if ((rx->flags & NETRXF_csum_blank) != 0) {
                         xennet_checksum_fill(&m);                          xennet_checksum_fill(&m);
                         if (m == NULL) {                          if (m == NULL) {
                                 ifp->if_ierrors++;                                  ifp->if_ierrors++;
                                   xennet_rx_free_req(req);
                                 continue;                                  continue;
                         }                          }
                 }                  }

Legend:
Removed from v.1.69  
changed lines
  Added in v.1.69.2.1

CVSweb <webmaster@jp.NetBSD.org>