1. 08 Nov, 2004 12 commits
    • Raghavendra Koushik's avatar
      [PATCH] S2io: styling · cec9f92e
      Raghavendra Koushik authored
      Attached is the patch to implement comments about styling
      and few other changes.
      Following is list of changes.
      1. Incorporated Randy's comment about C99 format for s2io_driver
         structure initialization.
      2. Driver version displayed at load time.
      3. If initialization failed in s2io_init_nic(), appropriate error
         codes are returned.
      4. #ifdef SET_ETHTOOL_OPS removed in couple of places.
      Signed-off-by: default avatarRaghavendra Koushik <raghavendra.koushik@s2io.com>
      Signed-off-by: default avatarRavinandan Arakali <ravinandan.arakali@s2io.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@pobox.com>
      cec9f92e
    • Raghavendra Koushik's avatar
      [PATCH] S2io: modified loadable parameters · ee355539
      Raghavendra Koushik authored
      Attached is the patch to implement module loadable parameters as per new API.
      Following is the list of changes.
      
      1. Used new module_param() API.
      2. List of variables for tx_fifo_len and rx_ring_sz replaced with array.
      3. Some of the module parameters which can be set thru setpci command have
         been removed, such as latency_timer, max_read_byte_cnt, max_split_transactions.
      4. Other parameters which were felt to be not required, such as rx_prio,
         tx_prio have been removed.
      5. Interrupt moderation parameters(such as tx_urange_*) are no longer module
         loadable parameters since they can be configured thru' a separate patch
         available to customers.
      6. Changed default max_read_byte_count to 1024.
      7. If scatter-gather is enabled, checksum is enabled too.
      8. Not verifying if module loadable parameters are within valid range
         (verify_load_param() removed).
      Signed-off-by: default avatarRaghavendra Koushik <raghavendra.koushik@s2io.com>
      Signed-off-by: default avatarRavinandan Arakali <ravinandan.arakali@s2io.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@pobox.com>
      ee355539
    • Raghavendra Koushik's avatar
      [PATCH] S2io: 2 buffer mode with copy · e4d7588c
      Raghavendra Koushik authored
      This patch addresses the comments by Chris Leech about
      skb->mac.ethernet resulting in NULL dereference with the old method
      of implementing 2 buffer mode. The new method performs a copy of the
      MAC header to the head of the payload. This is a stop-gap measure till
      the fragmented skb receive feature in the kernel is made functional.
      
      Also, using GFP_KERNEL flag for buffer0, buffer1 memory allocation
      instead of GFP_ATOMIC.
      Signed-off-by: default avatarRaghavendra Koushik <raghavendra.koushik@s2io.com>
      Signed-off-by: default avatarRavinandan Arakali <ravinandan.arakali@s2io.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@pobox.com>
      e4d7588c
    • Raghavendra Koushik's avatar
      [PATCH] S2io: new functions for card restart · d5cb9d5b
      Raghavendra Koushik authored
      The attached patch incorporates Jeff's comments related to creating
      separate functions for restarting the NIC(without using close and
      open entry points) and few other comments. Complete list of changes
      are as follows:
      
      1. Two new functions s2io_card_down() and s2io_card_up() are defined
      and are called during reset procedure instead of close and open
      routines.
      2. tasklet_status field is now made as unsigned long.
      3. On getting serious error, queue is stopped before resetting the card.
      4. Removed the check for "queue stopped" in xmit routine.
      Signed-off-by: default avatarRaghavendra Koushik <raghavendra.koushik@s2io.com>
      Signed-off-by: default avatarRavinandan Arakali <ravinandan.arakali@s2io.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@pobox.com>
      d5cb9d5b
    • Raghavendra Koushik's avatar
      [PATCH] S2io: two buffer mode · 7deee781
      Raghavendra Koushik authored
      Attached is the patch for implementing 2-buffer mode on Rx path.
      
      On certain systems when a DMA has to happen on an un-aligned memory
      location performance will take a significant hit. It's standard
      practice to offset the Rx buffer address by 2 (as Mac header is 14
      bytes) so the IP header starts from an aligned location.  Obviously
      using a single Rx buffer both cannot be achieved. Thus XFrame supports
      something called 2 buffer Rx mode, where in the Rx'ed frame is split
      into 2 parts, one is the Ethernet header and the other is the Ethernet
      payload. So now we can allocate proper aligned memory for both buffers,
      hence the DMA is not slowed down. Also, the Ethernet payload(starting
      from L3 header) is on an aligned location so OS need not have to do
      un-aligned accesses to process IP header. To achieve this, the kernel
      function eth_type_trans functionality has to be partially implemented
      in the driver itself.
      Signed-off-by: default avatarRaghavendra Koushik <raghavendra.koushik@s2io.com>
      Signed-off-by: default avatarRavinandan Arakali <ravinandan.arakali@s2io.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@pobox.com>
      7deee781
    • Raghavendra Koushik's avatar
      [PATCH] S2io: NAPI fix · a5ebf123
      Raghavendra Koushik authored
      1. When processing Rx packets, making sure that get offset of ring
      does not cross the put offset.
      
      2. when NAPI is not in use a new spinlock(put_lock) is used to make
      sure accessing put offset of ring is atomic.
      
      3. Also introduced a new vaiable put_pos in nic_t to keep track of
      absolute position of the put pointer of Rx ring.
      
      4. When NAPI is used, fill_rx_buffer is not called from the interrupt
      handler(s2io_isr) .
      
      5. In s2io_poll, decrementing packets processed is done inside the
      while loop unlike out side it as was being done last time.
      Signed-off-by: default avatarRaghavendra Koushik <raghavendra.koushik@s2io.com>
      Signed-off-by: default avatarRavinandan Arakali <ravinandan.arakali@s2io.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@pobox.com>
      a5ebf123
    • Raghavendra Koushik's avatar
      [PATCH] S2io: new txd allocation · 1215e2cf
      Raghavendra Koushik authored
      The attached patch contains a modified scheme for allocating Tx descriptor
      blocks.
      More description follows.
      
      In the old scheme, the entire Tx descriptor space was allocated in
      one go. This could cause driver load to fail on systems with low(or
      scattered) memory. The Tx descriptor blocks are now allocated on
      per-page basis. A new structure (list_info) has been introduced in
      nic_t structure to keep track of the physical and virtual addresses
      of every TxD allocated this way.
      Signed-off-by: default avatarRaghavendra Koushik <raghavendra.koushik@s2io.com>
      Signed-off-by: default avatarRavinandan Arakali <ravinandan.arakali@s2io.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@pobox.com>
      1215e2cf
    • Raghavendra Koushik's avatar
      [PATCH] S2io: module loadable parameters · eca3ee40
      Raghavendra Koushik authored
      1. Max Txds per List.
      
      2. statistics refresh time
      
      3. pause frame control parameters including gap between two successive
      frames, threshold watermarks
      
      4. RTI and TTI configuration parameters including ranges, packet
      counts and timeout periods.  For further information please read the
      section 3.5 of XFrame H/W spec.
      
      5. PCI/PCI-X configuration variables latency_timer, MMRBC and OST.
      
      6. OS offload features TSO (If support available) and checksum offload.
      
      7. If NAPI is not in use, a variable indicate_max_pkts can be used
      to limit number of Rx side packets processed for one call to Rx
      Intr handler.
      Signed-off-by: default avatarRaghavendra Koushik <raghavendra.koushik@s2io.com>
      Signed-off-by: default avatarRavinandan Arakali <ravinandan.arakali@s2io.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@pobox.com>
      eca3ee40
    • Raghavendra Koushik's avatar
      [PATCH] S2io: hardware fixes · 3fbc24f1
      Raghavendra Koushik authored
      1. Xena3's with a set of subsystem IDs had Link LED problems, fixed
      that specifically for them.
      
      2. To write into the Keyed Mac_Cfg register to enable broadcast,
      writing two 32 bit writes into it along with a write to the key
      register rather than a single write to key and a 64 bit write to
      mac_cfg. This is necessary on 32 bit systems where a writeq(64 bit
      write) is actually two writel (32 bit writes).
      
      3. Writes to some special registers mentioned in UG is being done by
      a special macro which defines which 32 bits of the 64 bit register
      is to be written first. Again this applies only on 32 bit systems.
      
      4. Configured pause frame related water marks and a shared_split
      value which describes the Max TXDMA related split transaction that
      can be used without giving room for the Rx transactions.
      
      5. The mac_rmac_err_reg R1 register will be cleared in  the interrupt
      handler itself rather than in the scheduled task as was being done
      previously.
      
      6. Even on PCC_FB_ECC error the card will be reset by disabling
      adapter enable bit.
      Signed-off-by: default avatarRaghavendra Koushik <raghavendra.koushik@s2io.com>
      Signed-off-by: default avatarRavinandan Arakali <ravinandan.arakali@s2io.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@pobox.com>
      3fbc24f1
    • Raghavendra Koushik's avatar
      [PATCH] S2io: optimizations · b3ea38cb
      Raghavendra Koushik authored
      1. Definitions of LOW and PANIC levels of the Rx buffers have changed.
      
      2. In wait_for_cmd_complete there is no longer a writeq but just a
      read and wait for strobe bit to reset.
      
      3. In s2io_isr, the isr_lock has been done away with also the NICs
      interrupt are no longer disabled explicitly on entering the interrupt
      handler and re-enabled again before leaving it.
      
      4. Also clearing the semaphore "tasklet_status" when exiting
      erroneously from s2io_isr after failing fill_rx_buffer call.
      
      5. The set/reset Tx Csum function through ethtool was added to the
      ethtool_ops structure.
      
      6. Added a Rx side error code in the rx_osm_handler function.
      
      7. No longer stopping and waking Tx queue when link state changes in
      s2io_link function.
      
      8. removed the isr_lock spinlock from the s2io_nic structure.
      
      9. changed parameters which determine thresholds(LOW and PANIC)
      to replenish Rx buffers.
         This has been found to result in better performance.
      Signed-off-by: default avatarRaghavendra Koushik <raghavendra.koushik@s2io.com>
      Signed-off-by: default avatarRavinandan Arakali <ravinandan.arakali@s2io.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@pobox.com>
      b3ea38cb
    • Raghavendra Koushik's avatar
      [PATCH] S2io: sw bug fixes · 10a7bfef
      Raghavendra Koushik authored
      1. In free_rx_buffers clearing out RxDs not owned by Xena.
      
      2. In alarm_intr_handler, when a serr error occurs, schedule a task
      to reset the card rather than stopping Tx queue.
      
      3. In s2io_close freeing IRQ before calling s2io_reset also added a
      new call to flush queued tasks. This is not done if the s2io_close
      itself is called from a queued task like s2io_restart_nic.
      
      4. read_eeprom function has been changed such that data to be returned
      is sent as an input argument and the return value represents a
      pass/fail. The previous implementation as Randy had pointed out was
      error prone as on failure it returned -1 which can be interpreted
      as all ff's, so any data area which contained ff's in the eeprom was
      likely to be treated as an error.
      
      5. Added a flag "task_flag" to track if the call to s2io_close is
      coming from the s2io_restart_nic function or from the ifconfig <I/F>
      down called by user.
      
      6. Moved register_netdev call from just after setting entry points
      to the end of the s2io_init_nic function.
      
      7. In s2io.h field added a new member into the s2io_nic structure
      called "task_flag".
      Signed-off-by: default avatarRaghavendra Koushik <raghavendra.koushik@s2io.com>
      Signed-off-by: default avatarRavinandan Arakali <ravinandan.arakali@s2io.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@pobox.com>
      10a7bfef
    • Raghavendra Koushik's avatar
      [PATCH] S2io: cosmetic changes · 1dbd0fcf
      Raghavendra Koushik authored
      1. Indentation, change in comment styles, variable name changes etc.
      2. Changed the value written to dtx_control register to force XGXS reset.
      3. weight parameter(NAPI) changed to 90 for better performance.
      Signed-off-by: default avatarRaghavendra Koushik <raghavendra.koushik@s2io.com>
      Signed-off-by: default avatarRavinandan Arakali <ravinandan.arakali@s2io.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@pobox.com>
      1dbd0fcf
  2. 12 Sep, 2004 26 commits
  3. 11 Sep, 2004 2 commits