Remove PDX and NPDENTRIES
[akaros.git] / kern / include / ip.h
index 1033e7f..b779371 100644 (file)
@@ -932,6 +932,7 @@ struct netaddr {
 #define NETF_BASE_SHIFT                (NS_SHIFT_MAX + 1)
 #define NETF_PADMIN_SHIFT      (NETF_BASE_SHIFT + 0)
 #define NETF_SG_SHIFT          (NETF_BASE_SHIFT + 1)
+#define NETF_LRO_SHIFT         (NETF_BASE_SHIFT + 2)
 enum {
        NETF_IPCK = (1 << NS_IPCK_SHIFT),       /* xmit ip checksum */
        NETF_UDPCK = (1 << NS_UDPCK_SHIFT),     /* xmit udp checksum */
@@ -939,10 +940,12 @@ enum {
        NETF_PADMIN = (1 << NETF_PADMIN_SHIFT), /* device pads to mintu */
        NETF_SG = (1 << NETF_SG_SHIFT),         /* device can do scatter/gather */
        NETF_TSO = (1 << NS_TSO_SHIFT),         /* device can do TSO */
+       NETF_LRO = (1 << NETF_LRO_SHIFT),       /* device can do LRO */
 };
 /*
  *  a network interface
  */
+struct ether;
 struct netif {
        qlock_t qlock;
 
@@ -984,17 +987,18 @@ struct netif {
        void (*scanbs) (void *, unsigned nt);   /* scan for base stations */
 };
 
-void netifinit(struct netif *, char *, int, uint32_t);
-struct walkqid *netifwalk(struct netif *, struct chan *, struct chan *, char **,
+void netifinit(struct ether *, char *, int, uint32_t);
+struct walkqid *netifwalk(struct ether *, struct chan *, struct chan *,
+                         char **,
                                                  int);
-struct chan *netifopen(struct netif *, struct chan *, int);
-void netifclose(struct netif *, struct chan *);
-long netifread(struct netif *, struct chan *, void *, long, uint32_t);
-struct block *netifbread(struct netif *, struct chan *, long, uint32_t);
-long netifwrite(struct netif *, struct chan *, void *, long);
-int netifwstat(struct netif *, struct chan *, uint8_t *, int);
-int netifstat(struct netif *, struct chan *, uint8_t *, int);
-int activemulti(struct netif *, uint8_t *, int);
+struct chan *netifopen(struct ether *, struct chan *, int);
+void netifclose(struct ether *, struct chan *);
+long netifread(struct ether *, struct chan *, void *, long, uint32_t);
+struct block *netifbread(struct ether *, struct chan *, long, uint32_t);
+long netifwrite(struct ether *, struct chan *, void *, long);
+int netifwstat(struct ether *, struct chan *, uint8_t *, int);
+int netifstat(struct ether *, struct chan *, uint8_t *, int);
+int activemulti(struct ether *, uint8_t *, int);
 
 /*
  *  Ethernet specific
@@ -1002,7 +1006,7 @@ int activemulti(struct netif *, uint8_t *, int);
 enum {
        Eaddrlen = 6,
        ETHERMINTU = 60,        /* minimum transmit size */
-       ETHERMAXTU = 1514,      /* maximum transmit size */
+       ETHERMAXTU = 1500,      /* maximum transmit size */
        ETHERHDRSIZE = 14,      /* size of an ethernet header */
 };
 
@@ -1050,8 +1054,7 @@ struct ether {
        int nvlan;
        struct ether *vlans[MaxFID];
 
-       /* another case where we wish we had anon struct members. */
-       struct netif netif;
+       struct netif;
 };
 
 extern struct block *etheriq(struct ether *, struct block *, int);