I am observing a link toggle when multicast filters are added/removed to the fxp(i82557) driver. My application is using SIOCADDMULTI/SIOCDELMULTI ioctl's for adding/removing multicast filters. On debugging the issue, figured out that fxp_init is called after filters are changed which in turn invokes fxp_stop. In case of MII, fxp_stop invokes function mii_down which brings down the phy and a toggle is observed. Is there any way to avoid the phy from going down and for what reasons mii_down is invoked? Probably the code is doing a larger reset than needed. It's certainly reasonable to read the data sheet for the chip and see if you think there's a way to to less, code up a patch (well commented!), test it, and send it to the list. It seems likely that filter programming doesn't really need the full-blown init processing.
Attachment:
pgpqSucBEbORM.pgp
Description: PGP signature