Project

General

Profile

Feature #178 » 82573l-jumbo.diff

Draft patch with open items regarding the correct size - Andreas Kohn, 2010-09-09 09:43 AM

View differences:

usr/src/uts/common/io/e1000g/e1000g_main.c
860 860
static void
861 861
e1000g_setup_max_mtu(struct e1000g *Adapter)
862 862
{
863
	struct e1000_mac_info *mac = &Adapter->shared.mac;
864
	struct e1000_phy_info *phy = &Adapter->shared.phy;
863
	struct e1000_hw *hw = &Adapter->shared;
864
	struct e1000_mac_info *mac = &hw->mac;
865
	struct e1000_phy_info *phy = &hw->phy;
865 866

  
866 867
	switch (mac->type) {
867 868
	/* types that do not support jumbo frames */
868 869
	case e1000_ich8lan:
869
	case e1000_82573:
870 870
	case e1000_82583:
871 871
		Adapter->max_mtu = ETHERMTU;
872 872
		break;
873
	/* 82573L supports jumbo frames, if ASPM is disabled (0x1A[3:2] set to 00b),
874
	 * and ERT is disabled (XXX: no docs found how to do that).
875
	 * 82573E/V do not support jumbo frames.
876
	 * see also errata 17.
877
	 * XXX: assuming here that MAXIMUM_MTU_9K is ok, although the value looks
878
	 *      different (docs say 9014/9234, constant is 9216)
879
	 */
880
	case e1000_82573:
881
		if (hw->device_id == E1000_DEV_ID_82573L)
882
			Adapter->max_mtu = MAXIMUM_MTU_9K;
883
		else
884
			Adapter->max_mtu = ETHERMTU;
885
		break;
873 886
	/* ich9 supports jumbo frames except on one phy type */
874 887
	case e1000_ich9lan:
875 888
		if (phy->type == e1000_phy_ife)
usr/src/uts/common/io/e1000g/e1000g_sw.h
270 270

  
271 271
#define	DEFAULT_MTU		ETHERMTU
272 272
#define	MAXIMUM_MTU_4K		4096
273
/* XXX:
274
 * "PCIe* GbE Controllers Open Source Software Developer’s Manual"
275
 * for 631xESB/632xESB, 82563EB/82564EB, 82571EB/82572EI & 82573E/82573V/82573L
276
 * says that the mtu is "Ethernet controllers support
277
 * jumbo packet reception of up to 9014 bytes (9234 byes[sic!] for the 
278
 * 82571EB/82572EI/631xESB/632xESB)."
279
 */
273 280
#define	MAXIMUM_MTU_9K		9216
274 281

  
275 282
#define	DEFAULT_FRAME_SIZE	\
    (1-1/1)