diff --git a/networking/udhcp/d6_dhcpc.c b/networking/udhcp/d6_dhcpc.c
index b2df9f0..ef555bc 100644
--- a/networking/udhcp/d6_dhcpc.c
+++ b/networking/udhcp/d6_dhcpc.c
@@ -954,7 +954,8 @@
 	if (peer_ipv6)
 		*peer_ipv6 = packet.ip6.ip6_src; /* struct copy */
 
-	log1("received %s", "a packet");
+	log2("received %s", "a packet");
+	/* log2 because more informative msg for valid packets is printed later at log1 level */
 	d6_dump_packet(&packet.data);
 
 	bytes -= sizeof(packet.ip6) + sizeof(packet.udp);
diff --git a/networking/udhcp/d6_packet.c b/networking/udhcp/d6_packet.c
index 172f8e1..c1949f6 100644
--- a/networking/udhcp/d6_packet.c
+++ b/networking/udhcp/d6_packet.c
@@ -44,7 +44,8 @@
 		bb_simple_info_msg("packet with bad magic, ignoring");
 		return -2;
 	}
-	log1("received %s", "a packet");
+	log2("received %s", "a packet");
+	/* log2 because more informative msg for valid packets is printed later at log1 level */
 	d6_dump_packet(packet);
 
 	return bytes;
diff --git a/networking/udhcp/dhcpc.c b/networking/udhcp/dhcpc.c
index 5fb96c2..a30632d 100644
--- a/networking/udhcp/dhcpc.c
+++ b/networking/udhcp/dhcpc.c
@@ -975,11 +975,12 @@
  skip_udp_sum_check:
 
 	if (packet.data.cookie != htonl(DHCP_MAGIC)) {
-		bb_simple_info_msg("packet with bad magic, ignoring");
+		log1s("packet with bad magic, ignoring");
 		return -2;
 	}
 
-	log1("received %s", "a packet");
+	log2("received %s", "a packet");
+	/* log2 because more informative msg for valid packets is printed later at log1 level */
 	udhcp_dump_packet(&packet.data);
 
 	bytes -= sizeof(packet.ip) + sizeof(packet.udp);
@@ -1649,13 +1650,13 @@
 		 || memcmp(packet.chaddr, client_data.client_mac, 6) != 0
 		) {
 //FIXME: need to also check that last 10 bytes are zero
-			log1("chaddr does not match%s", ", ignoring packet"); // log2?
+			log1("chaddr does not match%s", ", ignoring packet");
 			continue;
 		}
 
 		message = udhcp_get_option(&packet, DHCP_MESSAGE_TYPE);
 		if (message == NULL) {
-			bb_info_msg("no message type option%s", ", ignoring packet");
+			log1("no message type option%s", ", ignoring packet");
 			continue;
 		}
 
@@ -1663,6 +1664,7 @@
 		case INIT_SELECTING:
 			/* Must be a DHCPOFFER */
 			if (*message == DHCPOFFER) {
+				struct in_addr temp_addr;
 				uint8_t *temp;
 
 /* What exactly is server's IP? There are several values.
@@ -1698,7 +1700,8 @@
 					move_from_unaligned32(server_addr, temp);
 				}
 				/*xid = packet.xid; - already is */
-				requested_ip = packet.yiaddr;
+				temp_addr.s_addr = requested_ip = packet.yiaddr;
+				log1("received an offer of %s",	inet_ntoa(temp_addr));
 
 				/* enter requesting state */
 				client_data.state = REQUESTING;
diff --git a/networking/udhcp/packet.c b/networking/udhcp/packet.c
index 4d8e005..78f580c 100644
--- a/networking/udhcp/packet.c
+++ b/networking/udhcp/packet.c
@@ -95,7 +95,8 @@
 		bb_simple_info_msg("packet with bad magic, ignoring");
 		return -2;
 	}
-	log1("received %s", "a packet");
+	log2("received %s", "a packet");
+	/* log2 because more informative msg for valid packets is printed later at log1 level */
 	udhcp_dump_packet(packet);
 
 	return bytes;
