Index: uspace/lib/nic/include/nic.h
===================================================================
--- uspace/lib/nic/include/nic.h	(revision 5f97ef445e6e5648a8b8c902eb0f655d579336b4)
+++ uspace/lib/nic/include/nic.h	(revision e43d658b7c92a48bfe62de06cc5d15fdb1395c2f)
@@ -196,5 +196,5 @@
  */
 typedef errno_t (*poll_mode_change_handler)(nic_t *,
-    nic_poll_mode_t, const struct timeval *);
+    nic_poll_mode_t, const struct timespec *);
 
 /**
@@ -240,9 +240,9 @@
 extern void nic_set_tx_busy(nic_t *, int);
 extern errno_t nic_report_address(nic_t *, const nic_address_t *);
-extern errno_t nic_report_poll_mode(nic_t *, nic_poll_mode_t, struct timeval *);
+extern errno_t nic_report_poll_mode(nic_t *, nic_poll_mode_t, struct timespec *);
 extern void nic_query_address(nic_t *, nic_address_t *);
 extern void nic_received_frame(nic_t *, nic_frame_t *);
 extern void nic_received_frame_list(nic_t *, nic_frame_list_t *);
-extern nic_poll_mode_t nic_query_poll_mode(nic_t *, struct timeval *);
+extern nic_poll_mode_t nic_query_poll_mode(nic_t *, struct timespec *);
 
 /* Statistics updates */
Index: uspace/lib/nic/include/nic_driver.h
===================================================================
--- uspace/lib/nic/include/nic_driver.h	(revision 5f97ef445e6e5648a8b8c902eb0f655d579336b4)
+++ uspace/lib/nic/include/nic_driver.h	(revision e43d658b7c92a48bfe62de06cc5d15fdb1395c2f)
@@ -83,9 +83,9 @@
 	nic_poll_mode_t poll_mode;
 	/** Polling period (applicable when poll_mode == NIC_POLL_PERIODIC) */
-	struct timeval poll_period;
+	struct timespec poll_period;
 	/** Current polling mode of the NIC */
 	nic_poll_mode_t default_poll_mode;
 	/** Polling period (applicable when default_poll_mode == NIC_POLL_PERIODIC) */
-	struct timeval default_poll_period;
+	struct timespec default_poll_period;
 	/** Software period fibrill information */
 	struct sw_poll_info sw_poll_info;
Index: uspace/lib/nic/include/nic_impl.h
===================================================================
--- uspace/lib/nic/include/nic_impl.h	(revision 5f97ef445e6e5648a8b8c902eb0f655d579336b4)
+++ uspace/lib/nic/include/nic_impl.h	(revision e43d658b7c92a48bfe62de06cc5d15fdb1395c2f)
@@ -78,7 +78,7 @@
 extern errno_t nic_wol_virtue_get_caps_impl(ddf_fun_t *, nic_wv_type_t, int *);
 extern errno_t nic_poll_get_mode_impl(ddf_fun_t *,
-    nic_poll_mode_t *, struct timeval *);
+    nic_poll_mode_t *, struct timespec *);
 extern errno_t nic_poll_set_mode_impl(ddf_fun_t *,
-    nic_poll_mode_t, const struct timeval *);
+    nic_poll_mode_t, const struct timespec *);
 extern errno_t nic_poll_now_impl(ddf_fun_t *);
 
Index: uspace/lib/nic/src/nic_driver.c
===================================================================
--- uspace/lib/nic/src/nic_driver.c	(revision 5f97ef445e6e5648a8b8c902eb0f655d579336b4)
+++ uspace/lib/nic/src/nic_driver.c	(revision e43d658b7c92a48bfe62de06cc5d15fdb1395c2f)
@@ -384,5 +384,5 @@
  *  @return Current polling mode of the controller
  */
