|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [UNIKRAFT PATCH] lib/uknetdev: Provide IEEE 802.1q, 802.1ad, Jumbo frame definitions
Hello Simon, This patch seems fine to me. Reviewed-by: Sharan Santhanam <sharan.santhanam@xxxxxxxxx> Thanks & Regards Sharan On 8/20/20 4:45 PM, Simon Kuenzer wrote: This commit includes support for IEEE 802.1q and IEEE 802.1ad tagged frames to the recently introduced Ethernet header and frame definitions. Due to these standards, an Ethernet frame (without FCS/CRC) can be 1522 B (non-jumbo) and 9022 B (jumbo). Together with this commit, the definitions are name spaced with `UK_` prefix. This is done to avoid possible macro name clashes when porting network stacks or packet processing frameworks to libuknetdev. Signed-off-by: Simon Kuenzer <simon.kuenzer@xxxxxxxxx> --- lib/uknetdev/include/uk/netdev_core.h | 56 ++++++++++++++++++++++----- plat/drivers/virtio/virtio_net.c | 8 ++-- 2 files changed, 51 insertions(+), 13 deletions(-) diff --git a/lib/uknetdev/include/uk/netdev_core.h b/lib/uknetdev/include/uk/netdev_core.h index 1e8b4e72..b9a994e3 100644 --- a/lib/uknetdev/include/uk/netdev_core.h +++ b/lib/uknetdev/include/uk/netdev_core.h @@ -73,16 +73,58 @@ struct uk_netdev; UK_TAILQ_HEAD(uk_netdev_list, struct uk_netdev);/**- * Ethernet macros + * Ethernet size macros */ -#define ETH_HDR_LEN 14 -#define ETH_PKT_PAYLOAD_LEN 1500 -#define ETH_PKT_LEN (ETH_HDR_LEN + ETH_PKT_PAYLOAD_LEN) +/* Header fields */ +#define UK_ETH_ADDR_LEN 6 +#define UK_ETH_TYPE_LEN 2 +#define UK_ETH_8021Q_LEN (UK_ETH_TYPE_LEN + 2) + +/* Ethernet header */ +/* Untagged */ +#define UK_ETH_HDR_UNTAGGED_LEN ((2 * UK_ETH_ADDR_LEN) + \ + UK_ETH_TYPE_LEN) +/* Single VLAN tag (IEEE 802.1q) */ +#define UK_ETH_HDR_8021Q_LEN (UK_ETH_HDR_UNTAGGED_LEN + \ + UK_ETH_8021Q_LEN) +/* Double VLAN tag (IEEE 802.1q) */ +#define UK_ETH_HDR_8021AD_LEN (UK_ETH_HDR_UNTAGGED_LEN + \ + (2 * UK_ETH_8021Q_LEN)) + +/* Payload */ +#define UK_ETH_PAYLOAD_MAXLEN 1500 +#define UK_ETH_JPAYLOAD_MAXLEN 9000 /**< Jumbo frame. */ + +/* Frame sizes */ +#define UK_ETH_FRAME_MINLEN 60 + + +#define UK_ETH_FRAME_UNTAGGED_MAXLEN (UK_ETH_HDR_UNTAGGED_LEN + \ + UK_ETH_PAYLOAD_MAXLEN) +#define UK_ETH_FRAME_8021Q_MAXLEN (UK_ETH_HDR_8021_LEN + \ + UK_ETH_PAYLOAD_MAXLEN) +#define UK_ETH_FRAME_8021AD_MAXLEN (UK_ETH_HDR_8021ADLEN + \ + UK_ETH_PAYLOAD_MAXLEN) +#define UK_ETH_FRAME_MAXLEN (UK_ETH_FRAME_8021AD_MAXLEN) + + +#define UK_ETH_JFRAME_UNTAGGED_MAXLEN (UK_ETH_HDR_UNTAGGED_LEN + \ + UK_ETH_JPAYLOAD_MAXLEN) +#define UK_ETH_JFRAME_8021Q_MAXLEN (UK_ETH_HDR_8021_LEN + \ + UK_ETH_JPAYLOAD_MAXLEN) +#define UK_ETH_JFRAME_8021AD_MAXLEN (UK_ETH_HDR_8021ADLEN + \ + UK_ETH_JPAYLOAD_MAXLEN) +#define UK_ETH_JFRAME_MAXLEN (UK_ETH_JFRAME_8021AD_MAXLEN)/**
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |