We have software that sits between the IP layer and the NIC
driver and processes incoming and outgoing packets. It worked
fine until the new Nemo interface with mac_rx() was implemented
in Solaris 10.
Now we want to be able configure/register our driver's receive function to be
the
only receive callback function that mac_rx() calls back from
the bge driver.
To this end some experimental code was created in our driver
to call mac_open("/dev/bge0",..) in order to get the mac handle
for bge. After which we could then do a mac_rx_remove() of
what's there and then a mac_rx_add() of our receive callback
function.
mac_open("/dev/bge0"...) is returning EINVAL. It was found that
the call to ddi_name_to_major() from mac_open() is returning "-1".
ddi_name_to_major() calls mod_name_to_major() which calls
find_mbind(). find_mbind() goes thru mb_hashtab[] looking for the
driver name of "/dev/bge" and doesn't find it.
Is our above objective doable? That is, using the mac_* API can
we register our receive callback function as the only callback
receive function for the bge driver?
Are we using the mac_* API correctly? Maybe we need to do more
than just a mac_open("/dev/bge0") and then mac_rx_add()? If we
are not using it correctly, what other API functions do we need
to call?
This message posted from opensolaris.org
_______________________________________________
networking-discuss mailing list
[email protected]