-nic_poll_mode_t nic_query_poll_mode(nic_t *nic_data, struct timeval *period)
+nic_poll_mode_t nic_query_poll_mode(nic_t *nic_data, struct timespec *period)
 {
 	if (period)
@@ -400,5 +400,5 @@
  */
 errno_t nic_report_poll_mode(nic_t *nic_data, nic_poll_mode_t mode,
-    struct timeval *period)
+    struct timespec *period)
 {
 	errno_t rc = EOK;
@@ -408,6 +408,6 @@
 	if (mode == NIC_POLL_PERIODIC) {
 		if (period) {
-			memcpy(&nic_data->default_poll_period, period, sizeof(struct timeval));
-			memcpy(&nic_data->poll_period, period, sizeof(struct timeval));
+			memcpy(&nic_data->default_poll_period, period, sizeof(struct timespec));
+			memcpy(&nic_data->poll_period, period, sizeof(struct timespec));
 		} else {
 			rc = EINVAL;
@@ -1030,7 +1030,7 @@
  *  @returns Nonzero if t is zero interval
  */
-static int timeval_nonpositive(struct timeval t)
-{
-	return (t.tv_sec <= 0) && (t.tv_usec <= 0);
+static int timespec_nonpositive(struct timespec t)
+{
+	return (t.tv_sec <= 0) && (t.tv_nsec <= 0);
 }
 
@@ -1051,15 +1051,15 @@
 		int run = info->run;
 		int running = info->running;
-		struct timeval remaining = nic->poll_period;
+		struct timespec remaining = nic->poll_period;
 		fibril_rwlock_read_unlock(&nic->main_lock);
 
 		if (!running) {
 			remaining.tv_sec = 5;
-			remaining.tv_usec = 0;
+			remaining.tv_nsec = 0;
 		}
 
 		/* Wait the period (keep attention to overflows) */
-		while (!timeval_nonpositive(remaining)) {
-			suseconds_t wait = 0;
+		while (!timespec_nonpositive(remaining)) {
+			usec_t wait = 0;
 			if (remaining.tv_sec > 0) {
 				time_t wait_sec = remaining.tv_sec;
@@ -1071,9 +1071,9 @@
 					wait_sec = 5;
 
-				wait = (suseconds_t) wait_sec * 1000000;
+				wait = SEC2USEC(wait_sec);
 
 				remaining.tv_sec -= wait_sec;
 			} else {
-				wait = remaining.tv_usec;
+				wait = NSEC2USEC(remaining.tv_nsec);
 
 				if (wait > 5 * 1000000) {
@@ -1081,5 +1081,5 @@
 				}
 
-				remaining.tv_usec -= wait;
+				remaining.tv_nsec -= USEC2NSEC(wait);
 			}
 			fibril_usleep(wait);
Index: uspace/lib/nic/src/nic_impl.c
===================================================================
--- uspace/lib/nic/src/nic_impl.c	(revision 5f97ef445e6e5648a8b8c902eb0f655d579336b4)
+++ uspace/lib/nic/src/nic_impl.c	(revision e43d658b7c92a48bfe62de06cc5d15fdb1395c2f)
@@ -121,5 +121,5 @@
 		nic_data->poll_mode = nic_data->default_poll_mode;
 		memcpy(&nic_data->poll_period, &nic_data->default_poll_period,
-		    sizeof(struct timeval));
+		    sizeof(struct timespec));
 		if (rc != EOK) {
 			/*
@@ -714,10 +714,10 @@
  */
 errno_t nic_poll_get_mode_impl(ddf_fun_t *fun,
-    nic_poll_mode_t *mode, struct timeval *period)
+    nic_poll_mode_t *mode, struct timespec *period)
 {
 	nic_t *nic_data = nic_get_from_ddf_fun(fun);
 	fibril_rwlock_read_lock(&nic_data->main_lock);
 	*mode = nic_data->poll_mode;
-	memcpy(period, &nic_data->poll_period, sizeof(struct timeval));
+	memcpy(period, &nic_data->poll_period, sizeof(struct timespec));
 	fibril_rwlock_read_unlock(&nic_data->main_lock);
 	return EOK;
@@ -737,5 +737,5 @@
  */
 errno_t nic_poll_set_mode_impl(ddf_fun_t *fun,
-    nic_poll_mode_t mode, const struct timeval *period)
+    nic_poll_mode_t mode, const struct timespec *period)
 {
 	nic_t *nic_data = nic_get_from_ddf_fun(fun);
@@ -753,7 +753,7 @@
 		if (period == NULL)
 			return EINVAL;
-		if (period->tv_sec == 0 && period->tv_usec == 0)
+		if (period->tv_sec == 0 && period->tv_nsec == 0)
 			return EINVAL;
-		if (period->tv_sec < 0 || period->tv_usec < 0)
+		if (period->tv_sec < 0 || period->tv_nsec < 0)
 			return EINVAL;
 	}
