aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/sky2.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
index 3bfc9d3e3c6e..162489b9f599 100644
--- a/drivers/net/sky2.c
+++ b/drivers/net/sky2.c
@@ -910,6 +910,20 @@ static inline struct sky2_tx_le *get_tx_le(struct sky2_port *sky2)
910 return le; 910 return le;
911} 911}
912 912
913static void tx_init(struct sky2_port *sky2)
914{
915 struct sky2_tx_le *le;
916
917 sky2->tx_prod = sky2->tx_cons = 0;
918 sky2->tx_tcpsum = 0;
919 sky2->tx_last_mss = 0;
920
921 le = get_tx_le(sky2);
922 le->addr = 0;
923 le->opcode = OP_ADDR64 | HW_OWNER;
924 sky2->tx_addr64 = 0;
925}
926
913static inline struct tx_ring_info *tx_le_re(struct sky2_port *sky2, 927static inline struct tx_ring_info *tx_le_re(struct sky2_port *sky2,
914 struct sky2_tx_le *le) 928 struct sky2_tx_le *le)
915{ 929{
@@ -1320,7 +1334,8 @@ static int sky2_up(struct net_device *dev)
1320 GFP_KERNEL); 1334 GFP_KERNEL);
1321 if (!sky2->tx_ring) 1335 if (!sky2->tx_ring)
1322 goto err_out; 1336 goto err_out;
1323 sky2->tx_prod = sky2->tx_cons = 0; 1337
1338 tx_init(sky2);
1324 1339
1325 sky2->rx_le = pci_alloc_consistent(hw->pdev, RX_LE_BYTES, 1340 sky2->rx_le = pci_alloc_consistent(hw->pdev, RX_LE_BYTES,
1326 &sky2->rx_le_map); 1341 &sky2->rx_le_map);