M bitsy/power.c => bitsy/power.c +2 -7
@@ 187,15 187,10 @@ deepsleep(void) {
intrcpy(&savedintrregs, intrregs);
cacheflush();
delay(50);
-// mecr = memconfregs->mecr;
if(setpowerlabel()){
/* return here with mmu back on */
trapresume();
- /* Turn off memory auto power */
-// memconfregs->mdrefr &= ~0x30000000;
-// memconfregs->mecr = mecr;
-
gpiorestore(gpioregs, &savedgpioregs);
delay(50);
intrcpy(intrregs, &savedintrregs);
@@ 214,10 209,10 @@ deepsleep(void) {
// dumpitall();
delay(1000);
// irpower(1);
-// audiopower(1);
+ audiopower(1);
µcpower(1);
screenpower(1);
- pcmciapower(1);
+ // pcmciapower(1);
splx(power_pl);
return;
}
M ip/devip.c => ip/devip.c +2 -0
@@ 1088,6 1088,8 @@ ipwrite(Chan* ch, void *v, long n, vlong off)
ttlctlmsg(c, cb);
else if(strcmp(cb->f[0], "tos") == 0)
tosctlmsg(c, cb);
+ else if(strcmp(cb->f[0], "ignoreadvice") == 0)
+ c->ignoreadvice = 1;
else if(strcmp(cb->f[0], "addmulti") == 0){
if(cb->nf < 2)
error("addmulti needs interface address");
M ip/ip.h => ip/ip.h +1 -0
@@ 85,6 85,7 @@ struct Conv
uint ttl; /* max time to live */
uint tos; /* type of service */
uchar ipversion; /* IPv4 or IPv6 */
+ int ignoreadvice; /* don't terminate connection on icmp errors */
char *owner; /* protections */
int perm;
M ip/udp.c => ip/udp.c +2 -0
@@ 587,6 587,8 @@ udpadvise(Proto *udp, Block *bp, char *msg)
if(s->lport == psource)
if(ipcmp(s->raddr, dest) == 0)
if(ipcmp(s->laddr, source) == 0){
+ if(s->ignoreadvice)
+ break;
qlock(s);
qunlock(udp);
qhangup(s->rq, msg);
M port/devsdp.c => port/devsdp.c +1 -1
@@ 42,7 42,7 @@ enum
Maxconv= 256, // power of 2
Nfs= 4, // number of file systems
MaxRetries= 12,
- KeepAlive = 60, // keep alive in seconds
+ KeepAlive = 300, // keep alive in seconds - should probably be about 60 but is higher to avoid linksys bug
SecretLength= 32, // a secret per direction
SeqMax = (1<<24),
SeqWindow = 32,