I'd like to make an additional small update to this case: it was
recently suggested that the m_margin flag be part of the committed GLDv3
interfaces to improve source-level compatibility between S10 and Nevada.
The changes to the spec are straightforward. I have included the diffs
below, and attached a new version of the mac_register(9S) man page
draft. I'd prefer if this case could be updated to reflect these
changes, instead of filing a separate case.
Thanks,
Nicolas.
*** mac_register-9s.txt.org 2010-04-19 15:14:53.506964153 -0700
--- mac_register-9s.txt 2010-04-19 15:23:35.382018489 -0700
***************
*** 34,39 ****
--- 34,40 ----
void *m_pdata;
size_t m_pdata_size;
mac_priv_prop_t *m_priv_props;
+ uint32_t m_margin;
The following fields of mac_register_t must be set by the device
driver before invoking the mac_register(9F) entry point:
***************
*** 81,86 ****
--- 82,97 ----
m_priv_props Array of Driver-private properties names,
terminated by a NULL pointer.
+ m_margin Drivers set this value to the amount
+ of data in bytes that the device can
+ transmit beyond m_max_sdu. For
+ example, if an Ethernet device can
+ handle packets whose payload section
+ is no greater than 1522 bytes and
+ m_max_sdu is set to 1500 (as
+ is typical for Ethernet), then
+ m_margin is set to 22.
+
DESCRIPTION
See mac_register(9F) for more details on the use of these
--
Nicolas Droux - Solaris Core OS Engineering - Oracle
[email protected] - (650) 786-7722
17 Network Circle, Menlo Park, CA 94025
Data Structures for Drivers mac_register(9S)
NAME
mac_register - MAC device driver registration data structure
SYNOPSIS
#include <sys/mac_provider.h>
#include <sys/mac_ether.h>
INTERFACE LEVEL
Solaris architecture specific (Solaris DDI).
DESCRIPTION
The mac_register data structure is passed by device drivers
to the MAC layer when registering using mac_register(9F).
STRUCTURE MEMBERS
uint_t m_version; /* set by framework */
const char *m_type_ident;
void *m_driver;
dev_info_t *m_dip;
uint_t m_instance;
uint8_t *m_src_addr;
uint8_t *m_dst_addr;
mac_callbacks_t *m_callbacks;
uint_t m_min_sdu;
uint_t m_max_sdu;
void *m_pdata;
size_t m_pdata_size;
mac_priv_prop_t *m_priv_props;
uint32_t m_margin;
The following fields of mac_register_t must be set by the device
driver before invoking the mac_register(9F) entry point:
m_version Set by mac_alloc(9F), device drivers should
not modify that field.
m_type_ident Must be set to one of the following depending
on the type of device being registered.
MAC_PLUGIN_IDENT_ETHER Ethernet driver
m_driver Driver handle, opaque to the framework, usually
points to a per-driver instance data structure.
Passed back as argument to driver's entry points
invoked by the framework.
m_dip Pointer to the driver instance dev_info structure,
see attach(9E).
m_instance Used by the driver to specify the instance number
to be associated with the MAC being registered.
This value should always specified by zero.
m_src_addr Pointer to the primary MAC address value of the
MAC instance.
m_dst_addr Pointer to the destination MAC address value of
a fixed destination MAC address. This field is
optional and should be set to NULL for regular
device drivers.
m_min_sdu Minimum Service Data Unit size, the minimum
packet size, not including the MAC header,
that the device can transmit. This can be zero
if the device driver can handle any required
padding.
m_max_sdu Maximum Service Data Unit size, the maximum
packet size, not including the MAC header,
that can be transmitted by the device. For
Ethernet, this number is commonly refered
to as the MTU (maximum transmission unit.)
m_priv_props Array of Driver-private properties names,
terminated by a NULL pointer.
m_margin Drivers set this value to the amount
of data in bytes that the device can
transmit beyond m_max_sdu. For
example, if an Ethernet device can
handle packets whose payload section
is no greater than 1522 bytes and
m_max_sdu is set to 1500 (as
is typical for Ethernet), then
m_margin is set to 22.
DESCRIPTION
See mac_register(9F) for more details on the use of these
various fields.
Note that the driver is responsible for allocating the memory
pointed to by the fields m_priv_props, m_src_addr, and
m_dst_addr. The driver can free this memory if it wishes after
the call to mac_register(9F) returns.
ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Availability | SUNWhea |
|_____________________________|_____________________________|
| Interface Stability | Committed |
|_____________________________|_____________________________|
SEE ALSO
mac_register(9F), attributes(5)
_______________________________________________
opensolaris-arc mailing list
[email protected]