diff options
Diffstat (limited to 'src/net')
| -rw-r--r-- | src/net/80211/net80211.c | 10 | ||||
| -rw-r--r-- | src/net/infiniband.c | 10 | ||||
| -rw-r--r-- | src/net/netdevice.c | 22 | ||||
| -rw-r--r-- | src/net/tcp.c | 5 |
4 files changed, 24 insertions, 23 deletions
diff --git a/src/net/80211/net80211.c b/src/net/80211/net80211.c index ffa5c9110..d39958ba7 100644 --- a/src/net/80211/net80211.c +++ b/src/net/80211/net80211.c @@ -668,11 +668,11 @@ struct io_buffer * net80211_mgmt_dequeue ( struct net80211_device *dev, *signal = rxi->signal; free ( rxi ); - list_for_each_entry ( iobuf, &dev->mgmt_queue, list ) { - list_del ( &iobuf->list ); - return iobuf; - } - assert ( 0 ); + assert ( ! list_empty ( &dev->mgmt_queue ) ); + iobuf = list_first_entry ( &dev->mgmt_queue, struct io_buffer, + list ); + list_del ( &iobuf->list ); + return iobuf; } return NULL; diff --git a/src/net/infiniband.c b/src/net/infiniband.c index bdfc45d6b..a6e4233af 100644 --- a/src/net/infiniband.c +++ b/src/net/infiniband.c @@ -982,12 +982,12 @@ struct ib_device * find_ibdev ( union ib_gid *gid ) { struct ib_device * last_opened_ibdev ( void ) { struct ib_device *ibdev; - list_for_each_entry ( ibdev, &open_ib_devices, open_list ) { - assert ( ibdev->open_count != 0 ); - return ibdev; - } + ibdev = list_first_entry ( &open_ib_devices, struct ib_device, list ); + if ( ! ibdev ) + return NULL; - return NULL; + assert ( ibdev->open_count != 0 ); + return ibdev; } /* Drag in IPoIB */ diff --git a/src/net/netdevice.c b/src/net/netdevice.c index 894b7e790..3a01a58dd 100644 --- a/src/net/netdevice.c +++ b/src/net/netdevice.c @@ -328,11 +328,12 @@ void netdev_poll ( struct net_device *netdev ) { struct io_buffer * netdev_rx_dequeue ( struct net_device *netdev ) { struct io_buffer *iobuf; - list_for_each_entry ( iobuf, &netdev->rx_queue, list ) { - list_del ( &iobuf->list ); - return iobuf; - } - return NULL; + iobuf = list_first_entry ( &netdev->rx_queue, struct io_buffer, list ); + if ( ! iobuf ) + return NULL; + + list_del ( &iobuf->list ); + return iobuf; } /** @@ -592,12 +593,13 @@ struct net_device * find_netdev_by_location ( unsigned int bus_type, struct net_device * last_opened_netdev ( void ) { struct net_device *netdev; - list_for_each_entry ( netdev, &open_net_devices, open_list ) { - assert ( netdev_is_open ( netdev ) ); - return netdev; - } + netdev = list_first_entry ( &open_net_devices, struct net_device, + list ); + if ( ! netdev ) + return NULL; - return NULL; + assert ( netdev_is_open ( netdev ) ); + return netdev; } /** diff --git a/src/net/tcp.c b/src/net/tcp.c index 1c824bdff..420640346 100644 --- a/src/net/tcp.c +++ b/src/net/tcp.c @@ -1014,9 +1014,8 @@ static void tcp_process_rx_queue ( struct tcp_connection *tcp ) { * queue, since tcp_discard() may remove packets from the RX * queue while we are processing. */ - while ( ! list_empty ( &tcp->rx_queue ) ) { - list_for_each_entry ( iobuf, &tcp->rx_queue, list ) - break; + while ( ( iobuf = list_first_entry ( &tcp->rx_queue, struct io_buffer, + list ) ) ) { /* Stop processing when we hit the first gap */ tcpqhdr = iobuf->data; |
