Message ID | 1318026470-21476-1-git-send-email-michael@walle.cc |
---|---|
State | Accepted |
Commit | 1a9845b4f00a2930b2c06dabd6cf9bee4ca1437c |
Headers | show |
On Friday 07 October 2011 18:27:50 Michael Walle wrote: > Esp. while printing the environment the output is usually longer than 512 > bytes. Instead of cutting the message, send multiple 512 bytes packets. sorry, i probably should have looked closer earlier. this isn't really your fault, but i'm guessing this 512 limit is due to the size of the static input_buffer ? if so, let's use sizeof(input_buffer) instead of 512. or add a define at the top like NETCONSOLE_BUFFER_SIZE and use that everywhere. -mike
Am Samstag 08 Oktober 2011, 00:53:13 schrieb Mike Frysinger: > On Friday 07 October 2011 18:27:50 Michael Walle wrote: > > Esp. while printing the environment the output is usually longer than 512 > > bytes. Instead of cutting the message, send multiple 512 bytes packets. > > sorry, i probably should have looked closer earlier. this isn't really > your fault, but i'm guessing this 512 limit is due to the size of the > static input_buffer ? if so, let's use sizeof(input_buffer) instead of > 512. or add a define at the top like NETCONSOLE_BUFFER_SIZE and use that > everywhere. -mike i don't think the input buffer has sth to do with the output. of course it could be intended, that the input buffer has the same size as the max output size. if i didn't miss sth, the output size is only limited by the maximum packet size (minus headers) defined by PKTSIZE. I don't know why the input buffer and max output size has this particular size. Well, the input buffer could be some arbitrary number to. not too big to save some space :) The max output size should be PKTSIZE-NetEthHdrSize()-IP_HDR_SIZE.
On Friday 07 October 2011 19:22:22 Michael Walle wrote: > Am Samstag 08 Oktober 2011, 00:53:13 schrieb Mike Frysinger: > > On Friday 07 October 2011 18:27:50 Michael Walle wrote: > > > Esp. while printing the environment the output is usually longer than > > > 512 bytes. Instead of cutting the message, send multiple 512 bytes > > > packets. > > > > sorry, i probably should have looked closer earlier. this isn't really > > your fault, but i'm guessing this 512 limit is due to the size of the > > static input_buffer ? if so, let's use sizeof(input_buffer) instead of > > 512. or add a define at the top like NETCONSOLE_BUFFER_SIZE and use that > > everywhere. > > i don't think the input buffer has sth to do with the output. of course it > could be intended, that the input buffer has the same size as the max > output size. if i didn't miss sth, the output size is only limited by the > maximum packet size (minus headers) defined by PKTSIZE. > > I don't know why the input buffer and max output size has this particular > size. Well, the input buffer could be some arbitrary number to. not too big > to save some space :) > > The max output size should be PKTSIZE-NetEthHdrSize()-IP_HDR_SIZE. yeah, i think you're right. best to keep the 512 for now until someone gets up the courage to look it over. Acked-by: Mike Frysinger <vapier@gentoo.org> -mike
diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c index e40efb8..56ba64f 100644 --- a/drivers/net/netconsole.c +++ b/drivers/net/netconsole.c @@ -189,10 +189,13 @@ static void nc_puts(const char *s) return; output_recursion = 1; - if ((len = strlen (s)) > 512) - len = 512; - - nc_send_packet (s, len); + len = strlen(s); + while (len) { + int send_len = min(len, 512); + nc_send_packet(s, send_len); + len -= send_len; + s += send_len; + } output_recursion = 0; }
Esp. while printing the environment the output is usually longer than 512 bytes. Instead of cutting the message, send multiple 512 bytes packets. Signed-off-by: Michael Walle <michael@walle.cc> --- drivers/net/netconsole.c | 11 +++++++---- 1 files changed, 7 insertions(+), 4 deletions(-)