if_em.c (f9b2a21c9eb4d2715be82dc9049eae29fdb40d17) if_em.c (ce3ee1e7c4cac5b86bbc15daac68f2129aa42187)
1/******************************************************************************
2
3 Copyright (c) 2001-2013, Intel Corporation
4 All rights reserved.
5
6 Redistribution and use in source and binary forms, with or without
7 modification, are permitted provided that the following conditions are met:
8

--- 3822 unchanged lines hidden (view full) ---

3831 struct adapter *adapter = txr->adapter;
3832 int first, last, done, processed;
3833 struct em_buffer *tx_buffer;
3834 struct e1000_tx_desc *tx_desc, *eop_desc;
3835 struct ifnet *ifp = adapter->ifp;
3836
3837 EM_TX_LOCK_ASSERT(txr);
3838#ifdef DEV_NETMAP
1/******************************************************************************
2
3 Copyright (c) 2001-2013, Intel Corporation
4 All rights reserved.
5
6 Redistribution and use in source and binary forms, with or without
7 modification, are permitted provided that the following conditions are met:
8

--- 3822 unchanged lines hidden (view full) ---

3831 struct adapter *adapter = txr->adapter;
3832 int first, last, done, processed;
3833 struct em_buffer *tx_buffer;
3834 struct e1000_tx_desc *tx_desc, *eop_desc;
3835 struct ifnet *ifp = adapter->ifp;
3836
3837 EM_TX_LOCK_ASSERT(txr);
3838#ifdef DEV_NETMAP
3839 if (netmap_tx_irq(ifp, txr->me |
3840 (NETMAP_LOCKED_ENTER | NETMAP_LOCKED_EXIT)))
3839 if (netmap_tx_irq(ifp, txr->me))
3841 return;
3842#endif /* DEV_NETMAP */
3843
3844 /* No work, make sure watchdog is off */
3845 if (txr->tx_avail == adapter->num_tx_desc) {
3846 txr->queue_status = EM_QUEUE_IDLE;
3847 return;
3848 }

--- 247 unchanged lines hidden (view full) ---

4096
4097
4098 /* Clear the ring contents */
4099 EM_RX_LOCK(rxr);
4100 rsize = roundup2(adapter->num_rx_desc *
4101 sizeof(struct e1000_rx_desc), EM_DBA_ALIGN);
4102 bzero((void *)rxr->rx_base, rsize);
4103#ifdef DEV_NETMAP
3840 return;
3841#endif /* DEV_NETMAP */
3842
3843 /* No work, make sure watchdog is off */
3844 if (txr->tx_avail == adapter->num_tx_desc) {
3845 txr->queue_status = EM_QUEUE_IDLE;
3846 return;
3847 }

--- 247 unchanged lines hidden (view full) ---

4095
4096
4097 /* Clear the ring contents */
4098 EM_RX_LOCK(rxr);
4099 rsize = roundup2(adapter->num_rx_desc *
4100 sizeof(struct e1000_rx_desc), EM_DBA_ALIGN);
4101 bzero((void *)rxr->rx_base, rsize);
4102#ifdef DEV_NETMAP
4104 slot = netmap_reset(na, NR_RX, 0, 0);
4103 slot = netmap_reset(na, NR_RX, rxr->me, 0);
4105#endif
4106
4107 /*
4108 ** Free current RX buffer structs and their mbufs
4109 */
4110 for (int i = 0; i < adapter->num_rx_desc; i++) {
4111 rxbuf = &rxr->rx_buffers[i];
4112 if (rxbuf->m_head != NULL) {

--- 315 unchanged lines hidden (view full) ---

4428 u16 len;
4429 int i, processed, rxdone = 0;
4430 bool eop;
4431 struct e1000_rx_desc *cur;
4432
4433 EM_RX_LOCK(rxr);
4434
4435#ifdef DEV_NETMAP
4104#endif
4105
4106 /*
4107 ** Free current RX buffer structs and their mbufs
4108 */
4109 for (int i = 0; i < adapter->num_rx_desc; i++) {
4110 rxbuf = &rxr->rx_buffers[i];
4111 if (rxbuf->m_head != NULL) {

--- 315 unchanged lines hidden (view full) ---

4427 u16 len;
4428 int i, processed, rxdone = 0;
4429 bool eop;
4430 struct e1000_rx_desc *cur;
4431
4432 EM_RX_LOCK(rxr);
4433
4434#ifdef DEV_NETMAP
4436 if (netmap_rx_irq(ifp, rxr->me | NETMAP_LOCKED_ENTER, &processed))
4435 if (netmap_rx_irq(ifp, rxr->me, &processed)) {
4436 EM_RX_UNLOCK(rxr);
4437 return (FALSE);
4437 return (FALSE);
4438 }
4438#endif /* DEV_NETMAP */
4439
4440 for (i = rxr->next_to_check, processed = 0; count != 0;) {
4441
4442 if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
4443 break;
4444
4445 bus_dmamap_sync(rxr->rxdma.dma_tag, rxr->rxdma.dma_map,

--- 1353 unchanged lines hidden ---
4439#endif /* DEV_NETMAP */
4440
4441 for (i = rxr->next_to_check, processed = 0; count != 0;) {
4442
4443 if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
4444 break;
4445
4446 bus_dmamap_sync(rxr->rxdma.dma_tag, rxr->rxdma.dma_map,

--- 1353 unchanged lines hidden ---