> + for (i = 0; i < dev->mib_port_cnt; i++) { > + p = &dev->ports[i]; > + if (!p->on) > + continue; > + mib = &p->mib; > + mutex_lock(&mib->cnt_mutex); > + > + /* read only dropped counters when link is not up */ > + if (p->link_down) > + p->link_down = 0; > + else if (!p->link_up) > + mib->cnt_ptr = dev->reg_mib_cnt;
So this is the code you were referring to, when i asked if it can be up and down at the same time. I'm having a hard time understand this. Please try to implement this some other way to make it clear what is going on. Andrew