Lines Matching refs:pDev

300     int (*pfnStartXmit)(struct sk_buff *pSkb, struct net_device *pDev);
318 * @param pDev The net device.
320 static int vboxNetFltLinuxStartXmitFilter(struct sk_buff *pSkb, struct net_device *pDev)
322 PVBOXNETDEVICEOPSOVERRIDE pOverride = (PVBOXNETDEVICEOPSOVERRIDE)pDev->OVR_OPS;
377 return pOverride->OVR_XMIT(pSkb, pDev);
384 * @param pDev The net device.
386 static void vboxNetFltLinuxHookDev(PVBOXNETFLTINS pThis, struct net_device *pDev)
391 if (!VALID_PTR(pDev->OVR_OPS))
396 pOverride->pOrgOps = pDev->OVR_OPS;
397 pOverride->Ops = *pDev->OVR_OPS;
399 pOverride->pfnStartXmit = pDev->hard_start_xmit;
409 ASMAtomicWritePtr((void * volatile *)&pDev->OVR_OPS, pOverride);
411 ASMAtomicXchgPtr((void * volatile *)&pDev->hard_start_xmit, vboxNetFltLinuxStartXmitFilter);
420 * @param pDev The net device. Can be NULL, in which case
423 static void vboxNetFltLinuxUnhookDev(PVBOXNETFLTINS pThis, struct net_device *pDev)
428 if (!pDev)
429 pDev = ASMAtomicUoReadPtrT(&pThis->u.s.pDev, struct net_device *);
430 if (VALID_PTR(pDev))
432 pOverride = (PVBOXNETDEVICEOPSOVERRIDE)pDev->OVR_OPS;
439 ASMAtomicWritePtr((void * volatile *)&pDev->hard_start_xmit, pOverride->pfnStartXmit);
441 ASMAtomicWritePtr((void const * volatile *)&pDev->OVR_OPS, pOverride->pOrgOps);
470 struct net_device *pDev = NULL;
479 pDev = (struct net_device *)ASMAtomicUoReadPtr((void * volatile *)&pThis->u.s.pDev);
480 if (pDev)
482 dev_hold(pDev);
484 pDev, pDev->name,
486 netdev_refcnt_read(pDev)
488 atomic_read(&pDev->refcnt)
496 return pDev;
498 return ASMAtomicUoReadPtrT(&pThis->u.s.pDev, struct net_device *);
508 * @param pDev The vboxNetFltLinuxRetainNetDev
511 DECLINLINE(void) vboxNetFltLinuxReleaseNetDev(PVBOXNETFLTINS pThis, struct net_device *pDev)
516 if (pDev)
518 dev_put(pDev);
520 pDev, pDev->name,
522 netdev_refcnt_read(pDev)
524 atomic_read(&pDev->refcnt)
613 struct net_device *pDev;
639 pDev = ASMAtomicUoReadPtrT(&pThis->u.s.pDev, struct net_device *);
647 pPkt->dev = pDev;
714 pPkt->protocol = eth_type_trans(pPkt, pDev);
832 struct net_device *pDev;
863 pDev = ASMAtomicUoReadPtrT(&pThis->u.s.pDev, struct net_device *);
864 if (pDev != pSkbDev)
1459 struct net_device *pDev;
1466 pDev = ASMAtomicUoReadPtrT(&pThis->u.s.pDev, struct net_device *);
1467 if (pDev)
1468 fFeatures = pDev->features;
1508 struct net_device * pDev = vboxNetFltLinuxRetainNetDev(pThis);
1509 if (pDev)
1511 fRc = !!(pDev->promiscuity - (ASMAtomicUoReadBool(&pThis->u.s.fPromiscuousSet) & 1));
1512 LogFlow(("vboxNetFltPortOsIsPromiscuous: returns %d, pDev->promiscuity=%d, fPromiscuousSet=%d\n",
1513 fRc, pDev->promiscuity, pThis->u.s.fPromiscuousSet));
1514 vboxNetFltLinuxReleaseNetDev(pThis, pDev);
1523 static bool vboxNetFltIsTapDevice(PVBOXNETFLTINS pThis, struct net_device *pDev)
1525 if (pDev->ethtool_ops && pDev->ethtool_ops->get_drvinfo)
1531 pDev->ethtool_ops->get_drvinfo(pDev, &Info);
1546 static void vboxNetFltSetTapLinkState(PVBOXNETFLTINS pThis, struct net_device *pDev, bool fLinkUp)
1548 if (vboxNetFltIsTapDevice(pThis, pDev))
1552 netif_tx_lock_bh(pDev);
1554 netif_carrier_on(pDev);
1556 netif_carrier_off(pDev);
1557 netif_tx_unlock_bh(pDev);
1561 DECLINLINE(void) vboxNetFltSetTapLinkState(PVBOXNETFLTINS pThis, struct net_device *pDev, bool fLinkUp)
1575 static int vboxNetFltLinuxAttachToInterface(PVBOXNETFLTINS pThis, struct net_device *pDev)
1582 dev_hold(pDev);
1585 ASMAtomicUoWritePtr(&pThis->u.s.pDev, pDev);
1589 pDev, pDev->name,
1591 netdev_refcnt_read(pDev)
1593 atomic_read(&pDev->refcnt)
1596 Log(("vboxNetFltLinuxAttachToInterface: Got pDev=%p pThis=%p pThis->u.s.pDev=%p\n",
1597 pDev, pThis, ASMAtomicUoReadPtrT(&pThis->u.s.pDev, struct net_device *)));
1600 memcpy(&pThis->u.s.MacAddr, pDev->dev_addr, sizeof(pThis->u.s.MacAddr));
1602 pThis->u.s.cbMtu = pDev->mtu;
1608 pThis->u.s.PacketType.dev = pDev;
1615 vboxNetFltLinuxHookDev(pThis, pDev);
1622 vboxNetFltSetTapLinkState(pThis, pDev, true);
1629 pDev = ASMAtomicUoReadPtrT(&pThis->u.s.pDev, struct net_device *);
1630 if (pDev)
1634 pDev = NULL; /* don't dereference it */
1642 if (!pDev)
1657 vboxNetFltLinuxUnhookDev(pThis, pDev);
1660 ASMAtomicUoWriteNullPtr(&pThis->u.s.pDev);
1662 dev_put(pDev);
1664 pDev, pDev->name,
1666 netdev_refcnt_read(pDev)
1668 atomic_read(&pDev->refcnt)
1678 static int vboxNetFltLinuxUnregisterDevice(PVBOXNETFLTINS pThis, struct net_device *pDev)
1684 vboxNetFltLinuxUnhookDev(pThis, pDev);
1698 ASMAtomicUoWriteNullPtr(&pThis->u.s.pDev);
1709 pDev, pDev->name,
1711 netdev_refcnt_read(pDev)
1713 atomic_read(&pDev->refcnt)
1716 dev_put(pDev);
1722 static int vboxNetFltLinuxDeviceIsUp(PVBOXNETFLTINS pThis, struct net_device *pDev)
1729 dev_set_promiscuity(pDev, 1);
1731 Log(("vboxNetFltLinuxDeviceIsUp: enabled promiscuous mode on %s (%d)\n", pThis->szName, pDev->promiscuity));
1734 Log(("vboxNetFltLinuxDeviceIsUp: no need to enable promiscuous mode on %s (%d)\n", pThis->szName, pDev->promiscuity));
1738 static int vboxNetFltLinuxDeviceGoingDown(PVBOXNETFLTINS pThis, struct net_device *pDev)
1744 dev_set_promiscuity(pDev, -1);
1746 Log(("vboxNetFltLinuxDeviceGoingDown: disabled promiscuous mode on %s (%d)\n", pThis->szName, pDev->promiscuity));
1749 Log(("vboxNetFltLinuxDeviceGoingDown: no need to disable promiscuous mode on %s (%d)\n", pThis->szName, pDev->promiscuity));
1762 * @param pDev Pointer to device structure of host's interface.
1764 static int vboxNetFltLinuxDeviceMtuChange(PVBOXNETFLTINS pThis, struct net_device *pDev)
1766 ASMAtomicWriteU32(&pThis->u.s.cbMtu, pDev->mtu);
1767 Log(("vboxNetFltLinuxDeviceMtuChange: set MTU for %s to %d\n", pThis->szName, pDev->mtu));
1813 struct net_device *pDev = netdev_notifier_info_to_dev(ptr);
1815 struct net_device *pDev = (struct net_device *)ptr;
1819 Log(("VBoxNetFlt: got event %s(0x%lx) on %s, pDev=%p pThis=%p pThis->u.s.pDev=%p\n",
1820 vboxNetFltLinuxGetNetDevEventName(ulEventType), ulEventType, pDev->name, pDev, pThis, ASMAtomicUoReadPtrT(&pThis->u.s.pDev, struct net_device *)));
1822 && !strcmp(pDev->name, pThis->szName))
1824 vboxNetFltLinuxAttachToInterface(pThis, pDev);
1828 pDev = ASMAtomicUoReadPtrT(&pThis->u.s.pDev, struct net_device *);
1829 if (pDev == ptr)
1834 rc = vboxNetFltLinuxUnregisterDevice(pThis, pDev);
1837 rc = vboxNetFltLinuxDeviceIsUp(pThis, pDev);
1840 rc = vboxNetFltLinuxDeviceGoingDown(pThis, pDev);
1843 rc = vboxNetFltLinuxDeviceMtuChange(pThis, pDev);
1866 struct net_device * pDev;
1873 pDev = vboxNetFltLinuxRetainNetDev(pThis);
1874 if (pDev)
1914 vboxNetFltLinuxReleaseNetDev(pThis, pDev);
1923 struct net_device * pDev;
1932 pDev = vboxNetFltLinuxRetainNetDev(pThis);
1933 if (pDev)
1943 unsigned const cPromiscBefore = pDev->promiscuity;
1950 dev_set_promiscuity(pDev, 1);
1953 Log(("vboxNetFltPortOsSetActive: enabled promiscuous mode on %s (%d)\n", pThis->szName, pDev->promiscuity));
1960 dev_set_promiscuity(pDev, -1);
1962 Log(("vboxNetFltPortOsSetActive: disabled promiscuous mode on %s (%d)\n", pThis->szName, pDev->promiscuity));
1967 fIf = dev_get_flags(pDev);
1968 Log(("VBoxNetFlt: fIf=%#x; %d->%d\n", fIf, cPromiscBefore, pDev->promiscuity));
1972 vboxNetFltLinuxReleaseNetDev(pThis, pDev);
2020 struct net_device *pDev;
2033 pDev = ASMAtomicUoReadPtrT(&pThis->u.s.pDev, struct net_device *);
2039 vboxNetFltSetTapLinkState(pThis, pDev, false);
2046 pDev, pDev->name,
2048 netdev_refcnt_read(pDev)
2050 atomic_read(&pDev->refcnt)
2053 dev_put(pDev);
2090 ASMAtomicUoWriteNullPtr(&pThis->u.s.pDev);