mirror of
https://github.com/openvswitch/ovs
synced 2025-08-31 14:25:26 +00:00
netdev_class: Pass a struct ofpbuf * to rx_recv()
Update the netdev_class so that struct ofpbuf * is passed to rx_recv() to provide both the data and size of the data to read a packet into. On success, update struct ofpbuf size inside netdev_class rx_recv implementation and return 0. This moves logic from the caller. On error a positive error code is returned, whereas previously a negative error code was returned. This is a more common convention. This patch should not have any behavioural changes. This patch is in preparation for the netdev-linux variant of rx_recv() making use of headroom in the struct ofpbuf * parameter to push a VLAN tag obtained from auxdata. Signed-off-by: Simon Horman <horms@verge.net.au> Co-authored-by: Ben Pfaff <blp@nicira.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
This commit is contained in:
@@ -551,17 +551,15 @@ netdev_rx_recv(struct netdev_rx *rx, struct ofpbuf *buffer)
|
||||
ovs_assert(buffer->size == 0);
|
||||
ovs_assert(ofpbuf_tailroom(buffer) >= ETH_TOTAL_MIN);
|
||||
|
||||
retval = rx->netdev->netdev_class->rx_recv(rx, buffer->data,
|
||||
ofpbuf_tailroom(buffer));
|
||||
if (retval >= 0) {
|
||||
retval = rx->netdev->netdev_class->rx_recv(rx, buffer);
|
||||
if (!retval) {
|
||||
COVERAGE_INC(netdev_received);
|
||||
buffer->size += retval;
|
||||
if (buffer->size < ETH_TOTAL_MIN) {
|
||||
ofpbuf_put_zeros(buffer, ETH_TOTAL_MIN - buffer->size);
|
||||
}
|
||||
return 0;
|
||||
} else {
|
||||
return -retval;
|
||||
return retval;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user