Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 6089
b: refs/heads/master
c: 0b1f7eb
h: refs/heads/master
i:
  6087: ba6d43a
v: v3
  • Loading branch information
raghavendra.koushik@neterion.com authored and Jeff Garzik committed Aug 11, 2005
1 parent 817b5c7 commit ffd1b7b
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 13 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: a371a07de9bce837ea4e84569a2b390a42e360ef
refs/heads/master: 0b1f7ebe455ba4f1f46e7024150eeddbbf08addc
46 changes: 34 additions & 12 deletions trunk/drivers/net/s2io.c
Original file line number Diff line number Diff line change
Expand Up @@ -365,10 +365,9 @@ static int init_shared_mem(struct s2io_nic *nic)
size += config->tx_cfg[i].fifo_len;
}
if (size > MAX_AVAILABLE_TXDS) {
DBG_PRINT(ERR_DBG, "%s: Total number of Tx FIFOs ",
dev->name);
DBG_PRINT(ERR_DBG, "exceeds the maximum value ");
DBG_PRINT(ERR_DBG, "that can be used\n");
DBG_PRINT(ERR_DBG, "%s: Requested TxDs too high, ",
__FUNCTION__);
DBG_PRINT(ERR_DBG, "Requested: %d, max supported: 8192\n", size);
return FAILURE;
}

Expand Down Expand Up @@ -611,8 +610,9 @@ static void free_shared_mem(struct s2io_nic *nic)
lst_per_page);
for (j = 0; j < page_num; j++) {
int mem_blks = (j * lst_per_page);
if (!mac_control->fifos[i].list_info[mem_blks].
list_virt_addr)
if ((!mac_control->fifos[i].list_info) ||
(!mac_control->fifos[i].list_info[mem_blks].
list_virt_addr))
break;
pci_free_consistent(nic->pdev, PAGE_SIZE,
mac_control->fifos[i].
Expand Down Expand Up @@ -2594,6 +2594,8 @@ static void tx_intr_handler(fifo_info_t *fifo_data)
for (j = 0; j < frg_cnt; j++, txdlp++) {
skb_frag_t *frag =
&skb_shinfo(skb)->frags[j];
if (!txdlp->Buffer_Pointer)
break;
pci_unmap_page(nic->pdev,
(dma_addr_t)
txdlp->
Expand Down Expand Up @@ -2744,6 +2746,10 @@ void s2io_reset(nic_t * sp)
u64 val64;
u16 subid, pci_cmd;

/* Back up the PCI-X CMD reg, dont want to lose MMRBC, OST settings */
if (sp->device_type == XFRAME_I_DEVICE)
pci_read_config_word(sp->pdev, PCIX_COMMAND_REGISTER, &(pci_cmd));

val64 = SW_RESET_ALL;
writeq(val64, &bar0->sw_reset);

Expand All @@ -2762,8 +2768,10 @@ void s2io_reset(nic_t * sp)
msleep(250);

if (!(sp->device_type & XFRAME_II_DEVICE)) {
/* Restore the PCI state saved during initializarion. */
/* Restore the PCI state saved during initializarion. */
pci_restore_state(sp->pdev);
pci_write_config_word(sp->pdev, PCIX_COMMAND_REGISTER,
pci_cmd);
} else {
pci_set_master(sp->pdev);
}
Expand Down Expand Up @@ -2974,7 +2982,7 @@ int s2io_open(struct net_device *dev)
* Nic is initialized
*/
netif_carrier_off(dev);
sp->last_link_state = LINK_DOWN;
sp->last_link_state = 0;

/* Initialize H/W and enable interrupts */
if (s2io_card_up(sp)) {
Expand Down Expand Up @@ -3102,6 +3110,15 @@ int s2io_xmit(struct sk_buff *skb, struct net_device *dev)
spin_unlock_irqrestore(&sp->tx_lock, flags);
return 0;
}

/* A buffer with no data will be dropped */
if (!skb->len) {
DBG_PRINT(TX_DBG, "%s:Buffer has no data..\n", dev->name);
dev_kfree_skb(skb);
spin_unlock_irqrestore(&sp->tx_lock, flags);
return 0;
}

#ifdef NETIF_F_TSO
mss = skb_shinfo(skb)->tso_size;
if (mss) {
Expand Down Expand Up @@ -3136,6 +3153,9 @@ int s2io_xmit(struct sk_buff *skb, struct net_device *dev)
/* For fragmented SKB. */
for (i = 0; i < frg_cnt; i++) {
skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
/* A '0' length fragment will be ignored */
if (!frag->size)
continue;
txdp++;
txdp->Buffer_Pointer = (u64) pci_map_page
(sp->pdev, frag->page, frag->page_offset,
Expand Down Expand Up @@ -5257,7 +5277,8 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre)
config = &sp->config;

/* Tx side parameters. */
tx_fifo_len[0] = DEFAULT_FIFO_LEN; /* Default value. */
if (tx_fifo_len[0] == 0)
tx_fifo_len[0] = DEFAULT_FIFO_LEN; /* Default value. */
config->tx_fifo_num = tx_fifo_num;
for (i = 0; i < MAX_TX_FIFOS; i++) {
config->tx_cfg[i].fifo_len = tx_fifo_len[i];
Expand All @@ -5280,7 +5301,8 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre)
config->max_txds = MAX_SKB_FRAGS;

/* Rx side parameters. */
rx_ring_sz[0] = SMALL_BLK_CNT; /* Default value. */
if (rx_ring_sz[0] == 0)
rx_ring_sz[0] = SMALL_BLK_CNT; /* Default value. */
config->rx_ring_num = rx_ring_num;
for (i = 0; i < MAX_RX_RINGS; i++) {
config->rx_cfg[i].num_rxd = rx_ring_sz[i] *
Expand Down Expand Up @@ -5310,7 +5332,7 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre)
/* initialize the shared memory used by the NIC and the host */
if (init_shared_mem(sp)) {
DBG_PRINT(ERR_DBG, "%s: Memory allocation failed\n",
dev->name);
__FUNCTION__);
ret = -ENOMEM;
goto mem_alloc_failed;
}
Expand Down Expand Up @@ -5488,7 +5510,7 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre)
sp->def_mac_addr[0].mac_addr[3],
sp->def_mac_addr[0].mac_addr[4],
sp->def_mac_addr[0].mac_addr[5]);
int mode = s2io_print_pci_mode(sp);
mode = s2io_print_pci_mode(sp);
if (mode < 0) {
DBG_PRINT(ERR_DBG, " Unsupported PCI bus mode ");
ret = -EBADSLT;
Expand Down

0 comments on commit ffd1b7b

Please sign in to comment.