LIST_FOR_EACH (ofconn, node, &mgr->all_conns) {
if (ofconn_receives_async_msg(ofconn, OAM_PACKET_IN, pin->up.reason)
- && ofconn->controller_id == pin->up.controller_id) {
+ && ofconn->controller_id == pin->controller_id) {
schedule_packet_in(ofconn, *pin);
}
}
pin.up.total_len = pin.up.packet_len;
if (pin.up.reason == OFPR_ACTION) {
- controller_max_len = pin.up.send_len; /* max_len */
+ controller_max_len = pin.send_len; /* max_len */
} else {
controller_max_len = ofconn->miss_send_len;
}
/* Figure out how much of the packet to send.
* If not buffered, send the entire packet. Otherwise, depending on
* the reason of packet-in, send what requested by the controller. */
- if (pin.up.buffer_id == UINT32_MAX) {
- pin.up.send_len = pin.up.packet_len;
- } else {
- pin.up.send_len = MIN(pin.up.packet_len, controller_max_len);
+ if (pin.up.buffer_id != UINT32_MAX
+ && controller_max_len < pin.up.packet_len) {
+ pin.up.packet_len = controller_max_len;
}
/* Make OFPT_PACKET_IN and hand over to packet scheduler. It might