fixing weird termio issues that complicate debugging
Hello,
Since the pktgen code is reindented I am finding time to read through it and experiment and see if I can get it working.
I have issues with the init process of pktgen. It is difficult to debug it because the init code does a lot of very scary stuff to the terminal control / TTY device at inconvenient times in an inconvenient order, and in the process damages the debug output and damages the screen of your GDB without doing weird things to run GDB on a different TTY.
Of course I am willing to contribute patches and not just complain, but first I need some help to follow what is going on.
Here is the problematic call-flow with some explanation what went wrong trying it on some community machines outside of its original environment:
1) it calls printf("\n%s %s\n", wr_copyright_msg(), wr_powered_by()); which dumps tons of weird boilerplate of licenses, copyrights, code creator, etc.
It is open source and everybody that matters already knows who coded it, so is this stuff really that important? This gets in the way when you are trying to work on it and I just have to comment it out.
2) it calls wr_scrn_setw and tinkers with the windows size very early in the init which can make your terminal weird
3) it calls rte_eal_init which produces a lot of nice debug output, which is fine
4) it calls pktgen_init_screen, which calls wr_scrn_init, which calls wr_scrn_erase which destroys the valuable debug output just created in (c) which is a bad thing
5) it calls wr_print_copyright and dumps more boilerplate I am not sure is needed
6) it logs some helpful messages about the port / descriptor settings which is fine
7) it calls the pktgen_config_ports function which can crash in ways you need the destroyed debug output to fix.
For example in my case that function crashes here:
if (pktgen.nb_ports == 0)
pktgen_log_panic("*** Did not find any ports to use ***");8) Later it makes a logo and a splash screen (wr_log, wr_splash_screen). Is this stuff really needed? This is a ton of output for just starting up some test program.
To fix this debug problem I propose some changes which I am happy to help develop:
1) decide what of this output we really need here and greatly simplify how much gets printed out
2) move wr_scrn_setw right before pktgen_init_screen and after rte_eal_init to prevent damaging that output
3) consider how wr_scrn_init is called in pktgen_init_screen, because it calls wr_scrn_erase which damages output
4) I think that pktgen_config_ports should be called before all this weird screen init stuff, so that if it fails you can actually see what happened there.
One other random topic... on the long lines of code it looks like there are some gigantic tab-indents pushing things off to the right still. One example, maybe there are others or another setting which is needed to fix all of these:
info->seq_pkt = (pkt_seq_t *)rte_zmalloc_socket(buff,
(sizeof(pkt_seq_t) * NUM_TOTAL_PKTS),
RTE_CACHE_LINE_SIZE,rte_socket_id());
Thoughts?
Matthew Hall
Quoted 74 lines · Matthew Hall
Hello,
Since the pktgen code is reindented I am finding time to read through it and experiment and see if I can get it working.
I have issues with the init process of pktgen. It is difficult to debug it because the init code does a lot of very scary stuff to the terminal control / TTY device at inconvenient times in an inconvenient order, and in the process damages the debug output and damages the screen of your GDB without doing weird things to run GDB on a different TTY.
Of course I am willing to contribute patches and not just complain, but first I need some help to follow what is going on.
Here is the problematic call-flow with some explanation what went wrong trying it on some community machines outside of its original environment:
1) it calls
printf("\n%s %s\n", wr_copyright_msg(), wr_powered_by()); which dumps tons of weird boilerplate of licenses, copyrights, code creator, etc.It is open source and everybody that matters already knows who coded it, so is this stuff really that important? This gets in the way when you are trying to work on it and I just have to comment it out.
2) it calls
wr_scrn_setwand tinkers with the windows size very early in the init which can make your terminal weird3) it calls
rte_eal_initwhich produces a lot of nice debug output, which is fine4) it calls
pktgen_init_screen, which callswr_scrn_init, which callswr_scrn_erasewhich destroys the valuable debug output just created in
(c) which is a bad thing5) it calls
wr_print_copyrightand dumps more boilerplate I am not sure is needed6) it logs some helpful messages about the port / descriptor settings which is fine
7) it calls the
pktgen_config_portsfunction which can crash in ways you need the destroyed debug output to fix.For example in my case that function crashes here:
if (pktgen.nb_ports == 0) pktgen_log_panic("*** Did not find any ports to use ***");8) Later it makes a logo and a splash screen (
wr_log,wr_splash_screen). Is this stuff really needed? This is a ton of output for just starting up some test program.To fix this debug problem I propose some changes which I am happy to help develop:
1) decide what of this output we really need here and greatly simplify how much gets printed out
2) move
wr_scrn_setwright beforepktgen_init_screenand afterrte_eal_initto prevent damaging that output3) consider how
wr_scrn_initis called inpktgen_init_screen, because it callswr_scrn_erasewhich damages output4) I think that
pktgen_config_portsshould be called before all this weird screen init stuff, so that if it fails you can actually see what happened there.One other random topic... on the long lines of code it looks like there are some gigantic tab-indents pushing things off to the right still. One example, maybe there are others or another setting which is needed to fix all of these:
Quoted 7 lines
info->seq_pkt = (pkt_seq_t *)rte_zmalloc_socket(buff,(
sizeof(pkt_seq_t)*NUM_TOTAL_PKTS),
RTE_CACHE_LINE_SIZE,rte_socket_id());Thoughts?
Just that I'm in violent agreement about the splash screens and all.
Unfortunately the license explicitly forbids removal of the copyright messages (http://dpdk.org/browse/apps/pktgen-dpdk/tree/LICENSE#n18):
--
# 4) The screens displayed by the application must contain the copyright notice as defined
# above and can not be removed without specific prior written permission. --
Keith, any chance you could work out the details with Wind River to get the ridiculous startup messages straightened out? I dont think anybody would mind a line or two "copyright by..." kind of printf() in there if that's what it takes, but the current screen after screen after screen copyrights and advertisements are obnoxious to the point of driving potential users away.
- Panu -
Quoted 1 line
Matthew Hall
On 1/20/16, 12:32 AM, "dev on behalf of Matthew Hall" <[email protected] on behalf of [email protected]> wrote:
Hi Matthew,
I have some comments below, but will address your full email later when I have a bit more time.
Quoted 41 lines
Hello,
Since the pktgen code is reindented I am finding time to read through it and experiment and see if I can get it working.
I have issues with the init process of pktgen. It is difficult to debug it because the init code does a lot of very scary stuff to the terminal control / TTY device at inconvenient times in an inconvenient order, and in the process damages the debug output and damages the screen of your GDB without doing weird things to run GDB on a different TTY.
Of course I am willing to contribute patches and not just complain, but first I need some help to follow what is going on.
Here is the problematic call-flow with some explanation what went wrong trying it on some community machines outside of its original environment:
1) it calls
printf("\n%s %s\n", wr_copyright_msg(), wr_powered_by()); which dumps tons of weird boilerplate of licenses, copyrights, code creator, etc.It is open source and everybody that matters already knows who coded it, so is this stuff really that important? This gets in the way when you are trying to work on it and I just have to comment it out.
2) it calls
wr_scrn_setwand tinkers with the windows size very early in the init which can make your terminal weird3) it calls
rte_eal_initwhich produces a lot of nice debug output, which is fine4) it calls
pktgen_init_screen, which callswr_scrn_init, which callswr_scrn_erasewhich destroys the valuable debug output just created in
(c) which is a bad thing5) it calls
wr_print_copyrightand dumps more boilerplate I am not sure is needed6) it logs some helpful messages about the port / descriptor settings which is fine
Quoted 7 lines
7) it calls the
pktgen_config_portsfunction which can crash in ways you need the destroyed debug output to fix.For example in my case that function crashes here:
if (pktgen.nb_ports == 0) pktgen_log_panic("*** Did not find any ports to use ***");
This problem is DPDK did not find any ports to use for Pktgen. Please check to make sure you have the right ports attached to gib_uio and they are usable by DPDK.
Quoted 17 lines
8) Later it makes a logo and a splash screen (
wr_log,wr_splash_screen). Is this stuff really needed? This is a ton of output for just starting up some test program.To fix this debug problem I propose some changes which I am happy to help develop:
1) decide what of this output we really need here and greatly simplify how much gets printed out
2) move
wr_scrn_setwright beforepktgen_init_screenand afterrte_eal_initto prevent damaging that output3) consider how
wr_scrn_initis called inpktgen_init_screen, because it callswr_scrn_erasewhich damages output
Quoted 8 lines
4) I think that
pktgen_config_portsshould be called before all this weird screen init stuff, so that if it fails you can actually see what happened there.One other random topic... on the long lines of code it looks like there are some gigantic tab-indents pushing things off to the right still. One example, maybe there are others or another setting which is needed to fix all of these:
Please use tab stops of 4 instead of 8.
Quoted 10 lines
info->seq_pkt = (pkt_seq_t *)rte_zmalloc_socket(buff,(
sizeof(pkt_seq_t)*NUM_TOTAL_PKTS),
RTE_CACHE_LINE_SIZE,rte_socket_id());Thoughts?
Matthew Hall
Regards,
Keith
Quoted 17 lines · dev on behalf of Matthew Hall
Hello,
Since the pktgen code is reindented I am finding time to read through it and experiment and see if I can get it working.
I have issues with the init process of pktgen. It is difficult to debug it because the init code does a lot of very scary stuff to the terminal control / TTY device at inconvenient times in an inconvenient order, and in the process damages the debug output and damages the screen of your GDB without doing weird things to run GDB on a different TTY.
Of course I am willing to contribute patches and not just complain, but first I need some help to follow what is going on.
Here is the problematic call-flow with some explanation what went wrong trying it on some community machines outside of its original environment:
Quoted 7 lines
1) it calls
printf("\n%s %s\n", wr_copyright_msg(), wr_powered_by()); which dumps tons of weird boilerplate of licenses, copyrights, code creator, etc.It is open source and everybody that matters already knows who coded it, so is this stuff really that important? This gets in the way when you are trying to work on it and I just have to comment it out.
One problem is a number of people wanted to steal the code and use in a paid application, so the copyright is some what a requirement. As you may know I do a lot of debugging on Pktgen and I feel they are a nuisance. I can try to see if we can clean up these messages, but do not hold your breath on getting them to be removed.
Quoted 6 lines
2) it calls
wr_scrn_setwand tinkers with the windows size very early in the init which can make your terminal weird3) it calls
rte_eal_initwhich produces a lot of nice debug output, which is fine
IMO most of the information from DPDK is not very useful as why do I need to see every lcore line, plus a lot of more useless information. Most of the information could be reduced a couple of lines or only report issues not just a bunch of useless information.
Quoted 4 lines
4) it calls
pktgen_init_screen, which callswr_scrn_init, which callswr_scrn_erasewhich destroys the valuable debug output just created in
(c) which is a bad thing
The screen init should be scrolling the information off the screen to preserve that info, unless it was changed by mistake.
Quoted 22 lines
5) it calls
wr_print_copyrightand dumps more boilerplate I am not sure is needed6) it logs some helpful messages about the port / descriptor settings which is fine
7) it calls the
pktgen_config_portsfunction which can crash in ways you need the destroyed debug output to fix.For example in my case that function crashes here:
if (pktgen.nb_ports == 0) pktgen_log_panic("*** Did not find any ports to use ***");8) Later it makes a logo and a splash screen (
wr_log,wr_splash_screen). Is this stuff really needed? This is a ton of output for just starting up some test program.To fix this debug problem I propose some changes which I am happy to help develop:
Quoted 8 lines
1) decide what of this output we really need here and greatly simplify how much gets printed out
2) move
wr_scrn_setwright beforepktgen_init_screenand afterrte_eal_initto prevent damaging that output3) consider how
wr_scrn_initis called inpktgen_init_screen, because it callswr_scrn_erasewhich damages output
Again it could be scrolling that information off the screen, just need a large screen scroll buffer.
Quoted 9 lines
4) I think that
pktgen_config_portsshould be called before all this weird screen init stuff, so that if it fails you can actually see what happened there.One other random topic... on the long lines of code it looks like there are some gigantic tab-indents pushing things off to the right still. One example, maybe there are others or another setting which is needed to fix all of these:
Please use tab stop of 4 instead of 8. IMO tab stop of 8 is so 1970’s and we should not need tab stop of 8 as any system today will work. :-)
Quoted 9 lines
info->seq_pkt = (pkt_seq_t *)rte_zmalloc_socket(buff,(
sizeof(pkt_seq_t)*NUM_TOTAL_PKTS),
RTE_CACHE_LINE_SIZE,rte_socket_id());Thoughts?
Matthew Hall
Improvement to Pktgen is always welcome and the copyright info is going to be a bit hard to remove as that was one of the requirements when I open sourced the code. I understand it maybe a bit of output. I do not think it is really a user issue causing users to stop using it as startup is only down once, in my case I may start Pktgen a few times a day for development and it does not seem to slow me down much. :-)
Quoted 1 line
Regards,
Keith
Quoted 3 lines · Keith
Quoted 1 line · dev on behalf of Matthew Hall
Hello,
Please try modifying pktgen-main.c:main() at the top of the function to this:
wr_scrn_setw(1); /* Reset the window size, from possible crash run. */
wr_scrn_pos(100, 1); /* Move the cursor to the bottom of the screen again */
printf("\n%s %s\n", wr_copyright_msg(), wr_powered_by()); fflush(stdout);
/* call before the rte_eal_init() */
(void)rte_set_application_usage_hook(pktgen_usage);Maybe this will fix up most of your issues with DPDK output. I normally set the log-level to 7 to remove most of the DPDK messages.
Quoted 92 lines
Quoted 16 lines
Since the pktgen code is reindented I am finding time to read through it and experiment and see if I can get it working.
I have issues with the init process of pktgen. It is difficult to debug it because the init code does a lot of very scary stuff to the terminal control / TTY device at inconvenient times in an inconvenient order, and in the process damages the debug output and damages the screen of your GDB without doing weird things to run GDB on a different TTY.
Of course I am willing to contribute patches and not just complain, but first I need some help to follow what is going on.
Here is the problematic call-flow with some explanation what went wrong trying it on some community machines outside of its original environment:
Quoted 7 lines
1) it calls
printf("\n%s %s\n", wr_copyright_msg(), wr_powered_by()); which dumps tons of weird boilerplate of licenses, copyrights, code creator, etc.It is open source and everybody that matters already knows who coded it, so is this stuff really that important? This gets in the way when you are trying to work on it and I just have to comment it out.
One problem is a number of people wanted to steal the code and use in a paid application, so the copyright is some what a requirement. As you may know I do a lot of debugging on Pktgen and I feel they are a nuisance. I can try to see if we can clean up these messages, but do not hold your breath on getting them to be removed.
Quoted 6 lines
2) it calls
wr_scrn_setwand tinkers with the windows size very early in the init which can make your terminal weird3) it calls
rte_eal_initwhich produces a lot of nice debug output, which is fineIMO most of the information from DPDK is not very useful as why do I need to see every lcore line, plus a lot of more useless information. Most of the information could be reduced a couple of lines or only report issues not just a bunch of useless information.
Quoted 4 lines
4) it calls
pktgen_init_screen, which callswr_scrn_init, which callswr_scrn_erasewhich destroys the valuable debug output just created in
(c) which is a bad thingThe screen init should be scrolling the information off the screen to preserve that info, unless it was changed by mistake.
Quoted 22 lines
5) it calls
wr_print_copyrightand dumps more boilerplate I am not sure is needed6) it logs some helpful messages about the port / descriptor settings which is fine
7) it calls the
pktgen_config_portsfunction which can crash in ways you need the destroyed debug output to fix.For example in my case that function crashes here:
if (pktgen.nb_ports == 0) pktgen_log_panic("*** Did not find any ports to use ***");8) Later it makes a logo and a splash screen (
wr_log,wr_splash_screen). Is this stuff really needed? This is a ton of output for just starting up some test program.To fix this debug problem I propose some changes which I am happy to help develop:
Quoted 8 lines
1) decide what of this output we really need here and greatly simplify how much gets printed out
2) move
wr_scrn_setwright beforepktgen_init_screenand afterrte_eal_initto prevent damaging that output3) consider how
wr_scrn_initis called inpktgen_init_screen, because it callswr_scrn_erasewhich damages outputAgain it could be scrolling that information off the screen, just need a large screen scroll buffer.
Quoted 9 lines
4) I think that
pktgen_config_portsshould be called before all this weird screen init stuff, so that if it fails you can actually see what happened there.One other random topic... on the long lines of code it looks like there are some gigantic tab-indents pushing things off to the right still. One example, maybe there are others or another setting which is needed to fix all of these:
Please use tab stop of 4 instead of 8. IMO tab stop of 8 is so 1970’s and we should not need tab stop of 8 as any system today will work. :-)
Quoted 9 lines
info->seq_pkt = (pkt_seq_t *)rte_zmalloc_socket(buff,(
sizeof(pkt_seq_t)*NUM_TOTAL_PKTS),
RTE_CACHE_LINE_SIZE,rte_socket_id());Thoughts?
Matthew Hall
Quoted 11 lines
Improvement to Pktgen is always welcome and the copyright info is going to be a bit hard to remove as that was one of the requirements when I open sourced the code. I understand it maybe a bit of output. I do not think it is really a user issue causing users to stop using it as startup is only down once, in my case I may start Pktgen a few times a day for development and it does not seem to slow me down much. :-)
Quoted 1 line
Regards,
Keith
Regards,
Keith
Quoted 1 line · Keith
One problem is a number of people wanted to steal the code and use in a paid application, so the copyright is some what a requirement. As you may know I do a lot of debugging on Pktgen and I feel they are a nuisance. I can try to see if we can clean up these messages, but do not hold your breath on getting them to be removed.
Understood, I am just providing some usability feedback from the community. Any cleanup, however partial it may be for other reasons, will personally aid me in simplicity of debugging and using the pktgen to find performance improvements in other community applications and DPDK itself, which is my true end goal here. In particular I need it for all the changes I posted at various points for librte_lpm so I can test all this stuff to make sure it really works.
Quoted 1 line
IMO most of the information from DPDK is not very useful as why do I need to see every lcore line, plus a lot of more useless information. Most of the information could be reduced a couple of lines or only report issues not just a bunch of useless information.
DPDK's messages might not be helpful for you, but in my case, the temporary hostile modifications I made based on the writeup sent previously, in order to make these messages visible again, is what allowed me to find and fix the root causes of my inactive port issues, because I have been working with DPDK's messages since 2011 and am very familiar with what they mean inside DPDK itself, so they were the only UI of Pktgen familiar to me at all compared to the rest which is custom stuff I didn't use before.
Quoted 1 line
The screen init should be scrolling the information off the screen to preserve that info, unless it was changed by mistake.
I found a lot of info is being overwritten or lost due to the complex sequence of all these calls. This is what led to my email of questions for you.
Quoted 1 line
Please use tab stop of 4 instead of 8. IMO tab stop of 8 is so 1970’s and we should not need tab stop of 8 as any system today will work. :-)
OK. But do note that this convention is different from every other project I've coded on before.
Sincerely,
Matthew.
Quoted 23 lines · Keith
Quoted 21 lines · dev on behalf of Matthew Hall
Hello,
Since the pktgen code is reindented I am finding time to read through it and experiment and see if I can get it working.
I have issues with the init process of pktgen. It is difficult to debug it because the init code does a lot of very scary stuff to the terminal control / TTY device at inconvenient times in an inconvenient order, and in the process damages the debug output and damages the screen of your GDB without doing weird things to run GDB on a different TTY.
Of course I am willing to contribute patches and not just complain, but first I need some help to follow what is going on.
Here is the problematic call-flow with some explanation what went wrong trying it on some community machines outside of its original environment:
1) it calls
printf("\n%s %s\n", wr_copyright_msg(), wr_powered_by()); which dumps tons of weird boilerplate of licenses, copyrights, code creator, etc.
Quoted 6 lines
Quoted 3 lines
It is open source and everybody that matters already knows who coded it, so is this stuff really that important? This gets in the way when you are trying to work on it and I just have to comment it out.
One problem is a number of people wanted to steal the code and use in a paid application, so the copyright is some what a requirement.
In that case, why is it under a BSD'ish license instead of something like GPL that's designed to prevent it in the first place? Might be too late to change it by now, just wondering.
Quoted 3 lines
As you may know I do a lot of debugging on Pktgen and I feel they are a nuisance. I can try to see if we can clean up these messages, but do not hold your breath on getting them to be removed.
It would make a world of difference if it just printed the copyright etc in a couple of lines during startup, instead of taking over the entire screen for several seconds.
This is a whole lot like those anti-piracy ad campaigns on DVDs which you cant skip, so all the *legitimate* users are forced to suffer through them but all the bad guys just rip it out of their copies. DRM that ends up hurting the legitimate users the most is never a good idea.
- Panu -
Quoted 28 lines · Panu Matilainen
Quoted 27 lines · Keith
Quoted 24 lines · dev on behalf of Matthew Hall
Hello,
Since the pktgen code is reindented I am finding time to read through it and experiment and see if I can get it working.
I have issues with the init process of pktgen. It is difficult to debug it because the init code does a lot of very scary stuff to the terminal control / TTY device at inconvenient times in an inconvenient order, and in the process damages the debug output and damages the screen of your GDB without doing weird things to run GDB on a different TTY.
Of course I am willing to contribute patches and not just complain, but first I need some help to follow what is going on.
Here is the problematic call-flow with some explanation what went wrong trying it on some community machines outside of its original environment:
1) it calls
printf("\n%s %s\n", wr_copyright_msg(), wr_powered_by()); which dumps tons of weird boilerplate of licenses, copyrights, code creator, etc.It is open source and everybody that matters already knows who coded it, so is this stuff really that important? This gets in the way when you are trying to work on it and I just have to comment it out.
Quoted 6 lines
Quoted 2 lines
One problem is a number of people wanted to steal the code and use in a paid application, so the copyright is some what a requirement.
In that case, why is it under a BSD'ish license instead of something like GPL that's designed to prevent it in the first place? Might be too late to change it by now, just wondering.
DPDK is BSD, so you can not use a GPL application with DPDK (I think) anyway I can try to speed you the screens, but does it really matter as these are only at startup and I normally leave pktgen running for long periods of time. The extra time at the start does not seem to be a big issue, right?
Quoted 9 lines
Quoted 4 lines
As you may know I do a lot of debugging on Pktgen and I feel they are a nuisance. I can try to see if we can clean up these messages, but do not hold your breath on getting them to be removed.
It would make a world of difference if it just printed the copyright etc in a couple of lines during startup, instead of taking over the entire screen for several seconds.
Quoted 9 lines
This is a whole lot like those anti-piracy ad campaigns on DVDs which you cant skip, so all the *legitimate* users are forced to suffer through them but all the bad guys just rip it out of their copies. DRM that ends up hurting the legitimate users the most is never a good idea.
- Panu -
Regards,
Keith
Quoted 53 lines · Keith
Quoted 28 lines · Panu Matilainen
Quoted 27 lines · Keith
Quoted 24 lines · dev on behalf of Matthew Hall
Hello,
Since the pktgen code is reindented I am finding time to read through it and experiment and see if I can get it working.
I have issues with the init process of pktgen. It is difficult to debug it because the init code does a lot of very scary stuff to the terminal control / TTY device at inconvenient times in an inconvenient order, and in the process damages the debug output and damages the screen of your GDB without doing weird things to run GDB on a different TTY.
Of course I am willing to contribute patches and not just complain, but first I need some help to follow what is going on.
Here is the problematic call-flow with some explanation what went wrong trying it on some community machines outside of its original environment:
1) it calls
printf("\n%s %s\n", wr_copyright_msg(), wr_powered_by()); which dumps tons of weird boilerplate of licenses, copyrights, code creator, etc.It is open source and everybody that matters already knows who coded it, so is this stuff really that important? This gets in the way when you are trying to work on it and I just have to comment it out.
Quoted 6 lines
Quoted 2 lines
One problem is a number of people wanted to steal the code and use in a paid application, so the copyright is some what a requirement.
In that case, why is it under a BSD'ish license instead of something like GPL that's designed to prevent it in the first place? Might be too late to change it by now, just wondering.
DPDK is BSD, so you can not use a GPL application with DPDK (I think) anyway I can try to speed you the screens, but does it really matter as these are only at startup and I normally leave pktgen running for long periods of time. The extra time at the start does not seem to be a big issue, right?
Quoted 14 lines
Quoted 4 lines
As you may know I do a lot of debugging on Pktgen and I feel they are a nuisance. I can try to see if we can clean up these messages, but do not hold your breath on getting them to be removed.
It would make a world of difference if it just printed the copyright etc in a couple of lines during startup, instead of taking over the entire screen for several seconds.
This is a whole lot like those anti-piracy ad campaigns on DVDs which you cant skip, so all the *legitimate* users are forced to suffer through them but all the bad guys just rip it out of their copies. DRM that ends up hurting the legitimate users the most is never a good idea.
Quoted 8 lines
Quoted 4 lines
- Panu -
Regards,
Keith
I would rip out the whole tty control and theming nonsense and then just print one line copyright on startup.
Quoted 2 lines · Stephen Hemminger
I would rip out the whole tty control and theming nonsense and then just print one line copyright on startup.
Personally, I might have put this sentiment more diplomatically, but a refactor effort such as this would make life easier for me coming from the community trying to work with this tool.
When I get a bit deeper into it, I'll see if I can help.
Matthew.
Quoted 30 lines · Keith
Quoted 28 lines · Panu Matilainen
Quoted 27 lines · Keith
Quoted 24 lines · dev on behalf of Matthew Hall
Hello,
Since the pktgen code is reindented I am finding time to read through it and experiment and see if I can get it working.
I have issues with the init process of pktgen. It is difficult to debug it because the init code does a lot of very scary stuff to the terminal control / TTY device at inconvenient times in an inconvenient order, and in the process damages the debug output and damages the screen of your GDB without doing weird things to run GDB on a different TTY.
Of course I am willing to contribute patches and not just complain, but first I need some help to follow what is going on.
Here is the problematic call-flow with some explanation what went wrong trying it on some community machines outside of its original environment:
1) it calls
printf("\n%s %s\n", wr_copyright_msg(), wr_powered_by()); which dumps tons of weird boilerplate of licenses, copyrights, code creator, etc.It is open source and everybody that matters already knows who coded it, so is this stuff really that important? This gets in the way when you are trying to work on it and I just have to comment it out.
Quoted 8 lines
Quoted 6 lines
Quoted 2 lines
One problem is a number of people wanted to steal the code and use in a paid application, so the copyright is some what a requirement.
In that case, why is it under a BSD'ish license instead of something like GPL that's designed to prevent it in the first place? Might be too late to change it by now, just wondering.
DPDK is BSD, so you can not use a GPL application with DPDK (I think)
Well I sure hope the license is not chosen by that assumption. Why assume when you can trivially check, eg:
http://www.gnu.org/licenses/license-list.html
DPDK itself is under the very lax 3-clause BSD license which is compatible with the GPL. The 4-clause "advertising license" used by pktgen is not. But its not the license I'm complaining about.
Quoted 4 lines
anyway I can try to speed you the screens, but does it really matter as these are only at startup and I normally leave pktgen running for long periods of time. The extra time at the start does not seem to be a big issue, right?
We wouldn't be discussing this if it was not an issue. It is offensive enough to turn away both users and contributors, and merely speeding up a bit is not going to make it a whole lot better.
As I (and now others as well) already suggested changing it to a one line printout is what would make worlds of difference while still complying with the license AFAICT. The license text requires printing out the copyright notice, it does not say anything about rendering it in full-screen ascii-art, or printing out the entire license.
- Panu -
Quoted 57 lines · Panu Matilainen
Quoted 30 lines · Keith
Quoted 28 lines · Panu Matilainen
Quoted 27 lines · Keith
Quoted 24 lines · dev on behalf of Matthew Hall
Hello,
Since the pktgen code is reindented I am finding time to read through it and experiment and see if I can get it working.
I have issues with the init process of pktgen. It is difficult to debug it because the init code does a lot of very scary stuff to the terminal control / TTY device at inconvenient times in an inconvenient order, and in the process damages the debug output and damages the screen of your GDB without doing weird things to run GDB on a different TTY.
Of course I am willing to contribute patches and not just complain, but first I need some help to follow what is going on.
Here is the problematic call-flow with some explanation what went wrong trying it on some community machines outside of its original environment:
1) it calls
printf("\n%s %s\n", wr_copyright_msg(), wr_powered_by()); which dumps tons of weird boilerplate of licenses, copyrights, code creator, etc.It is open source and everybody that matters already knows who coded it, so is this stuff really that important? This gets in the way when you are trying to work on it and I just have to comment it out.
Quoted 8 lines
Quoted 6 lines
Quoted 2 lines
One problem is a number of people wanted to steal the code and use in a paid application, so the copyright is some what a requirement.
In that case, why is it under a BSD'ish license instead of something like GPL that's designed to prevent it in the first place? Might be too late to change it by now, just wondering.
DPDK is BSD, so you can not use a GPL application with DPDK (I think)
Well I sure hope the license is not chosen by that assumption. Why assume when you can trivially check, eg:
http://www.gnu.org/licenses/license-list.htmlDPDK itself is under the very lax 3-clause BSD license which is compatible with the GPL. The 4-clause "advertising license" used by pktgen is not. But its not the license I'm complaining about.
Quoted 4 lines
anyway I can try to speed you the screens, but does it really matter as these are only at startup and I normally leave pktgen running for long periods of time. The extra time at the start does not seem to be a big issue, right?
We wouldn't be discussing this if it was not an issue. It is offensive enough to turn away both users and contributors, and merely speeding up a bit is not going to make it a whole lot better.
Quoted 5 lines
As I (and now others as well) already suggested changing it to a one line printout is what would make worlds of difference while still complying with the license AFAICT. The license text requires printing out the copyright notice, it does not say anything about rendering it in full-screen ascii-art, or printing out the entire license.
Thank you Panu for your input, I will think about.
Quoted 3 lines
- Panu -
Regards,
Keith
Quoted 5 lines · Keith
Quoted 4 lines · Panu Matilainen
We wouldn't be discussing this if it was not an issue. It is offensive enough to turn away both users and contributors, and merely speeding up a bit is not going to make it a whole lot better.
Quoted 7 lines
Quoted 5 lines
As I (and now others as well) already suggested changing it to a one line printout is what would make worlds of difference while still complying with the license AFAICT. The license text requires printing out the copyright notice, it does not say anything about rendering it in full-screen ascii-art, or printing out the entire license.
Thank you Panu for your input, I will think about.
Looking at pktgen 2.9.12 and seeing all the ugly startup goo is now gone, its my turn to
THANK YOU!
- Panu -